Отложенное затенение - Deferred shading
Эта статья ведущий раздел не может адекватно подвести итог его содержание.Июль 2013) ( |
В области 3D компьютерная графика, отложенное затенение это экранное пространство затенение метод, впервые предложенный Майкл Диринг в 1988 г.[2] Это называется отложенным, потому что затенение фактически не выполняется на первом проходе вершины и пикселя. шейдеры: вместо этого закрашивание "откладывается" до второго прохода.
На первом проходе отложенного шейдера собираются только данные, необходимые для вычисления затенения. Позиции, нормали и материалы для каждой поверхности отображаются в буфере геометрии (G-буфер ) с помощью "рендерить в текстуру ". После этого пиксельный шейдер вычисляет прямое и непрямое освещение в каждом пикселе, используя информацию о буферы текстуры в экранное пространство.
Направленная окклюзия экранного пространства[3] можно сделать частью конвейера отложенного затенения, чтобы придать направленность теням и взаимным отражениям.
Преимущества
Основным преимуществом отложенного затенения является отделение геометрии сцены от освещения. Требуется только один проход геометрии, и каждый источник света рассчитывается только для тех пикселей, на которые он влияет. Это дает возможность визуализировать множество источников света в сцене без значительного снижения производительности.[4] У этого подхода есть и другие преимущества. Эти преимущества могут включать более простое управление сложными ресурсами освещения, простоту управления другими сложными ресурсами шейдера и упрощение программного конвейера рендеринга.
Недостатки
Одним из ключевых недостатков отложенного рендеринга является невозможность обработки прозрачность внутри алгоритма, хотя эта проблема является общей в Z-буферизация сцены, и это, как правило, обрабатывается путем задержки и сортировки рендеринга прозрачных частей сцены.[5] Глубокий пилинг можно использовать для достижения прозрачность, независимая от порядка при отложенном рендеринге, но за счет дополнительных пакетов и размера g-буфера. Современное оборудование, поддерживающее DirectX 10 и позже, часто может выполнять пакеты достаточно быстро, чтобы поддерживать интерактивную частоту кадров. Когда желательна прозрачность, не зависящая от порядка (обычно для потребительских приложений), отложенное затенение не менее эффективно, чем прямое затенение с использованием той же техники.
Еще один серьезный недостаток - сложность использования нескольких материалов. Можно использовать много разных материалов, но для этого требуется, чтобы в G-буфере хранится больше данных, который уже достаточно велик и занимает большую часть полосы пропускания памяти.[6]
Еще один недостаток состоит в том, что из-за отделения световой сцены от геометрической, аппаратная сглаживание больше не дает правильных результатов, поскольку интерполированные подвыборки привели бы к бессмысленным атрибутам положения, нормали и касательной. Один из обычных методов преодоления этого ограничения - использование обнаружение края на конечном изображении и затем применив размытие по краям,[7] однако недавно были разработаны более совершенные методы постобработки сглаживания краев, такие как MLAA[8][9] (используется в Killzone 3 и Dragon Age II, среди прочего), FXAA[10] (используется в Crysis 2, СТРАХ 3, Duke Nukem Forever ), SRAA,[11] DLAA[12] (используется в Star Wars: The Force Unleashed II ) и post MSAA (используется в Crysis 2 как решение сглаживания по умолчанию). Хотя это не метод сглаживания краев, временное сглаживание (используется в Halo Reach и Unreal Engine ) также может сделать края более гладкими.[13] DirectX 10 представил функции, позволяющие шейдерам получать доступ к отдельным семплам в целевых объектах рендеринга с множественной выборкой (и буферы глубины в версии 10.1), предоставляя пользователям этого API доступ к аппаратному сглаживанию с отложенным затенением. Эти функции также позволяют им правильно применять сопоставление яркости HDR к краям со сглаживанием, где в более ранних версиях API любые преимущества сглаживания могли быть потеряны.
Отложенное освещение
В этом разделе фактическая точность оспаривается.Август 2016 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Отложенное освещение (также известное как Light Pre-Pass) - это модификация отложенного затенения.[14] Этот метод использует три прохода вместо двух при отложенном затенении. При первом проходе по геометрии сцены только атрибуты, необходимые для вычисления попиксельного освещения (сияние ) записываются в G-буфер. «Отложенный» проход экранного пространства затем выводит только данные рассеянного и зеркального освещения, поэтому второй проход должен быть выполнен по сцене, чтобы считывать данные об освещении и выводить окончательное затенение для каждого пикселя. Очевидным преимуществом отложенного освещения является резкое уменьшение размера G-буфера. Очевидная стоимость - необходимость визуализировать геометрию сцены дважды, а не один раз. Дополнительная стоимость заключается в том, что отложенный проход в отложенном освещении должен выводить диффузную и зеркальную освещенность отдельно, тогда как отложенный проход в отложенном затенении должен выводить только одно объединенное значение яркости.
Благодаря уменьшению размера G-буфера этот метод может частично преодолеть один серьезный недостаток отложенного затенения - множественность материалов. Еще одна проблема, которую можно решить, - это MSAA. Отложенное освещение можно использовать с MSAA на оборудовании DirectX 9[нужна цитата ].
Отложенное освещение в коммерческих играх
Использование этой техники в видеоиграх увеличилось из-за контроля, который она дает с точки зрения использования большого количества динамических источников света и уменьшения сложности требуемых инструкций шейдера. Вот несколько примеров игр с отложенным освещением:
- Алан Уэйк
- Assassin's Creed III[15]
- BioShock Infinite[16]
- Размытие
- Brink
- Разгон и Разгон 2[17]
- Crysis 2[18]
- Мертвый космос,[19] Мертвый космос 2[20] и Мертвый космос 3[21]
- Deus Ex: Human Revolution [22]
- Догма Дракона [23]
- Guild Wars 2 [24]
- Halo Reach [25]
- inFamous и inFamous 2
- Маленькая большая планета
- Metal Gear Solid V: Ground Zeroes
- Metal Gear Solid V: Призрачная боль[26]
- Сдвиг 2 НЕОБХОДИМО [27]
- Red Dead Redemption
- Серия сопротивления[28]
- Рошар
- StarCraft II [29]
- Неизведанный и Uncharted 2[30]
- Победить [31]
Отложенное затенение в коммерческих играх
По сравнению с отложенным освещением этот прием не пользуется большой популярностью.[нужна цитата ] из-за высоких требований к размеру памяти и пропускной способности, особенно на консолях седьмого поколения, где размер графической памяти и пропускная способность ограничены и часто являются узкими местами.
- Амнезия: Темный спуск[32]
- Battlefield 3[33]
- Dota 2[34]
- Подземелья
- Цифровой боевой симулятор (DCS) World 2.5
- Grand Theft Auto IV
- Killzone 2 и Killzone 3[35]
- Мафия II
- Шахтерские войны 2081[36]
- Метро 2033[37]
- Рифт
- Шрек[38]
- Splinter Cell: Conviction
- В СТАЛКЕР. серия игр: Тень Чернобыля, Чистое небо и Зов Припяти[39]
- чистая доска[40]
- Трина[41]
- Трина 2 [42]
- Вива Пиньята
Игровые движки с отложенным затенением или методами рендеринга
- НаковальняСледующий
- Chrome Engine
- CryEngine 3[43]
- Fox Engine[26]
- Обморожение 2[44]
- Начало игры[45]
- Движок Haemimont Games (HGE)
- I-Novae[46]
- Leadwerks
- MT Framework
- Продвинутый игровой движок Rockstar[47]
- Крутящий момент 3D[48]
- Единство[49]
- Unreal Engine 4[50]
- Видение[51]
- Creation Engine по состоянию на Fallout 4 и Skyrim SE[52]
История
Идея отложенного затенения была первоначально введена Майкл Диринг и его коллеги в газете[2] опубликовано в 1988 г. под названием Процессор треугольников и обычный векторный шейдер: система СБИС для высокопроизводительной графики. Хотя в статье никогда не используется слово «отложенный», вводится ключевое понятие; каждый пиксель затеняется только один раз после разрешения глубины. Отложенное затенение в том виде, в каком мы его знаем сегодня, с использованием G-буферов, было представлено в статье Сайто и Такахаши в 1990 году.[53] хотя они тоже не используют слово «отложенный». Первая видеоигра с отложенным затенением была Шрек, Xbox название, выпущенное в 2001 году.[54] Примерно в 2004 году начали появляться реализации на обычном графическом оборудовании.[55] Позже этот метод стал популярным для таких приложений, как видеоигры, наконец, стала популярной примерно с 2008 по 2010 год.[56]
использованная литература
- ^ http://http.download.nvidia.com/developer/presentations/2004/6800_League/6800_League_Deferred_Shading.pdf
- ^ а б Диринг, Майкл; Стефани Виннер; Бик Щедивы; Крис Даффи; Нил Хант (1988). «Треугольный процессор и обычный векторный шейдер: система СБИС для высокопроизводительной графики». ACM SIGGRAPH Компьютерная графика. 22 (4): 21–30. Дои:10.1145/378456.378468.
- ^ "Отложенная направленная окклюзия экранного пространства". kayru.org.
- ^ http://homepage.lnu.se/staff/tblma/Deferred%20Rendering%20in%20XNA%204.pdf
- ^ «NVIDIA SDK 9.51 - Примеры кода». NVIDIA. 2007-01-17. Получено 2007-03-28.
- ^ Вольфганг Энгель. "Light Pre-Pass Renderer". Дневник графического программиста.
- ^ «Учебник по отложенному затенению» (PDF). Папский католический университет Рио-де-Жанейро. Архивировано из оригинал (PDF) 6 марта 2009 г.. Получено 2008-02-14.
- ^ «MLAA: эффективное перемещение антиалиасинга с графического процессора на процессор» (PDF). Intel. Получено 2018-12-02.
- ^ http://igm.univ-mlv.fr/~biri/mlaa-gpu/TMLAA.pdf
- ^ http://www.ngohq.com/images/articles/fxaa/FXAA_WhitePaper.pdf
- ^ "Сглаживание субпиксельной реконструкции". nvidia.com.
- ^ Дмитрий Андреев. «И - dlaagdc2011». intercon.ru.
- ^ Дмитрий Андреев. «Сглаживание с другой точки зрения (расширенные слайды GDC 2011)». intercon.ru.
- ^ «Рендеринг в реальном времени · Отложенные подходы к освещению». realtimerendering.com.
- ^ «Assassin's Creed III: переработанный двигатель наковальни». www.GameInformer.com.
- ^ «Разработка BioShock Infinite ориентирована на PS3 и использует технологию Uncharted 2». blorge.com. Архивировано из оригинал на 2011-10-03.
- ^ «Техническое интервью: Crackdown 2». Eurogamer.net. 26 июня 2010 г.
- ^ guest11b095. "Немного более отложенный Cry Engine3". slideshare.net.
- ^ «Мертвое пространство от Electronic Arts». NVIDIA. Получено 2008-02-14.
- ^ «Face-Off: Dead Space 2». Получено 2010-02-01.
- ^ «Face-Off: Dead Space 3». Получено 2013-02-18.
- ^ "Гугл переводчик". google.com.
- ^ "GregaMan, Управление блогом". capcom-unity.com.
- ^ «Нормали». Imgur.
- ^ «Техническое интервью: Halo: Reach». Eurogamer.net. 11 декабря 2010 г.
- ^ а б «Технический анализ: двигатель FOX из Metal Gear Solid 5». Eurogamer.net. 5 апреля 2013 г.
- ^ «Статья о создании Shift 2 Unleashed • Страница 2 • Eurogamer.net». Eurogamer.net. 14 мая 2011 г.
- ^ «Архивная копия» (PDF). Архивировано из оригинал (PDF) на 2011-09-15. Получено 2011-07-12.CS1 maint: заархивированная копия как заголовок (ссылка на сайт)
- ^ «Эффекты и приемы StarCraft II» (PDF). AMD. Получено 2012-07-09.
- ^ «CGSociety Maintenance». cgsociety.org. Архивировано из оригинал на 2015-04-02. Получено 2011-07-12.
- ^ «Отложенный рендеринг« PlatinumGames Inc ». platinumgames.com. Архивировано из оригинал 27 ноября 2010 г.
- ^ Силард Шимон. "Интервью Frictional Games". playsomnia.com.
- ^ ИГРАЛЬНАЯ КОСТЬ. «Отложенное затенение на основе SPU в BATTLEFIELD 3 для Playstation 3». slideshare.net.
- ^ "Valve Developer Wiki - Dota 2". Получено 10 апреля 2012.
- ^ «Архивная копия» (PDF). Архивировано из оригинал (PDF) на 2011-07-11. Получено 2011-07-12.CS1 maint: заархивированная копия как заголовок (ссылка на сайт)
- ^ Шахтерские войны 2081
- ^ «Техническое интервью: Интервью Metro 2033 • Стр. 2 • Eurogamer.net». Eurogamer.net. 25 февраля 2010 г.
- ^ "История - Игры с электрическими овцами". Получено 14 апреля 2011.
- ^ Шишковцов, Олесь (07.03.2005). "GPU Gems 2: Глава 9. Отложенное затенение в S.T.A.L.K.E.R". Nvidia. Получено 2011-02-02.
- ^ «Отложенное затенение в Tabula Rasa». NVIDIA. Архивировано из оригинал на 2009-02-03. Получено 2008-02-14.
- ^ "Форумы пользователей Steam - Просмотр отдельного сообщения - Снятие нагрузки Physx с процессора ..." steampowered.com.
- ^ «Форумы пользователей Steam - просмотр отдельного сообщения - информация о рендеринге Trine 2 - сглаживание, перегрев, стерео, задержка ввода и т. Д.». steampowered.com.
- ^ «CryENGINE 3 Технические характеристики». Crytek GmbH. Архивировано из оригинал 27 марта 2009 г.. Получено 2009-03-27.
- ^ "Зажигая вас в Battlefield 3". ИГРАЛЬНАЯ КОСТЬ. 3 марта 2011 г. Архивировано с оригинал 25 августа 2011 г.. Получено 15 сентября, 2011.
- ^ «GameStart - Список возможностей». Архивировано из оригинал на 2011-12-02.
- ^ "Infinity Development Journal - отложенное освещение". I-Novae Studios. 2009-04-03. Архивировано из оригинал на 2013-01-26. Получено 2011-01-26.
- ^ "СТРОИТЬ: Отложенный рендеринг". 2009-02-26. Получено 2015-04-08.
- ^ «Torque 3D Development - Advanced Lighting (гибрид отложенного освещения)». 2009-03-03. Получено 2015-07-02.
- ^ Восбург, Итан (09.09.2010). «Предварительный просмотр функции Unity 3 - отложенный рендеринг». Unity Technologies. Получено 2011-01-26.
- ^ «Unreal Engine 4 - Обзор рендеринга». Эпические игры. Получено 6 июня, 2015.
- ^ "Vision Engine 8.2 обеспечивает кроссплатформенность 3D-технологий". 2011-10-10. Архивировано из оригинал на 2012-11-16. Получено 2015-04-08.
- ^ «Графические технологии Fallout 4». Bethesda Softworks. 4 ноября 2015 г.. Получено 2020-04-24.
- ^ Сайто, Такафуми; Токичиро Такахаши (1990). «Понятная визуализация трехмерных фигур». ACM SIGGRAPH Компьютерная графика. 24 (4): 197–206. Дои:10.1145/97880.97901.
- ^ Гельдрайх, Рич. «Презентация GDC 2004 по отложенному освещению и затемнению».
- ^ «Отложенное затенение» (PDF). NVIDIA. Получено 2007-03-28.
- ^ Клинт, Джош. «Отложенный рендеринг в Leadwerks Engine» (PDF). Leadwerks. Архивировано из оригинал (PDF) на 2008-12-09. Цитировать журнал требует
| журнал =
(Помогите)