здесь - GameGuru.ru

advertisement
NVIDIA HBAO+ - новый механизм создания модели глобального затенения
Традиционное глобальное затенение (Ambient Occlusion)
Техника глобального затенения (вторичной освещенности), то есть модель построения свето-теневой
картины в сцене, не сильно изменилось за последние 15 лет. Представьте точечный источник света – в этом
случае тень будет везде четкой и резко очерченной (с резким переходом между тенями и светлыми
областями). Если увеличить размеры источника света (например, до размеров окна), то получатся мягкие
тени, которые будут становиться жестче при сближении. Если еще больше увеличить размеры источника
(например, целое небо в облачный день), то тени получатся еще мягче. Это и есть суть техники глобального
затенения.
В реальности, алгоритмы глобального затенения включают радиус влияния – максимальное расстояние
между объектом, отбрасывающим тень, и объектом, на который падает тень. В глобальное затенение также
вносит вклад геометрия отбрасывающего тень объекта, расположенного вблизи «приемника».
SSAO и HBAO
Screen Space Ambient Occlusion (SSAO) - это базовый метод рендеринга глобального затенения, основанный
на анализе буфера глубины сцены. Существуют разные варианты алгоритма SSAO, которые используются
разными движками. Это самый распространенный тип динамического глобального затенения, который
применяют в сегодняшних играх.
На конференции SIGGRAPH 2008 NVIDIA представила свой вариант алгоритма SSAO под названием Horizon
Based Ambient Occlusion (HBAO): смотрите тут. В отличие от предыдущих вариантов SSAO, в HBAO
используется алгоритм на базе физики, приравнивающий интеграл к значениям выборки буфера глубины.
Это позволяет получать довольно высокое качество SSAO при большем количестве выборок на пиксель.
Однако, для повышения производительности, HBAO обычно рендерится в низком разрешении (например, в
BF3) или при помощи вычислительных шейдеров, дающих близкие результаты (например, в Batman AC).
Рендеринг SSAO в низком разрешении неизбежно вызывает эффект мерцания, который не всегда можно
скрыть (даже в случае временной фильтрации в BF3, представленной на GDC’12, в некоторых случаях не
удалось скрыть мерцание, вызванное алгоритмом HBAO).
HBAO+
Следующим этапом совершенствования SSAO стал алгоритм HBAO+. NVIDIA хотела сделать его быстрее,
чтобы можно было отрисовывать в разрешении 1920x1200 на графических процессорах уровня high-end (GTX
660 и выше).
Вторая цель компании заключалась в повышении эффективности его реализации на GPU с DX11 путем
оптимизации выборки значений буфера глубины. Для этого, вместо полноэкранного прохождения с
попиксельным смещением (jittering), используется метод Interleaved Rendering, представленный на GDC’13.
Третья цель – улучшение визуального качества HBAO, особенно в сценах с тонкими объектами, например,
травой и листьями, что всегда было проблемой для HBAO.
NVIDIA HBAO+ - это более качественный и быстрый механизм по сравнению с предыдущими
технологиями, который обеспечивает геймерам максимально возможное качество. Сравните
скриншоты HBAO+ и обычного HBAO. HBAO+ рендерится за 2.7 мс времени GPU на кадр в разрешении
1920x1200 на GTX 680, а на традиционный HBAO уходит 9.2 мс времени GPU в 1920x1200 на GTX 680. (С
учетом всех проходов, необходимых для получения глобального освещения.)
Рис. 1: HBAO+ не только дает более высокое качество, но и отрисовывается гораздо быстрее.
Тесселяция DX11
Splinter Cell Blacklist поддерживает тесселяцию DirectX 11 – это лучший способ повышения детализации в
сцене без значительного увеличения требований к памяти или дисковому пространству. И в отличие от
существующих методик детализации, таких как «normal mapping» и «parallax mapping», добавляемая
геометрия является реальной. Новые треугольники динамически генерируются на GPU для каждого кадра,
поэтому это не сильно сказывается на кадровом буфере.
Таб. 2: Опции тесселяции находятся в разделе Options>Video Options>Advanced Options
Тесселяция Фонга
В Splinter Cell Blacklist для отрисовки персонажей и некоторых элементов среды применяется тесселяция
Фонга.
Затенение Фонга – метод, разработанный Буи Туонг Фонгом из Университета Юты, - применяет механизм
интерполяции для затенения поверхности в сегодняшних 3D движках. Затенение Фонга – это более
совершенный метод, чем Flat или Gouraud, так как в нем используются интерполированные попиксельные
нормали к поверхности для расчета цвета каждого пикселя. Но на контурах и силуэтах объектов появляются
артефакты, если поверхность не ровная.
Рис. 2: Тесселяция Фонга эффективно работает и гармонично дополняет затенение Фонга благодаря
улучшению контуров во многих случаях.
Сильное сглаживание поверхности при моделировании лиц не сильно повлияло бы на внутреннюю часть
затененных изображений, так как текстуры, интерполяции нормалей Фонга и освещение уже создают
сложную реалистичную картинку. Однако силуэты страдают от исходной полигональной структуры.
Тесселяция Фонга – это геометрическая версия интерполяции нормалей Фонга, примененная к позициям
вершин. При исправлении визуальных артефактов вдоль контуров есть две пересекающихся цели:
· Создание ровной геометрии вдоль контуров во избежание визуальных артефактов
· Создание этой геометрии при как можно меньшем количестве операций, так как область вокруг контуров
(силуэтов) занимает малую часть изображения и мало влияет на общую картину.
Более подробное описание тесселяции Фонга смотрите здесь:
http://perso.telecom-paristech.fr/~boubek/papers/PhongTessellation/PhongTessellation.pdf
Рис. 3: Скриншот слева показывает грубые полигональные линии без тесселяции DX11, а справа плавный
контур уха получен с помощью динамической генерации полигонов.
NVIDIA TXAA
NVIDIA TXAA – это новая техника сглаживания в кинематографическом стиле, созданная
специально для уменьшения временного искажения (мерцания пикселов при движении). TXAA –
это комбинация аппаратного сглаживания, специального программного алгоритма для улучшения
сглаживания компьютерной графики, и временного фильтра. Чтобы отфильтровать какой-либо пиксель на
экране, TXAA использует выборку по исходному и соседним пикселям вместе с выборкой с предыдущих
кадров, чтобы обеспечить максимальное качество фильтрации. TXAA предлагает улучшенную
пространственную фильтрацию по сравнению со стандартными 2xMSAA и 4xMSAA; например, на
заборах или листве. В сценах с движением TXAA приближается по качеству и даже иногда
обходит другие профессиональные алгоритмы сглаживания. Более качественная фильтрация в
случае TXAA позволяет получить более мягкое изображение по сравнению с менее качественной
фильтрацией традиционных алгоритмов MSAA.
TXAA применяет аппаратное сглаживание MSAA в сочетании с временным фильтром. Сочетание временного
фильтра вместе со стандартным сглаживанием MSAA значительно повышает качество изображения в
движении при минимальном увеличении стоимости. Влияние на производительность метода TXAA зависит
от игры и напрямую связано с влиянием на производительность метода MSAA. В отличие от метода FXAA,
который старается повысить производительность за счет качества, алгоритм TXAA повышает качество за счет
некоторого снижения производительности.
Рис. 4: NVIDIA TXAA обеспечивает плавное сглаживание в кинематографическом стиле, уменьшающее
мерцание пикселов в движении.
Download