Отложенное затенение - Deferred shading

G-буфер диффузного цвета
Z-буфер
Поверхностный нормальный G-буфер
Окончательная компоновка. (Для расчета теней, показанных на этом изображении, используются другие методы, такие как отображение теней, теневые щупальца или теневой объем должен использоваться вместе с отложенным затенением.[1])

В области 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 любые преимущества сглаживания могли быть потеряны.

Отложенное освещение

Отложенное освещение (также известное как Light Pre-Pass) - это модификация отложенного затенения.[14] Этот метод использует три прохода вместо двух при отложенном затенении. При первом проходе по геометрии сцены только атрибуты, необходимые для вычисления попиксельного освещения (сияние ) записываются в G-буфер. «Отложенный» проход экранного пространства затем выводит только данные рассеянного и зеркального освещения, поэтому второй проход должен быть выполнен по сцене, чтобы считывать данные об освещении и выводить окончательное затенение для каждого пикселя. Очевидным преимуществом отложенного освещения является резкое уменьшение размера G-буфера. Очевидная стоимость - необходимость визуализировать геометрию сцены дважды, а не один раз. Дополнительная стоимость заключается в том, что отложенный проход в отложенном освещении должен выводить диффузную и зеркальную освещенность отдельно, тогда как отложенный проход в отложенном затенении должен выводить только одно объединенное значение яркости.

Благодаря уменьшению размера G-буфера этот метод может частично преодолеть один серьезный недостаток отложенного затенения - множественность материалов. Еще одна проблема, которую можно решить, - это MSAA. Отложенное освещение можно использовать с MSAA на оборудовании DirectX 9[нужна цитата ].

Отложенное освещение в коммерческих играх

Использование этой техники в видеоиграх увеличилось из-за контроля, который она дает с точки зрения использования большого количества динамических источников света и уменьшения сложности требуемых инструкций шейдера. Вот несколько примеров игр с отложенным освещением:

Отложенное затенение в коммерческих играх

По сравнению с отложенным освещением этот прием не пользуется большой популярностью.[нужна цитата ] из-за высоких требований к размеру памяти и пропускной способности, особенно на консолях седьмого поколения, где размер графической памяти и пропускная способность ограничены и часто являются узкими местами.

Игровые движки с отложенным затенением или методами рендеринга

История

Идея отложенного затенения была первоначально введена Майкл Диринг и его коллеги в газете[2] опубликовано в 1988 г. под названием Процессор треугольников и обычный векторный шейдер: система СБИС для высокопроизводительной графики. Хотя в статье никогда не используется слово «отложенный», вводится ключевое понятие; каждый пиксель затеняется только один раз после разрешения глубины. Отложенное затенение в том виде, в каком мы его знаем сегодня, с использованием G-буферов, было представлено в статье Сайто и Такахаши в 1990 году.[53] хотя они тоже не используют слово «отложенный». Первая видеоигра с отложенным затенением была Шрек, Xbox название, выпущенное в 2001 году.[54] Примерно в 2004 году начали появляться реализации на обычном графическом оборудовании.[55] Позже этот метод стал популярным для таких приложений, как видеоигры, наконец, стала популярной примерно с 2008 по 2010 год.[56]

использованная литература

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