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

FogShadows

#0
18:39, 8 ноя 2021

Пробую сделать тени для тумана, вроде бы иду в правильном направлении, но появились артефакты при построении тени из карты теней. На первый взгляд может показаться что все нормально. Но, если поворочать камерой и посмотреть на картинку под разными углами, то можно заметить вот такую пьянку:

+ Показать

Код:

+ Показать

Хелп ми

#1
18:53, 8 ноя 2021

Target
> Хелп ми
Не делай тени от тумана. Слишком они лагучие.

#2
3:40, 9 ноя 2021

Target
там можно делать огромное количество очень сильных оптимизаций, ты реализовал самый базовый/наивный вариант. например, эти тени можно считать в низком разрешении (x4 меньше разрешение -> x16 меньше пикселей -> x16 быстрее), далее можно апсемплить не как попало, а используя depth aware upsampling, далее можно для каждого пикселя смещать луч на случайную долю от шага (то есть прибавляешь к положению на луче шаг, помноженный на случайную величину 0..1, посчитанную для этого пикселя), далее можно эту случайную величину распределить не белым шумом, а байеровыми матрицами, либо синим шумом.

#3
6:30, 9 ноя 2021

Suslik
Это понятно, что тут реализация в лоб без предварительных ласок) За направление пасибо, ну и я как бы совсем новичок в технологиях, потому все так вот простецки. Однако хотелось бы узнать, с чего такие артефакты могут вылезать?

#4
6:36, 9 ноя 2021

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

#5
7:12, 9 ноя 2021

Suslik А, в общем, выявил проблемное место, чем меньше дальность теней - тем больше выражаются эти косяки. В общем, проблема с выборкой между каскадами, нужно учитывать дальность теней

#6
7:23, 9 ноя 2021

а, у думал, ты другие артефакты имел в виду. энивей, сперва я бы советовал сделать нормально один каскад, потому уже больше прикручивать.

#7
7:59, 9 ноя 2021

Suslik проблему решил просто. Для первого каскада заюзал не unity_WorldToShadow[0] а unity_WorldToShadow[1]

UPD: а хотя не, рано радовался. В общем с одним каскадом пока сделаю, так корректно хотя бы работает

#8
11:03, 9 ноя 2021

Короче, увеличил дальность теней и поднастроил каскады, проблема ушла. Однако как-то не удобно это, зависеть от дальности теней и настроек дальности каскадов.

#9
12:41, 9 ноя 2021

ясное дело, в общем случае туман внутри каждого каскада надо считать отдельно. считать пересечение луча с первым каскадом, интегрировать внутри него, далее со следующим, далее со следующим итд. в худшем случае (если смотришь вдоль направления источника света) придётся интегрировать по всем каскадам последовательно.

#10
13:41, 11 ноя 2021

стохастически это делать не вариант что-ли со случайной длиной шага?

#11
15:31, 11 ноя 2021

MrOcelot
надо не длину шага стохастически выбирать, а оффсет по лучу — он должен быть от нуля до размера одного шага, равномерно распределённый.

#12
16:03, 11 ноя 2021

Suslik
как то ты странно меня поправил на синоним

#13
16:43, 11 ноя 2021

Suslik та я смещение уже добавил посредством текстуры шума

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

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