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

Реймарчинг точечных источников света для отбрасывания теней в объемном тумане

Страницы: 1 2 3 4 Следующая »
#0
12:25, 11 авг 2023

Всем привет. Как это корректно реализовать? Есть данные с каскадами теней от источников света. Для направленного света вроде все просто и работает, но подход для точечных источников света (учитывая spotlight) не будет работать, самому изобретать лень. Делал кто-нибудь?
Для направленного делаю так:

+ Показать

Но тут простая логика, вдоль направления со смещением проверяем. Вопрос заключается в том, что я не знаю как реймарчить для PointLight и SpotLight. Брать данные от конкретных точечных источников света из их теневых каскадов тоже в курсе, сам смысл как для них "шагать" нужен.

#1
12:10, 12 авг 2023

Target
Делаешь лучи по объёму ?

#2
13:45, 12 авг 2023

innuendo
Делаю как постэффект без учета Post Processing Volume, т.е. он глобальный, без учета объемов, а если быть точнее это вообще RendererFeature

#3
15:26, 12 авг 2023

Target
Ты, этот код не сам писал ?

#4
15:30, 12 авг 2023

innuendo
Сам, на своей клавиатуре. Собственно вопрос то не в этом заключался, а в том как по сфере и конусу реймарчить. В целом если помощи не будет - то ладно, со временем сам разберусь, все равно pet проект для образовательных целей.

#5
16:14, 12 авг 2023

Target
Узнай как параметрически задать конус сферу и как-то так дальше

#6
17:12, 12 авг 2023

Target
> а в том как по сфере и конусу реймарчить.
Я не понял причем тут сфера/конус если честно. Ну т.е. если у тебя есть шедоумапа - то поидее какая разница что там, должна быть матрица проекции/вида из источника, с помощью неё переводишь в текстурые координаты и проверяешь в тени или нет пиксель.

#7
20:22, 12 авг 2023

MrShoor
Для DirectionalLight это просто и понятно, а когда у тебя точечный - тут уже по шести сторонам идет просчет теней, если конкретно говорить про Unity - выбирается конкретная сторона, у меня же реймарчинг заточен под то, чтобы проходится вдоль направления солнца и это вполне просто и понятно, а когда у тебя не направление а сфера или SpotLight - тут уже не так просто, тут надо уже проходится определенным количеством шагов от центра сферы до её краев, так и для спотлайта, т.е. нужен алгоритм который будет проходится в мировых координатах по объему формы источника света заданной формы.

#8
23:59, 12 авг 2023

Target
> нужен алгоритм который будет проходится в мировых координатах по объему формы
Всмысле алгоритм? Вычесть из координаты точки координты источника, и сделать 1 шажок вдоль полученного вектора? Я не понимаю в чем сложность.

#9
5:59, 13 авг 2023

MrShoor
А как это вдоль, если у нас не направление солнца а сферический источник?) Взять точку в мировом пространстве проблем нет никаких, у меня затуп как раз в том как шагать для объема сферы источника заданным range параметром или для того же спотлайта, где угол может меняться как угодно. Лучше псевдокодом объясни, я вот дуб-дубом если честно, не могу сам сформулировать действие для данной операции, отчего и пытаюсь узнать как такие вещи делаются

#10
8:19, 13 авг 2023

Target
Сферические координаты знаешь ?

#11
8:47, 13 авг 2023

innuendo
Допустим

#12
9:10, 13 авг 2023

А, всё, разобрался, я все изначально делал как и надо, но семплировал не корректно

#13
11:42, 14 авг 2023

Для оптимизации осталось сделать так, чтобы дальние источники не реймарчили от себя тень в тумане, ибо зачем оно, если дальность прорисовки большая и вдалеке на такое пофиг, думаю сделать плавный переход fadeIn/fadeOut для тени опираясь на дистанцию от камеры, а когда в ноль видимость выйдет - не реймарчить от такого источника тень и всё и норм будет. Кстати хотел спросить ещё по поводу объемного тумана. Некоторые делают его на основе вокселей и тени там просчитывают + рассеивание света, оно же будет жирнее в плане производительности, рассеивание и тени просчитывать в тумане можно и реймарчингом и это дешевле будет, или я не прав и все-таки воксельный туман лучше? Но ведь он будет жрать больше памяти, т.к. это же 3д текстура по сути, а на всю локацию - дохрена выйдет по памяти. Хотя тут вопрос спорный скорее-всего, смотря для какой игры

#14
12:04, 14 авг 2023

Target
> Некоторые делают его на основе вокселей и тени там просчитывают + рассеивание
> света, оно же будет жирнее в плане производительности, рассеивание и тени
> просчитывать в тумане можно и реймарчингом и это дешевле будет
спорно, воксельная сетка не обязательно должна быть высокого разрешения, она может быть условно для облака скажем 8х8х4 или там 16х16х8, не так сложно для такого количества вокселей предрасчитать освещение, а при рендеринге самих пикселей, извлекать из нее уже посчитанное освещение, в случае же с реймарчингом - придется рассчитывать для каждого пикселя, что будет гораздо дороже.

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

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