Растеризация каждого треугольника требует расчёта освещения с учётом всех источников света. При наличии сотен и тысяч точечных источников света, как в комнатах с множеством ламп или в уличных сценах [1, с. 156], прямой расчёт становится вычислительно нерентабельным: каждый фрагмент требует проверки влияния каждого источника света. Отложенный рендеринг (deferred rendering) решает эту проблему, разделяя конвейер на две фазы: на первой сохраняются геометрические атрибуты поверхности, на второй применяется освещение [2]. Целью статьи является рассмотрение архитектуры отложенного рендеринга, его преимуществ и ограничений.
Архитектура отложенного рендеринга
Отложенный рендеринг состоит из двух фаз: фаза геометрии и фаза освещения [3, с. 78]. На фазе геометрии вся видимая геометрия сцены рендерится один раз, сохраняя атрибуты поверхности в G-буфер (geometry buffer). G-буфер обычно включает нормаль поверхности, позицию, диффузный альбедо и параметры материала (шероховатость, металличность) [4, с. 34].
На фазе освещения для каждого источника света рендерится экранная сетка, и в пиксельном шейдере выполняется выборка из G-буфера, восстановление позиции фрагмента и расчёт его освещённости [5]. Результаты освещения накапливаются в финальный буфер через аддитивное смешивание, что позволяет обрабатывать каждый источник света независимо.
Преимущества и ограничения
Главное преимущество отложенного рендеринга — линейная сложность относительно числа источников света вместо квадратичной при прямом рендеринге [6, с. 112]. Для сцены с тысячей источников света это означает значительное ускорение. Каждый источник света обрабатывается независимо, что хорошо масштабируется на GPU [7].
Однако отложенный рендеринг имеет ограничения. Прозрачность требует отдельной обработки, поскольку прозрачные объекты не могут быть включены в G-буфер [8, с. 91]. Антиалиасинг дорогостоящий: MSAA требует хранения G-буфера для каждой выборки. Затраты на память значительны: типичный G-буфер занимает 100–200 МБ видеопамяти. Кроме того, все материалы должны соответствовать структуре G-буфера, что ограничивает гибкость [9].
Оптимизация и гибридные подходы
На практике современные движки используют гибридный рендеринг , комбинирующий отложенный и прямой методы. Непрозрачные объекты с физически корректными материалами рендерятся отложенным методом, прозрачные обрабатываются прямым методом, а статическое освещение запекается в карты лайтмэпов [10]. Дополнительная оптимизация достигается через кластеризацию света : сцена разбивается на трёхмерные клетки, и для каждой предварительно вычисляется список источников света, влияющих на неё [11]. Это позволяет шейдерам освещения обрабатывать только релевантные источники.
Сравнение архитектур представлено в таблице 1.
Таблица 1
Сравнение архитектур рендеринга
|
Архитектура |
Основное преимущество |
Основной недостаток |
|
Forward rendering |
Гибкость, естественная прозрачность |
Квадратичная сложность со светами |
|
Deferred rendering |
Линейная сложность, масштабируемость |
Затраты на память, проблемы с прозрачностью |
|
Гибридный подход |
Баланс производительности и гибкости |
Сложность реализации |
Заключение
Отложенный рендеринг остаётся актуальным методом обработки сцен с множественным динамическим освещением, позволяя масштабировать число источников света без пропорционального роста вычислительных затрат. Однако его ограничения с прозрачностью, памятью и антиалиасингом делают гибридный подход более практичным решением. Современные движки комбинируют отложенный рендеринг для непрозрачных объектов с прямым методом для прозрачности, достигая оптимального баланса производительности и гибкости.
Литература:
- Akenine-Möller T., Haines E., Hoffman N. Real-Time Rendering. — 4th ed. — CRC Press, 2018. — 1200 с.
- Engel W. Deferred Rendering for Current and Future Rendering Pipelines // ACM SIGGRAPH Courses. — 2008.
- Mittring M., Dudash B. Deferred Rendering in Killzone 2 // Game Developers Conference Proceedings. — 2007.
- Kaplanyan A., Dachsbacher C. Cascaded Light Propagation Volumes for Real-Time Indirect Illumination // ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games. — 2010.
- McGuire M. Deferred Rendering for Current and Future Rendering Pipelines // Game Developer Magazine. — 2013.
- Harada T., Fujita Y., Takahara K. Massive Parallel Light Culling with Compute Shader Using Sweep and Prune Algorithm // ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games. — 2012.
- Lauritzen A., Salvi M. Forward+: A Step Toward Film-Style Shading in Real Time // ACM SIGGRAPH Courses, Advances in Real-Time Rendering. — 2013.
- Billeter M., Salvi M., Lauritzen A. Decoupled Deferred Shading on the GPU // ACM SIGGRAPH Symposium on Graphics Hardware. — 2011.
- Olsson O., Billeter M., Assarsson U. Clustered Deferred and Forward Shading // ACM SIGGRAPH Symposium on High-Performance Graphics. — 2012.

