Войти
ПрограммированиеФорумГрафика

G-буфер и отложенное освещение (2 стр)

Страницы: 1 2 3 4 Следующая »
#15
23:12, 2 авг. 2018

Iron Man
> всё освещение одним шейдером после рендера G-буфера
Это как? Можешь пример привести?


#16
3:22, 3 авг. 2018

zombihello
Да я как-то и сам не представляю :) и вообще думаю, что не все участки будут освещены источниками света, так что солнечное освещение так и так проще пихнуть либо сразу в расчёт буферов альбедо и нормалей, либо сразу за ними отдельно прогнать.
А на счёт рендера источников света уже буду отдельно разбираться, я уже сам начал подозревать, что на счёт одного шейдера он явно какую-то глупость сказал )))
Вот такие советы здесь и дают, что в итоге всё равно нужно разбираться самому, но на счёт отдельного рендера G-буфера и освещения по идее правильная мысль, особенно, если будет считаться PBR.

#17
3:35, 3 авг. 2018

А как освещение считается для одного и того же участка экрана = прозрачный объект и объекты за ним?

#18
4:39, 3 авг. 2018

Iron Man, прозрачность рендерится отдельно как форвард рендер. Используешь в нем буфер глубины от g-buffer

Ты не понимаешь зачем нужен отложенный рендер. Писали же, что он не будет зависеть от геометрии сцены. То что ты хочешь рендерить сразу амбиент убивает саму концепцию. Пойми что, твои вычисления освещения от амбиента могут быть перекрыты сто раз повер объектами которые находятся ближе, и эта работа будет выполнена зря.  А если расчет освещения еще и тяжелый...

Iron Man
> Да я как-то и сам не представляю :)


В самом простом случае, рендеришь экранный прямоугольник (без теста глубины и отсечений), и уже во фрагментном шейдере считаешь свет.
По  факту у тебя есть всего 4 типа света, направленный, прожектор, точечный, и я бы сказал что без ibl никуда. + если, хочется сделай им тени.

#19
4:48, 3 авг. 2018

vindast
Ладно, буду разбираться.
Но как-то "не зависит от сложности сцены" я себе не представляю, значит нужно курить мануал по этой теме.

#20
5:10, 3 авг. 2018

Iron Man, я попробую объяснить.
У тебя есть куча объектов которые попадают на отрисовку. Часть этих объектов (или части этих объектов) будут перекрыты объектами, которые находятся ближе к камере, и таких перекрытий может быть очень много. Так вот, при форвард рендере  перекрытые части тоже будут раскрашены, и эта работа в трубу. А при отложенном рендере эта проблема решается при расчете освещения как постэффекта. При проходе сцены сохраняется только информация о цвете, нормали, материале и других типов данных нужных тебе. (типы данных ты выбираешь сам). И по этим данным строится освещение как постэффект. Выигрыш будет тем значительнее, чем сложнее освещение, и чем больше источников света, и эта разница может быть астрономической.

#21
5:39, 3 авг. 2018

vindast
> У тебя есть куча объектов которые попадают на отрисовку. Часть этих объектов (или части этих объектов) будут перекрыты объектами, которые находятся ближе к камере, и таких перекрытий может быть очень много.
Это понятно, именно для этого первыми двумя так называемыми проходами и будут Frustum Culling и Occlusion Query. Для частичного перекрытия в принципе можно использовать буфер глубины после просчёта G-буфера.
Теперь мне нужно только разобраться, как правильно просчитывать освещение и как тут пересекаются с ним прозрачные объекты. В общем статью я сам для себя уже нашёл: http://steps3d.narod.ru/tutorials/ds-tutorial.html.

#22
5:44, 3 авг. 2018

> всё освещение одним шейдером после рендера G-буфера
>Это как? Можешь пример привести?

zombihello, просто передаем данные о всех источниках света в лайт пассе в шейдер. (тип, данные). Источники света хранятся или в массиве, или же в UBO/SBO
Сам же шейдер производит вызов определенной функции исходя из типа источника света

#23
6:49, 3 авг. 2018

Iron Man
>Это понятно, именно для этого первыми двумя так называемыми проходами и будут Frustum Culling и Occlusion Query.
Простите, но whaaaaaaaaat!?
Зачееееееем!?
1) Проход делаем EarlyZ - заполняем буфер глубины.* (Этот проход по желанию. Ибо профита почти не несет на Deferred рендере)
2) Рендерим всю геометрию и заполняем данные
3) Делаем лайт пасс, в 1 проход.

Прозрачку рисуем в отдельном MRT, или же в основном и делаем Blit

FC, должен еще делаться на этапе отправки на рендеринг.
По OQ, у тебя результат придет только на втором-третьем кадре(если хардварный), имеет смысл делать с очень простым шейдером или же software/gpu версию.

#24
8:00, 3 авг. 2018

NickGastovski
> FC, должен еще делаться на этапе отправки на рендеринг.
Это я и имел в виду, только не так выразился.
Рендер глубины проще делать сразу при рендере геометрии.
Ну а с Occlusion Query я ещё не разбирался, так что приходится вникать в суть отложенного рендера.

#25
8:04, 3 авг. 2018

>Occlusion Query я ещё не разбирался
Он никак не отличается, что для форварда, что для деферреда

#26
8:17, 3 авг. 2018

Кстати! Первым у меня рендерится Select (Color) Buffer, с ним же соответственно рендерится и буфер глубины, в котором учитываются и прозрачные объекты.
Его как-то можно использовать в своих целях???

#27
9:15, 3 авг. 2018

Iron Man,
можешь использовать при реализации ssao, или же тупо копировать его для форварда в основной MRT

#28
9:42, 3 авг. 2018

NickGastovski
Вроде понятно, и ещё вопрос вдогонку: если я буду прикручивать карты AO, куда мне их пихать = в каком пассе обсчитывать и как добавлять в общую кашу?

#29
13:21, 3 авг. 2018

Я вот одну вещь понять не могу: выведу я G-буфер без прозрачных объектов, без них же просчитаю освещение.
Потом я выведу прозрачные объекты в обратном Z-порядке... а как мне дня них считать освещение = сразу в пассе, который их выводит?

Страницы: 1 2 3 4 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.