Освещение - множество источников + бамп
Привет!
В сцене 50 точечных источников света, почти на всех поверхностях бамп, в кадре, к примеру, не более 10 источников. Помогите разобраться, какие технологии/шейдеры использовать для реализации подобного? Поковырял стандартные примеры, везде только с 1 источником света. |
Ответ: Освещение - множество источников + бамп
Писать свой deferred rendering, либо использовать forward rendering он стандартный- ограничения до 30 источников света.
|
Ответ: Освещение - множество источников + бамп
Спасибо,
Можно немного подробней про deferred rendering? Это возможно реализовать шейдором для xors3D ? Хотя и 30 вполне достаточно, forward rendering - это стандартные источники света в ксорсе ? |
Ответ: Освещение - множество источников + бамп
deferred rendering был в Движке года то, но видимо они накосячили сильно и отрубили его, до лучших времен. Шейдеры deferred renderinga лежат в Samples для Ксорса, поковыряй может что и получится. В forward rendering есть свои недостатки и производительность будет падать от количества источников света. Можно схитрить, где надо там показываем источник света где не надо скрываем либо перемещаем его туда куда нужно.
|
Ответ: Освещение - множество источников + бамп
Деферед = с помощью MRT рендерим за 1 вызов отрисовки объекты сразу в множество текстур - всего как минимум нам нужен цвет, нормали и позиция (можно хранить глубину и из неё восстановить позицию в шейдере). Далее постпроцессом всё это совмещается, т.е. освещение считается на полноэкранном кваде на основе инфы из отрендереных текстур и массива источников света.
Форвард = рендерим объекты с шейдерами, в которых сразу всё считаем. Почему деферед потенциально быстрее форварда = в дефереде мы считаем свет только на столько пикселей, сколько влезают в экран, в форварде объекты загораживают друг друга, и мы считаем шейдер куда чаще; вообще видюха не шейдит пиксели, если те не проходят Z тест, т.е. в случае рендера объектов от ближних к дальним, кол-во зашейденых пикселей может приблизится к дефереду, но не полностью, т.к. на каждом объекте сами по себе треугольники могут создавать overdraw. Если тебе нужно 10 источников света не на каждом объекте, а в сцене вообще - то форвард справится, просто суй только необходимые источники в шейдеры объектам. Насчёт ксорса - хз - выпилили деферед, но может не выпилили МРТ? Если МРТ на месте, то всё реализуемо, если не на месте, то забей. |
Ответ: Освещение - множество источников + бамп
Phyton
ага, т.е. подставлять источники света туда, где их видно в кадре ? но deferred rendering реализовать этими шейдерами возможно ? |
Ответ: Освещение - множество источников + бамп
Mr_F_, спасибо
Деферед меня заинтересовал больше, но кажется придется повозится :\ в поставке с движком есть DeferredMRT.fx |
Ответ: Освещение - множество источников + бамп
xSetDeferredShaders() и xInitDeferred() не работают. Вставил эти функции из старого xors3d.bb и xors3d.decls - тоже не хочет. MRT тоже никак, вырвали xEnableEntityShader
печаль беда :( |
Ответ: Освещение - множество источников + бамп
Цитата:
xSetMRT(buffer%, frame%, index%) xUnSetMRT() |
Ответ: Освещение - множество источников + бамп
не удалось разобраться.
а что там с попиксельным освещением ? |
Ответ: Освещение - множество источников + бамп
я кажется нашел то что мне нужно:
это шейдер за авторством MoKa, но у меня только шейдер, сорсов этой демки нету. Что передавать в шейдер (вообще их 2) так и не разобрался |
Ответ: Освещение - множество источников + бамп
В общем так Владислав, первое что тебе нужно сделать это читать учебник по шейдерам для Xors3D http://area.xors3d.com/depository/do...ps-ru/download , это раз.
По поводу освещения ты можешь сделать следующие, берешь стандартный шейдер и поставки Xors3D > ShaderPack > - Bump Light. Разберешь сам пример по полочкам. Далее открываем шейдер Bump Light.FX смотрим у нас есть переменные Код:
// Light Код:
// Light 1 Нам нужно добавить сюда второй источник света. Код:
float4 psPointDistance( in sp_PW_TBN_TC IN ) : COLOR { Код:
float4 psPointDistance( in sp_PW_TBN_TC IN ) : COLOR { пару скринов. |
Ответ: Освещение - множество источников + бамп
Спасибо большое за развернутый ответ! Обязательно буду разбираться.
Сколько таким образом источников света возможно отображать, в смысле какое количество будет не критично ? |
Ответ: Освещение - множество источников + бамп
Цитата:
|
Ответ: Освещение - множество источников + бамп
Игра закрытая (открытые локации если и будут, то с 1 глобальным источником)
Много коридоров, много автоматических дверей (участки карты за дверьми можно прятать, пока дверь закрыта, и снова показывать когда открыта) так что думаю на 1 комнату лампочек так 10 точно можно. Пока я слабо представляю как буду подставлять свет в необходимые места, это же придется все время в шейдер передавать новые значения. |
Часовой пояс GMT +4, время: 11:56. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot