Screen Space Ambient Occlusion | это... Что такое Screen Space Ambient Occlusion? (original) (raw)

Screen Space Ambient Occlusion (сокращённо SSAO; англ. преграждение окружающего света в экранном пространстве) — программная техника (методика) в трёхмерной компьютерной графике, которая является приближенной имитацией глобального освещения и представляет собой изменённый и усовершенствованный вариант методики Ambient occlusion. Алгоритм SSAO работает в режиме реального времени и имитирует рассеянное непрямое освещение и соответствующее затенение в трёхмерном виртуальном пространстве.

SSAO был разработан отделом исследований и разработок (R&D) немецкой компании Crytek при разработке графической компоненты игрового движка CryEngine 2.[1] Crysis, первая игра на CryEngine 2, разработанная Crytek и вышедшая осенью 2007 года, впервые использовала SSAO. Позже данный алгоритм и его модификации были использованы во многих игровых движках, включая Leadwerks Engine, Dagor Engine, Unreal Engine, Unity, X-Ray, Glacier 2 и других.

Описание работы

Алгоритм SSAO исполняется на графическом процессоре (англ. GPU) видеокарты и осуществляется как пиксельный шейдер, анализирующий буфер глубины (Z-буфер) сцены, который сохранён в текстуре.

При работе алгоритма Ambient occlusion пиксельный шейдер производит выборку значения глубины для каждого пикселя на экране вокруг текущего пикселя и пытается вычислить количество преград от каждой из выбранных точек. В своей самой простой реализации коэффициент преграды зависит только от различия глубины выбранной точки и текущей точки. Без дополнительных продвинутых решений и алгоритмов такой метод решения «в лоб» потребовал бы приблизительно 200 чтений из текстуры для каждого пикселя для хорошего визуального качества. Это число не является приемлемым для рендеринга в режиме реального времени на современных графических процессорах.

Алгоритм SSAO призван упростить вычислительную сложность алгоритма Ambient occlusion и сделать его подходящим для работы на графических процессорах в режиме реального времени. Вместе с тем качество результирующего изображения у SSAO является худшим, чем в первоначальном Ambient occlusion, так как SSAO использует аппроксимирующие (приближающие) методики рендеринга.

Для создания Screen Space Ambient Occlusion необходимо иметь две текстуры со сценой:

Потом берётся Position Map и Normal Map каждого текселя на экране и обрабатываются соседние тексели. По отношению позиций соседних текселей к обрабатываемому, ему присваивается определённый уровень «затенения».

Для получения высококачественных результатов с гораздо меньшим количеством чтений текстуры, по сравнению с Ambient occlusion, в SSAO осуществление выборки используется вместе с случайно вращаемым ядром. Ориентация ядра повторяется каждые N пикселей экрана для того, чтобы иметь только высокочастотные искажения в финальном изображении. В конце это высокочастотное искажение удаляется NxN количеством прохода постпроцессора, размывающего изображение (англ. Blur). При этом принимается во внимание глубина неоднородностей, используя такие методы, как сравнение смежных нормалей и глубин. Такое решение позволяет сокращать количество выборок глубины на пиксель к приблизительно 16 или меньше, в то же время предоставляя высококачественный результат и позволяя использовать SSAO в приложениях реального времени, таких как компьютерные игры.

Преимущества и недостатки

По сравнению с другими алгоритмами модели Ambient occlusion, у SSAO есть следующие преимущества:

Вместе с преимуществами алгоритму SSAO свойственны и недостатки:

Примечания

  1. Ambient Occlusion – approaches in screen space (SSAO) (англ.). CG – Blog (16 января 2010 года). Архивировано из первоисточника 29 марта 2012. Проверено 22 мая 2011.

Ссылки

Англоязычные источники

Русскоязычные источники