GLSL освещение
Привет всем. Немогу нигде найти решения, может знатоки подскажут.
Есть три типа освещения, направленный, точечный и прожектор. Так вот, как это все запилить в одном шейдере? Как это делают? Я что-то не нашел... Не делать же if (light_type[i] == 0) {} else if ..... Кто нибудь поможет? |
Ответ: GLSL освещение
А сколько лайтов-то, один?
Чем 3 разных шейдера не угодили? Цитата:
ну, в общем, вариантов очень много, и тут всегда есть над чем подумать. идеального решения нет. можно иметь несколько вариаций шейдера с разными комбинациями. можно их руками написать, можно составлять из кусков кода автоматически. если максимальное число лайтов мало, можно юзать #ifdef, если не очень мало, то генерация шейдеров становится уже целой отдельной большой задачей. свои изыскания в этой области описывал тут: http://ndotl.wordpress.com/2014/10/1...shader-system/ можно делать деферед - тогда всё намного проще в этом плане. |
Ответ: GLSL освещение
Вобщем за проход нужно обработать все 3 варианта. Тоесть на сцене есть 3 источника трех типов. На данном этапе, как раз таки убер шейдер, но тут он не спасает.
PS. Это я тут собрался GLES3 прикрутить, да по нормальному,с качественной картинкой |
Ответ: GLSL освещение
Вложений: 1
Еще со спекуляром херня какая-то, вообще не понимаю почему так.
Кто нибудь может объяснить, что за полоску он мне ривует. Источник в левом дальнем углу PHP код:
|
Ответ: GLSL освещение
Цитата:
|
Ответ: GLSL освещение
похоже на косяки с tbn
|
Ответ: GLSL освещение
Цитата:
(знак может быть в другую сторону) |
Ответ: GLSL освещение
Вложений: 1
Приогромнейшее спасибо )). Как я сам не догадался. Сталкивался когда-то уже.
vec3 v = normalize(_camera_position_ - position); |
Ответ: GLSL освещение
Ребят. Кто подскажет? Использую отложенное освещение. Нужно заюзать emissive материала, как правильно это делают?
|
Ответ: GLSL освещение
Я бы emissive цвет запёк в альбедо г-буфера, дальше тогда остаётся единичное значение (силу свечения) где-то держать. Хватило бы одноканальной 8-бит текстуры, но в идеале бы ещё куда-нибудь впихнуть. Какая у тебя сейчас раскладка г-буфера?
|
Ответ: GLSL освещение
position.xyz,depth
normal.xyz,0 diffuse.xyz,0 два свободных канала |
Ответ: GLSL освещение
Цитата:
достаточно одной глубины, позиция из неё и данных о камере восстанавливается. Цитата:
Цитата:
|
Ответ: GLSL освещение
GL_GLOAT, насчет позиций я где-то видел как получают из глубины
|
Ответ: GLSL освещение
например так ( кусок из моего движка, в подписи есть ссылка на гитхаб, там можешь поглядеть на деферед с оптимизациями )
Код:
" float depth = tex2D( depthSampler, texcoord ).r;\n" |
Ответ: GLSL освещение
Цитата:
|
Часовой пояс GMT +4, время: 12:25. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot