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

G-Buffer (3 стр)

Страницы: 1 2 3 4 58 Следующая »
#30
10:55, 14 июня 2021

Спрошу возможно крамольную вещь, но как реализовать цикл по лайтам, если источники света с тенями, да еще и разного разрешения. И надо поддерживать платформы без массивов. И уж тем более биндлесов. Юнити говно, конечно, но этой говняности есть причины. Два пасса глубины (препасс и колорпасс) без реюза для early-Z и отключения альфа-клипа, потому что пользователи не осилят шейдеры. Лайты через дополнительный проход, потому что тени.


#31
11:02, 14 июня 2021

Dampire
> Спрошу возможно крамольную вещь, но как реализовать цикл по лайтам, если
> источники света с тенями, да еще и разного разрешения. И надо поддерживать
> платформы без массивов.
Мммм, вроде очевидно, но упаковать тени в атлас?

> Юнити говно, конечно, но этой говняности есть причины.
Ну так-то прямо из той ссылки, что была пару постов назад:

Additional passes are rendered for each additional per-pixel light that affect this object. Lights in these passes by default do not have shadows (so in result, Forward Rendering supports one directional light with shadows), unless multi_compile_fwdadd_fullshadows variant shortcut is used.

#32
(Правка: 11:07) 11:07, 14 июня 2021

MrShoor
> Мммм, вроде очевидно, но упаковать тени в атлас?
Ты не знаешь как юнити пользуются. Даже 16к атласа не хватит. Плюс паковать поинты в атлас можно несколькими способами и все не фонтан.
MrShoor
> Ну так-то прямо из той ссылки, что была пару постов назад:
Этот "шорткат" используется в Standard шейдере.

#33
11:19, 14 июня 2021

Dampire
> Ты не знаешь как юнити пользуются. Даже 16к атласа не хватит.
Ну сделать несколько атласов. И вообще не вижу никаких проблем забиндить несколько шедоумап. Всяко лучше чем по 5 проходов одной и той же геометрии делать.

#34
12:25, 14 июня 2021

MrShoor
> И вообще не вижу никаких проблем забиндить несколько шедоумап
байндить легко, к ним обращаться неудобно. придётся хранить, к какому источнику какая шадоумапа относится и там могут быть проблемы с обращением к мапе по индексу. придётся делать switch или подобный костыль.

#35
13:36, 14 июня 2021

Suslik
> G-Buffer и сглаживание дружат плохо. либо это MSAA, где в каждом пикселе
> хранится ещё N субпикселей и поэтому освещение по факту в N раз дороже, либо
> это постпроцессовое баловство.
Практика показала, что самый простой и быстрый способ - увеличить g-буфер в 1.5 раза по каждой стороне, в итоге в 2.25 больше пикселей. Приемлемый результат. x1.75, x2 - уже потяжелее.

#36
14:52, 14 июня 2021

MrShoor
> Да уж... Соглашусь с MikeNew, наркомания высшего порядка
А как правильно готовится форвард? Где почитать на сопоставимом по доступности языке?

#37
(Правка: 18:24) 18:24, 14 июня 2021

Suslik
> придётся делать switch
О да. Свитч настолько ужасен, что лучше отрисовать геометрию N раз.

kkolyan
> А как правильно готовится форвард?
for(uint i = 0; i < cNumLights; i++) в пиксельном шейдере

#38
(Правка: 18:33) 18:32, 14 июня 2021

MrShoor
> for(uint i = 0; i < cNumLights; i++) в пиксельном шейдере
примерно такое впечатление (это не все, конечно) сложилось именно от Unity-вского Deferred. А не найдется ссылочек на то как это делается в форварде?
В тех статьях что легко гуглятся я не увидел противоречий с подходом юнити.

#39
(Правка: 18:48) 18:44, 14 июня 2021

kkolyan
> А не найдется ссылочек на то как это делается в форварде?
Первая же статья из выдачи гугла: http://www.rastertek.com/dx11tut30.html
Четвертая ссылка из той же выдачи:
https://learnopengl.com/Lighting/Multiple-lights

#40
(Правка: 18:49) 18:48, 14 июня 2021

MrShoor
> Первая же статья из выдачи гугла: http://www.rastertek.com/dx11tut30.html
> Четвертая ссылка из той же выдачи:
> https://learnopengl.com/Lighting/Multiple-lights
там описывается как это делать. но ничего не сказано про форвард. так то оно и в юнько-доках есть, просто в разделе Deferred.

есть ли ссылки, где подобные техники ассоциируются с понятием "форвард"?

#41
18:57, 14 июня 2021

kkolyan
> но ничего не сказано про форвард
А ты понимаешь чем форвард от дефереда отличается?

> так то оно и в юнько-доках есть, просто в разделе Deferred.
Что оно то? Они цикл по всем всем лайтам гоняют в пиксельном в деффереде? Дай ссыль на эту доку.

#42
(Правка: 19:52) 19:38, 14 июня 2021

MrShoor

> А ты понимаешь чем форвард от дефереда отличается?
как будто понимание - это boolean. я читал статьи на эту тему и что-то понял. мое понимание того, что же есть Forward (в противопоставлении Deferred) - в унисоне с тем, что сказал Eugene. и в диссонансе с тем что говоришь ты. соответственно я прошу ссылки на источники которые бы, возможно, позволили мне улучшить свое понимание этой терминологии.

> Что оно то? Они цикл по всем всем лайтам гоняют в пиксельном в деффереде? Дай ссыль на эту доку.
Unity в Deferred режиме рендерит сначала G-buffer, а затем в на основе него в скринспейсе обсчитывает лайты. В Forward режиме Unity, каждый лайт рендерится отдельным пассом.
https://docs.unity3d.com/Manual/RenderTech-DeferredShading.html

в обещем-то первый же запрос (с игнором юнедоков) на тему "deferred or forward" ведет к статью с такой же терминологией.

#43
(Правка: 19:54) 19:53, 14 июня 2021

kkolyan
Форвард фечит все параметры материала(ака текстуры), обрабатывает и выводит результат сразу во фрэймбуффер. Деферред - кэширует парамеиры материала в g-buffer, и только потом фечит их и считает. Всё остальное - частности реализации. И в форварде можно сделать 100 источников света за проход, и в деферреде рисовать каждый меш по 100 раз.

#44
19:56, 14 июня 2021

kkolyan
> в обещм-то первая же не-юне-ссыль на тему "deferred or forward" выводит статью
> в общем и целом с такой же терминологией.
Ну вот же, отличная статья с объяснениями о том, чем Forward отличается от Deferred. И в ней нет ничего в духе: "на каждый лайт отдельный проход рендера геометрии."
Но на сегодняшний день эта статья не полная, ибо существует Forward+ и Clustered Lighting.

А как ты думаешь, какой тип освещения в тех двух статьях, которые я привел как пример?

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