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