Русская Википедия:Отложенное освещение и затенение

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Файл:Deferred rendering pass col.jpg
Буфер диффузного цвета
Файл:Deferred rendering pass dep.jpg
Z буфер
Файл:Deferred rendering pass nor.jpg
Буфер нормалей
Файл:Deferred rendering pass res.jpg
Финальное изображение (для рисования теней, показанных на данном изображении необходимо использовать технологии по типу теневой карты вместе с отложенным освещением).[1]

Отложенное освещение и затенение, отложенный рендеринг (Шаблон:Lang-en) — программная техника (методика) в трёхмерной компьютерной графике, которая обрабатывает освещение и затенение визуальной сцены. В результате работы алгоритма отложенного освещения и затенения процесс вычисления разбивается на меньшие части, которые записываются в промежуточную буферную память и объединяются потом. Главным отличием отложенного освещения и затенения от стандартных методов освещения является то, что эти методы немедленно записывают результат работы шейдера во фреймбуфер цвета. Реализации в современных аппаратных средствах по обработке графики имеют тенденцию использовать множественные цели рендеринга (Шаблон:Lang-en) для избежания избыточных трансформаций вершин. Обычно, как только построены все необходимые буферы, они затем считываются (обычно как вводная текстура) из шейдерного алгоритма (например, уравнение освещения) и объединяются для создания результата. В этом случае вычислительная сложность и полоса пропускания памяти, необходимые для рендеринга сцены, уменьшаются до видимых частей, таким образом уменьшая сложность освещаемой сцены.

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

Первичным преимуществом отложенного рендеринга является совместимость с «грубым» и «ранним» тестированием Z-буфера, другие преимущества ещё не исследованы в должной степени. Эти преимущества могут включать более простое управление сложными ресурсами освещения, лёгкость управления другими сложными шейдерными ресурсами и упрощение программного конвейера визуализации.

Одним из ключевых недостатков техники отложенного рендеринга является неспособность обработать прозрачность в пределах алгоритма, хотя эта проблема является общей и для Z-буферизации; выходом из этой проблемы является задерживание и сортировка рендеринга прозрачных частей сцены[2]. Другое решение — использование вычислительных шейдеров Direct3D 11/OpenGL 4.3 для реализации алгоритма независимой от порядка прозрачности (Шаблон:Lang-en).

Другим довольно важным недостатком отложенного рендеринга является несовместимость со сглаживанием. Так как стадия освещения отделена от стадии геометрии, то аппаратное сглаживание не приводит к правильным результатам. Хотя первый проход, используемый при рендеринге базовых свойств (диффузная обработка, карта высот), может использовать сглаживание, к полному освещению сглаживание неприменимо. Одной из типичных методик для преодоления этого ограничения является метод выделения границ (en:edge detection) финального изображения и затем применения размытия к граням (границам)[3]. Однако этот недостаток был актуален для Direct3D 9. В более поздних версиях появилась возможность читать и писать отдельные семплы (Шаблон:Lang-en) MSAA-текстур (render target — в Direct3D 10, буферы глубины — в Direct3D 10.1). Это позволило разработчикам реализовывать свои алгоритмы MSAA для отложенного освещения.

Распространённость

Примерами игр с отложенным освещением и поддержкой MSAA являются Battlefield 3, Crysis 3, Grand Theft Auto V.

Методика отложенного рендеринга всё более часто используется в компьютерных играх, так как допускает использование неограниченного количества источников света и уменьшает сложность необходимых шейдерных инструкций.

В частности, «Advanced Technology Group», команда специалистов компании Sony Computer Entertainment, исследовала эту область и помогает разработчикам встраивать эту технологию в графические движки. PhyreEngine, бесплатный графический движок разработки Sony Computer Entertainment, имеет поддержку отложенного освещения и затенения. Примерами игр, использующих отложенный рендеринг и разработку которых поддержала Sony Computer Entertainment, являются:

К играм, использующим отложенный рендеринг, но в разработке которых Sony не принимала участие, являются:

Технология отложенного освещения и затенения используется в игровом движке CryEngine 3 разработки Crytek.

История

Идея отложенного освещения и затенения изначально была представлена Майклом Дирингом и его коллегами[6] в работе под названием «The triangle processor and normal vector shader: a VLSI system for high performance graphics», опубликованной в 1988 году[7]. Хотя в работе нигде не используется слово «отложенный», концепция, представленная там, только недавно нашла практическое применение в таких приложениях, как компьютерные игры[8].

Примечания

Шаблон:Примечания

Ссылки