The article discusses the Screen Space Reflections (SSR) technique — a method for simulating specular and glossy reflections in real-time rendering without ray tracing. The principles of the reflection ray tracing algorithm along the depth buffer, hierarchical Hi-Z tracing, and binary search methods are described. Characteristic SSR artifacts and mitigation strategies are outlined.
Keywords : screen space, SSR, reflections, ray marching, G-buffer, Hi-Z, BRDF, post-processing.
Введение
Отражения являются одним из наиболее физически значимых визуальных явлений: они несут информацию об окружающей сцене, передают материальные свойства поверхностей и существенно влияют на восприятие освещения. Исторически отражения воспроизводились с помощью кубических карт окружения (cubemap), однако они статичны и не учитывают динамическую геометрию сцены [1, с. 478].
Техника Screen Space Reflections (SSR) была впервые применена в игре Killzone: Shadow Fall (2013) и быстро стала стандартным компонентом пайплайна отложенного рендеринга в ААА-проектах [2, с. 1]. SSR позволяет получать динамические зеркальные отражения видимой геометрии, используя исключительно данные G-буфера текущего кадра, без дополнительных проходов рендеринга сцены. Цель данной статьи — систематически изложить алгоритмические основы SSR, его ограничения и место среди методов имитации отражений.
1. Принцип работы SSR
Алгоритм SSR относится к классу методов ray marching в экранном пространстве. Для каждого пикселя глянцевой или зеркальной поверхности выполняется следующая последовательность действий [3, с. 2].
Вычисление вектора отражения. Из G-буфера считываются нормаль поверхности N и глубина пикселя, по которой восстанавливается позиция точки в пространстве вида. Вектор взгляда V отражается относительно нормали по формуле R = 2(N·V)N − V, что даёт направление луча отражения.
Трассировка луча по буферу глубины. Луч R шагает в пространстве вида с фиксированным шагом, и на каждом шаге его позиция проецируется в экранное пространство. Реальная глубина сцены в этой точке читается из буфера глубины; если глубина луча превысила глубину из буфера — луч пересёкся с геометрией. Цвет пикселя в точке пересечения берётся как цвет отражения [3, с. 4].
Смешивание и применение BRDF. Найденный цвет отражения взвешивается по функции BRDF материала (Fresnel, шероховатость) и смешивается с диффузным освещением. Для матовых поверхностей отражение размывается свёрткой с ядром, масштабируемым по параметру Roughness.
2. Иерархическая трассировка Hi-Z
Основной недостаток линейной трассировки с фиксированным шагом — необходимость малого шага для точного обнаружения тонких объектов (труб, рёбер), что требует многих десятков итераций. Иерархическая трассировка по Hi-Z пирамиде (Hierarchical Z-buffer) позволяет ускорить алгоритм, используя предварительно вычисленные уровни мип-карты буфера глубины [4, с. 3].
Hi-Z пирамида строится аналогично MIP-карте текстуры, но вместо усреднения на каждом уровне берётся максимальная (наиболее удалённая) глубина из четырёх соседних пикселей нижнего уровня. Луч начинает трассировку на грубом уровне пирамиды с крупным шагом; если на данном уровне пересечение не обнаружено, луч делает большой шаг вперёд. При обнаружении возможного пересечения алгоритм спускается на более детальный уровень и уточняет точку пересечения. Такой подход сокращает среднее число итераций с O(N) до O(log N) и является предпочтительным для реализации SSR в производительных рендерах [4, с. 7].
3. Артефакты SSR и методы их смягчения
Исчезновение отражений у краёв экрана. Поскольку SSR использует только видимую геометрию, отражения объектов, выходящих за пределы кадра, отсутствуют. Для сокрытия резких обрывов применяется постепенное затухание отражений у границ экрана и вблизи краёв объектов [3, с. 9].
Отражения скрытой геометрии. Объекты, находящиеся за спиной камеры или перекрытые другой геометрией, не присутствуют в G-буфере и не могут быть отражены. Частичным решением является замена недостающих областей кубической картой окружения — гибридный подход, реализованный в Unreal Engine 5 [5].
Заключение
Screen Space Reflections представляет собой практичный компромисс между физической точностью и производительностью в задаче имитации отражений. Алгоритм трассировки луча по буферу глубины с иерархическим ускорением через Hi-Z обеспечивает динамические зеркальные отражения при вычислительной стоимости, приемлемой для широкого круга платформ. Принципиальное ограничение метода — зависимость от видимой геометрии — делает SSR неотъемлемой частью гибридных систем отражений, сочетающих несколько подходов. Понимание алгоритмической основы SSR необходимо разработчикам рендеринга, поскольку метод активно используется в индустрии и лежит в основе более современных техник, таких как Stochastic SSR и Lumen.
Литература:
- Akenine-Möller T., Haines E., Hoffman N. Real-Time Rendering. — 4th ed. — CRC Press, 2018. — 1198 с.
- Sousa T. et al. CryENGINE 3: Three Years of Work in Review // ACM SIGGRAPH 2013 Courses. — New York: ACM, 2013. — С. 1–34.
- de Vries J. Screen Space Reflections [Электронный ресурс] // LearnOpenGL. — URL: https://learnopengl.com/Guest-Articles/2022/Screen-Space-Reflections (дата обращения: 10.06.2025).
- Uludag Y. Hi-Z Screen-Space Cone-Traced Reflections // GPU Pro 5 / Под ред. W. Engel. — CRC Press, 2014. — С. 149–191.
- Epic Games. Lumen Reflections [Электронный ресурс] // Unreal Engine Documentation. — URL: https://dev.epicgames.com/documentation/en-us/unreal-engine/lumen-global-illumination-and-reflections-in-unreal-engine (дата обращения: 11.06.2025).
- Unity Technologies. Screen Space Reflection [Электронный ресурс] // Unity HDRP Docs. — URL: https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@14.0/manual/Override-Screen-Space-Reflection.html (дата обращения: 11.06.2025).

