Сетевое издание
Международный студенческий научный вестник
ISSN 2409-529X

MODERN ALGORITHMS FOR SHADOW GENERATION

Korotkova E.V. 1 Belov Y.S. 1
1 Kaluga Branch of Bauman Moscow State Technical University, Russia (National research university of technology)
Shadows are very important in computer graphics, because shadows provide important visual cues for the relative position of objects in three-dimensional space. For example, shadow helps to indicate how far up from the ground the some object is hanging and to see it’s true geometric shape. Today all modern algorithms for shadow generation are based on Standard shadow maps (SSMs) and are designed to reduce aliasing problem and to improve the general shadow quality. This paper discusses modern and popular shadow generation algorithms, which reduce aliasing problem by different methods: by geometric warping of space, by subdividing view frustum in multiple parts and by additional filtering directly on the shadow map.
shadows in computer graphics
algorithms for shadow generation
standard shadow maps
aliasing
perspective shadow maps
logarithmic perspective shadow maps
cascaded shadow maps
variance shadow maps
percentage-closer filtering.

Введение

Алгоритм SSMs обрел высокую популярность благодаря своей простоте и производительности, однако, его основной недостаток – высокая подверженность алиасингу [2]. Современные алгоритмы генерации теней стремятся сохранить простоту и быстродействие SSMs, но при этом уменьшить ошибку алиасинга.

Перспективные карты теней (Perspective Shadow Maps, PSM)

Основная идея этого алгоритма состоит в том, чтобы сгенерировать карту теней не в обычном мировом пространстве, а в пост-проективном пространстве [8], - которое получается после проецирования сцены на камеру.

Рис. 1. Мировое пространство (слева) и пост-проективное (справа) [8].

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

Рис. 2. Обычная карта теней в SSMs (слева) и PSM (справа) [7].

Существенным недостатком PSM является то, что качество тени полностью зависит от взаимного расположения источника света и наблюдателя: если за наблюдателем находятся объекты, отбрасывающие тени, – в отрисованной сцене их не будет; также в ходе реализации этого алгоритма авторы не учли такие проблемы отрисовки теней как Shadow acne и артефакт Питера Пена [4]; кроме того, этот алгоритм уменьшает ошибки алиасинга по координате х, но увеличивает их по координате у.

Логарифмические перспективные карты теней (Logarithmic Perspective Shadow Maps, LogPSMs)

LogPSMs – это алгоритм искривления пространства, основанный на технике PSM, для генерации теней высокого качества и с низкой ошибкой алиасинга.

Практически полное устранение алиасинга достигается за счет использования перспективной параметризации вместе с логарифмической трансформацией: вначале алгоритм производит перспективное проецирование сцены, потом для устранения алиасинга в направлении координаты у использует логарифмическую трансформацию, после чего совершает перераспределение разрешения карты теней [6].

Рис. 3. Слева-направо: обычная карта теней, карта после перспективного проецирования, карта после логарифмической трансформации, карта после перераспределения разрешения [7].

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

Каскадные карты теней (Cascaded Shadow Maps, CSMs)

CSMs – это алгоритм разбиения пространства. Основная идея CSMs состоит в следующем: хранение информации о всей сцене в одной карте теней требует ее высокого разрешения, поэтому целесообразно использовать для одной сцены несколько карт теней с разными разрешениями. Алгоритм подразделяет пирамиду просмотра на несколько подпирамид (минимум – две) и для каждой создает свою карту теней: для объектов, находящихся ближе всего к наблюдателю создается карта теней более высокого разрешения, а для объектов, находящихся далеко от наблюдателя – низкого разрешения [5]. Во время отрисовки сцены для каждого объекта выбирается соответствующая карта теней. Недостаток – дополнительная нагрузка на аппаратное обеспечение.

Рис. 4. Пирамида просмотра разделенная на две части [5].

Разностные карты теней (Variance Shadow Maps, VSMs)

VSMs – это алгоритм, исправляющий ошибку алиасинга путем дополнительной фильтрации. VSMs основан на алгоритме PCF (Percentage-closer filtering), но улучшает его за счет выполнения фильтрации непосредственно на самой карте теней: пишется шейдер для формирования специальной многоканальной карты теней, в которой сохраняется значения глубины пикселя и квадрата глубины пикселя, далее происходит фильтрация карты (например, размытие по Гауссу), находится среднее значение глубины и среднеквадратическое отклонение; далее проводиться стандартный тест глубины, и, если в результате оказывается, что точка находиться в тени, ей присваивается значение выведенное из неравенства Чебышева (а не значение единицы как в SSMs) [1]. Недостатки – обязательное наличие многоканальной текстуры для хранения данных и ошибки приближения при возведении значения глубины в квадрат.

Вывод

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