- Отложенное освещение и затенение
-
Отложенное освещение и затенение, отложенный рендеринг (англ. deferred shading) — программная техника (методика) в трёхмерной компьютерной графике, которая обрабатывает освещение и затенение визуальной сцены. В результате работы алгоритма отложенного освещения и затенения процесс вычисления разбивается на меньшие части, которые записываются в промежуточную буферную память и объединяются потом. Главным отличием отложенного освещения и затенения от стандартных методов освещения является то, что эти методы немедленно записывают результат работы шейдера во фреймбуфер цвета. Реализации в современных аппаратных средствах по обработке графики имеют тенденцию использовать множественные цели рендеринга (англ. multiple render targets — MRT) для избежания избыточных трансформаций вершин. Обычно, как только построены все необходимые буферы, они затем считываются (обычно как вводная текстура) из шейдерного алгоритма (например, уравнение освещения) и объединяются для создания результата. В этом случае вычислительная сложность и полоса пропускания памяти, необходимые для рендеринга сцены, уменьшаются до видимых частей, таким образом уменьшая сложность освещаемой сцены.
Первичным преимуществом отложенного рендеринга является совместимость с «грубым» и «ранним» тестированием Z-буфера, другие преимущества ещё не исследованы в должной степени. Эти преимущества могут включать более простое управление сложными ресурсами освещения, лёгкость управления другими сложными шейдерными ресурсами и упрощение программного конвейера визуализации.
Одним из ключевых недостатков техники отложенного рендеринга является неспособность обработать прозрачность в пределах алгоритма, хотя эта проблема является общей и для Z-буферизации; выходом из этой проблемы является задерживание и сортировка рендеринга прозрачных частей сцены.[1]
Другим довольно важным недостатком отложенного рендеринга является несовместимость со сглаживанием. Так как стадия освещения отделена от стадии геометрии, то аппаратный анти-алиасинг не приводит к правильным результатам. Хотя первый проход, используемый при рендеринге базовых свойств (диффузная обработка, карта высот), может использовать сглаживание, к полному освещению сглаживание неприменимо. Одной из стандартных методик для преодоления этого ограничения является метод выделения границ (en:edge detection) финального изображения и затем применения размытия к граням (границам).[2]
Методика отложенного рендеринга всё более часто используется в компьютерных играх, так как допускает использование неограниченного количества источников света и уменьшает сложность необходимых шейдерных инструкций. В частности, «Advanced Technology Group», команда специалистов компании Sony Computer Entertainment, исследовала эту область и помогает разработчикам встраивать эту технологию в графические движки. PhyreEngine, бесплатный графический движок разработки Sony Computer Entertainment, имеет поддержку отложенного освещения и затенения. Примерами игр, использующих отложенный рендеринг и разработку которых поддержала Sony Computer Entertainment, являются Killzone 2 разработки Guerrilla Games, LittleBigPlanet разработки Media Molecule и inFamous разработки Sucker Punch Productions. К играм, использующим отложенный рендеринг, но в разработке которых Sony не принимала участие, являются серия игр S.T.A.L.K.E.R. разработки GSC Game World, Dead Space разработки Electronic Arts[3] и Tabula Rasa разработки NCSoft.[4] Технология отложенного освещения и затенения используется в игровом движке CryEngine 3 разработки Crytek.
История
Идея отложенного освещения и затенения изначально была представлена Майклом Дирингом (en:Michael Deering) и его коллегами[5] в работе под названием «The triangle processor and normal vector shader: a VLSI system for high performance graphics», опубликованной в 1988 году.[6] Хотя в работе нигде не используется слово «отложенный», концепция, представленная там, только недавно нашла практическое применение в таких приложениях, как компьютерные игры.[7]
Примечания
- ↑ NVIDIA SDK 9.51 - Featured Code Samples. NVIDIA (17 января 2007). Архивировано из первоисточника 29 марта 2012. Проверено 28 марта 2007.
- ↑ Deferred shading tutorial. Pontifical Catholic University of Rio de Janeiro. Архивировано из первоисточника 29 марта 2012. Проверено 14 февраля 2008.
- ↑ Dead Space by Electronic Arts. NVIDIA. Архивировано из первоисточника 29 марта 2012. Проверено 14 февраля 2008.
- ↑ Deferred shading in Tabula Rasa. NVIDIA. Архивировано из первоисточника 29 марта 2012. Проверено 14 февраля 2008.
- ↑ Deering, Michael; Stephanie Winner, Bic Schediwy, Chris Duffy, Neil Hunt. «The triangle processor and normal vector shader: a VLSI system for high performance graphics». ACM SIGGRAPH Computer Graphics (ACM Press) 22 (4): 21–30.
- ↑ Deferred Shading (PDF). NVIDIA. Архивировано из первоисточника 29 марта 2012. Проверено 28 марта 2007.
- ↑ Klint, Josh. «Deferred Rendering in Leadwerks Engine».
Ссылки
- Каталин Зима Отложенное затенение в XNA Реализация визуализации с отложенным затенением в XNA GS 2.0. Ziggyware (27 декабря 2007 года). — Статья, детально описывающая метод отложенного освещения и затенения, содержащая пояснения и примеры программного кода. Архивировано из первоисточника 19 мая 2012. Проверено 1 июля 2009.
- Боресков Алексей Викторович Deferred Shading. steps3D (2008). Архивировано из первоисточника 29 марта 2012. Проверено 1 апреля 2009.
- Deferred Shading (Отложенное освещение). GameDev.ru (11 мая 2008 года). — Короткое определение алгоритма, его преимущества, недостатки и особенности. Архивировано из первоисточника 29 марта 2012. Проверено 1 июля 2009.
- Rama Hoeztlein Deferred Shading for Multiple Real-Time Soft Shadows (англ.). rchoetzlein.com. Архивировано из первоисточника 29 марта 2012. Проверено 1 июля 2009.
Категория:- Освещение в трёхмерной графике
Wikimedia Foundation. 2010.