Причина теневых прыщей

10

Я знаю, как работает отображение теней, но я не понимаю причину появления прыщей! Может кто-нибудь сказать мне простой причиной появления прыщей в тени и как это связано с разрешением карты глубины?

Анкит сингх кушва
источник

Ответы:

10

введите описание изображения здесь

Изображение 1 : плохой случай теневых угрей. (Синтетический и немного преувеличенный)

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

введите описание изображения здесь

Изображение 2: боковой разрез функции тени и ее дискретные образцы.

Канонический способ решить эту проблему - слегка сместить карту теней, чтобы объект больше не затенял себя. Это смещение называется смещением. Можно использовать больше умных смещений, чем просто фиксированное значение, но фиксированное значение работает довольно хорошо и имеет минимальные накладные расходы.

введите описание изображения здесь

Изображение 3: функция тени смещена (смещена) вперед.

joojaa
источник
И эта дискретная природа карты глубины создается из-за точности с плавающей точкой. Правильно?
Анкит Сингх Кушва
1
Он не создан, потому что изображения дискретны, так как имеют только одно значение для области, которая изменяется.
Joojaa
Изображения отличаются в камере и световом пространстве?
Анкит Сингх Кушва
Хорошо, эта зигзагообразная линия представляет карту глубины?
Анкит Сингх Кушва
Он представляет функцию карты глубины, пунктирные линии представляют образцы пикселей карты глубины.
joojaa
5

Как дополнение к ответу joojaa: Использование смещения для смещения функции тени действительно решает проблему с теневыми угрями, но может создать дополнительную проблему: Питер Паннинг

Образец изображения с Питером Паннингом

Как вы видите на картинке слева, тень отсоединена от стены отбрасывания тени. Это создает впечатление, что геометрия зависает над землей (точно так же, как может парить Питер Пэн, отсюда и название Питер Паннинг).

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

Сцена с толстой геометрией и тем самым без Питера Паннинга

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

Dragonseel
источник
Также можно быть умнее и рендерить карты среднего расстояния.
Джуджаа
@ MartinBüttner Ну, да. Кажется, это разумная причина называть это так. Учебник, на который я ссылался, использует объяснение, которое я дал.
Dragonseel