35 / 35 / 26
Регистрация: 27.05.2012
Сообщений: 204
|
|||||||||||
1 | |||||||||||
Динамическое создание материалов22.07.2015, 09:22. Показов 625. Ответов 6
Метки нет (Все метки)
Всем привет. Не буду томить...
Есть функция создающая материал: Входные данные:
Также эта функция возвращает имя материала. Элемент имеет доступ к материалу. При создании шейдерной программы, все использовавшиеся функции( исключая повторяющиеся) всех материалов помещаются в код шейдера. Мне не понятно, как составить итоговый цвет. То есть, как программа должна понять, что за материал использует элемент? Пример вершинного шейдера:
0
|
22.07.2015, 09:22 | |
Ответы с готовыми решениями:
6
Вредоносное создание материалов Создание материалов - не включается редактор динамическое создание Динамическое создание формы |
657 / 238 / 46
Регистрация: 24.01.2013
Сообщений: 727
|
|
22.07.2015, 10:05 | 2 |
0
|
35 / 35 / 26
Регистрация: 27.05.2012
Сообщений: 204
|
|
22.07.2015, 10:10 [ТС] | 3 |
_Develop, Вопрос заключается не в правильности создания освещения, а в создании алгоритма создания динамического материала(динамически создаваемого)
0
|
657 / 238 / 46
Регистрация: 24.01.2013
Сообщений: 727
|
|
22.07.2015, 10:33 | 4 |
Ты сначала определись с понятием материала. Если это только другой цвет амбиент/диффузе/спекуляр или другая текстура то это будет один шейдер с параметрами. А если различается допустим техника освещения, например Фонг или там Кук-Торренс, то это уже два шейдера. Нужный программа должна забиндить перед отрисовкой по информации из материала. Хотя можешь все пихать в один большой шейдер и передавать юниформ для выбора техники, но это будет полная жесть, как по производительности так и по легкости восприятия кода шейдера.
0
|
35 / 35 / 26
Регистрация: 27.05.2012
Сообщений: 204
|
|
22.07.2015, 10:45 [ТС] | 5 |
_Develop, Вот например- есть 10 объектов, у каждого абсолютно разные материалы( например как в Blender-cycles). При отрисовке я должен использовать шейдер этого материала, и получается, мне нужно создовать отдельную шейдерную программу?
0
|
657 / 238 / 46
Регистрация: 24.01.2013
Сообщений: 727
|
|
22.07.2015, 11:03 | 6 |
OpenGL никого ни в чем не ограничивает, как сделает программист так и будет.
Есть два подхода, запихнуть все в один шейдер, тогда условие выбора техники нужно проверять в шейдере, и это условие будет проверяться для каждого пикселя всех объектов!!! Это ударит по скорости, потому что пикселей много. Во втором случае создаем несколько отдельных шейдеров и условие выбора техники проверяем в программе только один раз перед отрисовкой объекта. Есть разница, делать проверку тысячу раз или только один раз? Но тут тоже есть своя негативная сторона, если шейдеров слишком много их придется слишком часто переключать. Это тоже бьет по скорости отрисовки сцены. Еще есть фактор удобства программирования. Вообщем универсального решения здесь не существует.
1
|
22.07.2015, 15:16 | 7 |
В шейдер можно передавать различные параметры от простых значений, до дескрипторов текстур. Программа может быть одна, но с разными параметрами.
0
|
22.07.2015, 15:16 | |
22.07.2015, 15:16 | |
Помогаю со студенческими работами здесь
7
Динамическое создание компонентов Динамическое создание компонентов динамическое создание компонентов Динамическое создание элементов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |