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