Окклюзия окружающего пространства экрана
Ambient occlusion в экранном пространстве ( SSAO ) — это метод компьютерной графики , позволяющий эффективно аппроксимировать эффект Ambient occlusion в реальном времени. Он был разработан Владимиром Каялиным во время работы в Crytek и впервые использовался в 2007 году в видеоигре Crysis , также разработанной Crytek. [1]
Выполнение
[ редактировать ]
Алгоритм реализован в виде пиксельного шейдера , анализирующего буфер глубины сцены , хранящийся в текстуре. Для каждого пикселя на экране пиксельный шейдер производит выборку значений глубины вокруг текущего пикселя и пытается вычислить величину перекрытия для каждой выбранной точки. В простейшей реализации коэффициент окклюзии зависит только от разницы глубин между выбранной точкой и текущей точкой.
Без дополнительных умных решений такой метод грубой силы потребовал бы около 200 чтений текстур на пиксель для хорошего визуального качества. Это неприемлемо для рендеринга в реальном времени на современном графическом оборудовании. Чтобы получить результаты высокого качества с гораздо меньшим количеством операций чтения, выборка выполняется с использованием случайно вращающегося ядра . Ориентация ядра повторяется каждые N пикселей экрана, чтобы в конечном изображении был только высокочастотный шум. В конце концов, этот высокочастотный шум значительно удаляется с помощью N x N этапа размытия постобработки с учетом разрывов глубины (с использованием таких методов, как сравнение соседних нормалей и глубин). Такое решение позволяет сократить количество выборок глубины на пиксель примерно до 16 или меньше при сохранении высокого качества результата, а также позволяет использовать SSAO в приложениях мягкого реального времени, таких как компьютерные игры.
По сравнению с другими решениями Ambient Occlusion , SSAO имеет следующие преимущества:
- Независимо от сложности сцены.
- Никакой предварительной обработки данных не требуется, нет времени на загрузку и нет выделения памяти в системной памяти.
- Работает с динамическими сценами.
- Работает одинаково последовательно для каждого пикселя на экране.
- Никакого использования процессора – оно может выполняться полностью на графическом процессоре .
- Может быть легко интегрирован в любой современный графический конвейер .
SSAO также имеет следующие недостатки:
- Скорее локальный и во многих случаях зависящий от вида, поскольку он зависит от глубины соседних текселей, которые могут быть созданы любой геометрией.
- Трудно правильно сгладить/размыть шум, не влияя на разрывы глубины, такие как края объекта (окклюзия не должна «перетекать» на объекты).
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Что такое Ambient Occlusion? Имеет ли это значение в играх?» .
- ^ Тобиас Ритшель; Торстен Грош; Ханс-Петер Зайдель (2009). «Аппроксимация динамического глобального освещения в пространстве изображений» . Материалы симпозиума ACM SIGGRAPH по интерактивной 3D-графике и играм . Проверено 25 ноября 2015 г.
Внешние ссылки
[ редактировать ]- В поисках нового поколения – CryEngine 2
- Видео, показывающее SSAO в действии
- Улучшение изображения за счет нерезкой маскировки буфера глубины
- Аппаратные методы Ambient Occlusion на графических процессорах
- Обзор методов Ambient Occlusion в экранном пространстве
- Окружающая окклюзия на основе буфера глубины в реальном времени
- Исходный код шейдера SSAO, используемого в Crysis
- Аппроксимация динамического глобального освещения в пространстве изображений
- Накопительное экранное пространство Ambient Occlusion
- NVIDIA интегрировала SSAO в драйверы
- Несколько методов SSAO описаны в книге ShaderX7.
- SSAO Шейдер (Русский)
- Учебное пособие по SSAO, расширение техники, используемой в Crysis.