Связь между шейдером и наложением UV-текстуры

Я использую OpenGL ES + GLKit. Я никогда в жизни не был на таком низком уровне, так что мне еще предстоит многому научиться. Я уже разрабатывал игры для Unity, и вы просто даете им файл .obj и соответствующую текстуру, и все готово. (УФ-отображение находится внутри файла .obj?)

Я хочу разработать своего рода специальный Toon Shader с некоторыми другими характеристиками для использования с 3D-моделью. Итак, мне нужно написать вершинный шейдер (.vsh) и фрагментный шейдер (.fsh), верно?

Однако я просто знаю, что для того, чтобы применить текстуру к модели с правильной координатой UV, вы должны сделать это в шейдере? (я прав?) С "Текстурным шейдером".

Итак, если я хочу применить текстуру с UV-наложением, затем применить мой специальный шейдер Toon, мне нужно написать оба в одном и том же шейдере? Я никак не могу создать шейдер Toon plug-and-play, чтобы использовать его с чем угодно?

В качестве побочного вопроса, какой формат файла является координатой UV и как я могу передать это в программу шейдера? Какая атрибутивная переменная?


person 5argon    schedule 25.10.2012    source источник


Ответы (1)


Итак, мне нужно написать вершинный шейдер (.vsh) и фрагментный шейдер (.fsh), верно?

да.

Однако я просто знаю, что для того, чтобы применить текстуру к модели с правильной координатой UV

Истинный

Я никак не могу создать шейдер Toon plug-and-play, чтобы использовать его с чем угодно?

Проверьте убер-шейдеры.

и как я могу использовать это в шейдерной программе? Какая атрибутивная переменная?

Вы сами определяете свои атрибуты в шейдере. Ознакомьтесь с этим руководством по GLSL.

person StiX    schedule 25.10.2012
comment
Разве вы не перечитываете свои опубликованные ответы, чтобы найти такие ужасные ошибки форматирования? Вы могли бы просто увидеть это краем глаза, даже ничего не читая. - person Christian Rau; 25.10.2012
comment
Следует отметить, что супершейдеры — ужасная идея в OpenGL ES из-за падения производительности из-за ветвления. Вместо этого вам действительно следует создавать отдельные шейдеры, которые соответствуют вашим конкретным условиям рендеринга (или выполнять сборку таких пользовательских шейдеров во время компиляции) и избегать любого рода ветвления. - person Brad Larson; 27.10.2012
comment
Uber-шейдеры можно делать с помощью определений, а не с помощью if (техника) - person StiX; 06.11.2012