Глобальное освещение — один из наиболее визуально значимых эффектов в синтезе изображений, однако его полный расчёт требует значительных вычислительных затрат. Упрощённый подход — ambient occlusion (AO), техника, которая локально затемняет углубления и щели в геометрии, создавая иллюзию глубины без явного моделирования отскоков света [1]. Screen Space Ambient Occlusion (SSAO) реализует этот подход на основе буфера глубины экрана, что делает его применимым в реальном времени без привязки к геометрии сцены [2]. Целью статьи является рассмотрение принципов SSAO, методов оптимизации и его роли в современном рендеринге.
Принцип работы SSAO
SSAO анализирует буфер глубины и буфер нормалей экрана для каждого пикселя. Для каждого пикселя выполняется выборка глубины в окрестности (например, в круговой или случайной сетке из соседних пикселей), и определяется, насколько окружающая геометрия затеняет текущий пиксель [2]. Если соседние пиксели имеют глубину ближе к камере, чем текущий пиксель, это указывает на углубление или щель, и текущий пиксель затемняется.
Фактор окклюзии вычисляется как отношение числа выборок, которые находятся ближе к камере, к общему числу выборок в окрестности. Этот коэффициент умножается на интенсивность окружающего света, создавая эффект локального затенения [3]. Поскольку SSAO работает исключительно с буфером экрана, он не требует информации о геометрии сцены и может быть применён как постпроцессинговый эффект после основного рендеринга.
Оптимизация и артефакты
Базовая реализация SSAO может быть дорогостоящей: для каждого пикселя требуется выполнить десятки или сотни выборок из буфера глубины. Основная оптимизация — рендеринг SSAO на пониженном разрешении (например, половинном), с последующей интерполяцией результата на полное разрешение [4]. Это снижает стоимость в 4 раза за счёт приемлемого упрощения деталей.
Дополнительная оптимизация — формулирование задачи как трёхмерного объёмного интеграла, что позволяет уменьшить число выборок на пиксель при сохранении качества [5]. Однако SSAO обладает характерными артефактами: ореолы на краях объектов, возникающие из-за дисконтинуитета глубины между передним и дальним объектами, и бледность деталей при близких углах обзора. Эти артефакты частично компенсируются через маскирование краёв и пространственное фильтрование результата [6].
Интеграция с освещением и современные подходы
SSAO обычно применяется как модулятор интенсивности окружающего света: итоговый вклад окружающего освещения умножается на коэффициент окклюзии, полученный из SSAO. Это позволяет сохранять чёткость основного освещения (солнечный свет, точечные источники) без размытия деталей. На практике SSAO часто комбинируется с другими методами: контактные тени обеспечивают локальное затенение в непосредственной близости от поверхностей, а SSAO добавляет деталь в глубинные щели [7].
Современная альтернатива — HBAO (Horizon-Based Ambient Occlusion), которая учитывает угол горизонта в окрестности пикселя, обеспечивая более точные результаты, но с повышенной стоимостью [8]. Сравнение методов представлено в таблице 1.
Таблица 1
Сравнение методов локального затенения
|
Метод |
Основное преимущество |
Основной недостаток |
|
Глобальное освещение |
Физическая корректность |
Очень высокая вычислительная стоимость |
|
SSAO |
Низкая стоимость, простая интеграция |
Артефакты на краях, приближённость |
|
HBAO |
Более качественные результаты |
Повышенная вычислительная стоимость |
Заключение
Screen Space Ambient Occlusion остаётся практичным методом добавления визуальной глубины через локальное затенение, находя баланс между качеством и производительностью в рендеринге реального времени. Несмотря на артефакты и приближённость, SSAO широко используется в современных играх как относительно дешёвый способ обогатить визуальное восприятие сцены. Дальнейшее совершенствование направлено на уменьшение артефактов через лучшие методы фильтрования и временной фильтрации, а также на интеграцию SSAO с динамическим глобальным освещением для достижения визуальных результатов, близких к полному расчёту освещения.
Литература:
- Akenine-Möller T., Haines E., Hoffman N. Real-Time Rendering. — 4th ed. — Boca Raton: A K Peters / CRC Press, 2018. — 1198 p. — ISBN 978–1-1386–2700–0.
- Mittring M. Finding next gen: CryEngine 2 // ACM SIGGRAPH 2007 Courses. — New York: ACM, 2007. — P. 97–121. — DOI: 10.1145/1281500.1281671.
- Bavoil L., Sainz M., Dimitrov R. Image-space horizon-based ambient occlusion // ACM SIGGRAPH 2008 Talks. — New York: ACM, 2008. — Article 22. — DOI: 10.1145/1401032.1401061.
- McGuire M., Mara M., Luebke D. Scalable Ambient Obscurance // Proceedings of the ACM SIGGRAPH / Eurographics Conference on High-Performance Graphics (HPG '12). — Goslar: Eurographics Association, 2012. — P. 97–103. — DOI: 10.2312/EGGH/HPG12/097–103.
- Loos B. J., Sloan P.-P. Volumetric Obscurance // Proceedings of the 2010 ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games (I3D '10). — New York: ACM, 2010. — P. 151–156. — DOI: 10.1145/1730804.1730829.
- McGuire M., Osman B., Bukowski M., Hennessy P. The Alchemy Screen-Space Ambient Obscurance Algorithm // Proceedings of the ACM SIGGRAPH Symposium on High Performance Graphics (HPG '11). — New York: ACM, 2011. — P. 25–32. — DOI: 10.1145/2018323.2018327.
- Filion D., McNaughton R. Effects & Techniques // ACM SIGGRAPH 2008 Games. — New York: ACM, 2008. — P. 133–164. — DOI: 10.1145/1404435.1404441.
- Mattausch O., Scherzer D., Wimmer M. High-Quality Screen-Space Ambient Occlusion using Temporal Coherence // Computer Graphics Forum. — 2010. — Vol. 29, No. 8. — P. 2492–2503. — DOI: 10.1111/j.1467–8659.2010.01784.x.

