stringtranslate.com

Отложенное затенение

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

В области 3D компьютерной графики отложенное затенение — это метод затенения экранного пространства , который выполняется на втором проходе рендеринга после рендеринга вершинных и пиксельных шейдеров . [2] Впервые он был предложен Майклом Дирингом в 1988 году. [3]

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

Направленную окклюзию экранного пространства [4] можно сделать частью конвейера отложенного затенения, чтобы придать направленность теням и взаимным отражениям.

Преимущества

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

Недостатки

Одним из ключевых недостатков отложенного рендеринга является невозможность обработки прозрачности в алгоритме, хотя эта проблема является общей для сцен с Z-буферизацией и, как правило, решается путем задержки и сортировки рендеринга прозрачных частей сцены. [6] Глубинное очищение может использоваться для достижения прозрачности, независимой от порядка , в отложенном рендеринге, но за счет дополнительных пакетов и размера g-буфера. Современное оборудование, поддерживающее DirectX 10 и более поздние версии, часто способно выполнять пакеты достаточно быстро, чтобы поддерживать интерактивную частоту кадров. Когда требуется прозрачность , независимая от порядка (обычно для потребительских приложений), отложенное затенение не менее эффективно, чем прямое затенение с использованием той же техники.

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

Еще одним недостатком является то, что из-за разделения этапа освещения и геометрического этапа аппаратное сглаживание больше не дает правильных результатов, поскольку интерполированные подвыборки приводят к бессмысленным атрибутам положения, нормали и касательной. Одним из обычных методов преодоления этого ограничения является использование обнаружения краев на конечном изображении и последующее применение размытия по краям [8], однако в последнее время были разработаны более продвинутые методы постобработки сглаживания краев, такие как MLAA [9] [10] (используется в Killzone 3 и Dragon Age II , среди прочих), FXAA [11] (используется в Crysis 2 , FEAR 3 , Duke Nukem Forever ), SRAA, [12] DLAA [13] (используется в Star Wars: The Force Unleashed II ) и post MSAA (используется в Crysis 2 как решение для сглаживания по умолчанию). Хотя это не метод сглаживания краев, временное сглаживание (используемое в Halo: Reach и Unreal Engine ) также может помочь придать краям более плавный вид. [14] DirectX 10 представил функции, позволяющие шейдерам получать доступ к отдельным образцам в многодискретных целях рендеринга (и буферах глубины в версии 10.1), предоставляя пользователям этого API доступ к аппаратному сглаживанию в отложенном затенении. Эти функции также позволяют им правильно применять сопоставление яркости HDR к сглаженным краям, где в более ранних версиях API любое преимущество сглаживания могло быть потеряно.

Отсроченное освещение

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

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

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

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

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

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

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

История

Идея отложенного затенения была первоначально представлена ​​Майклом Дирингом и его коллегами в статье [3], опубликованной в 1988 году под названием «Треугольный процессор и нормальный векторный шейдер: система VLSI для высокопроизводительной графики ». Хотя в статье никогда не используется слово «отложенный», вводится ключевая концепция: каждый пиксель затеняется только один раз после разрешения глубины. Отложенное затенение, как мы его знаем сегодня, с использованием G-буферов, было представлено в статье Сайто и Такахаши в 1990 году, [56] хотя они тоже не используют слово «отложенный». Первой видеоигрой с отложенным затенением была Shrek , выпущенная для Xbox в 2001 году. [57] Около 2004 года начали появляться реализации на серийном графическом оборудовании. [58] Позже эта техника приобрела популярность для таких приложений, как видеоигры , и, наконец, стала мейнстримом примерно в 2008–2010 годах. [59]

Ссылки

  1. ^ Харгривз, Шон; Харрис, Марк (2004). «6800 лье под водой: отложенное затенение» (PDF) . Nvidia . Архивировано (PDF) из оригинала 22 ноября 2009 г. . Получено 6 января 2021 г. .
  2. ^ «Прямой рендеринг против отложенного рендеринга». 28 октября 2013 г.
  3. ^ ab Deering, Michael; Stephanie Winner; Bic Schediwy; Chris Duffy; Neil Hunt (1988). «Треугольный процессор и нормальный векторный шейдер: система VLSI для высокопроизводительной графики». ACM SIGGRAPH Computer Graphics . 22 (4): 21–30. doi :10.1145/378456.378468.
  4. ^ О'Доннелл, Юрий (18 июля 2011 г.). "Deferred Screen Space Directional Occlusion". kayru.org . Архивировано из оригинала 22 октября 2012 г.
  5. ^ Kayi, Celal Cansin. "Deferred Rendering in XNA 4" (PDF) . Linnaeus University . Архивировано (PDF) из оригинала 13 августа 2013 г. . Получено 6 января 2021 г. .
  6. ^ "SDK 9.51 – Featured Code Samples". Nvidia . 17 января 2007 г. Архивировано из оригинала 8 марта 2005 г. Получено 28 марта 2007 г.
  7. ^ Энгель, Вольфганг (16 марта 2008 г.). «Light Pre-Pass Renderer». Дневник графического программиста . Архивировано из оригинала 7 апреля 2008 г. Получено 6 января 2021 г.
  8. ^ "Учебник по отложенному затенению" (PDF) . Папский католический университет Рио-де-Жанейро. Архивировано из оригинала (PDF) 6 марта 2009 г. . Получено 14 февраля 2008 г. .
  9. ^ "MLAA: эффективное перемещение сглаживания с графического процессора на центральный процессор" (PDF) . Intel . Получено 2 декабря 2018 г. .
  10. ^ "Морфологическое сглаживание и топологическая реконструкция" (PDF) . Университет Гюстава Эйфеля . Архивировано (PDF) из оригинала 3 апреля 2012 г. . Получено 6 января 2021 г. .
  11. ^ "Архивная копия" (PDF) . Архивировано из оригинала (PDF) 25 ноября 2011 г. . Получено 7 ноября 2011 г. .{{cite web}}: CS1 maint: archived copy as title (link)
  12. ^ Chajdas, Matthäus G.; McGuire, Morgan; Luebke, David (1 февраля 2011 г.). «Сглаживание субпиксельной реконструкции». Nvidia . Архивировано из оригинала 27 января 2011 г. Получено 6 января 2021 г.
  13. ^ Андреев, Дмитрий (2011). «Сглаживание с другой точки зрения». and.intercon.ru . Архивировано из оригинала 4 апреля 2011 г. . Получено 6 января 2021 г. .
  14. Андреев, Дмитрий (4 марта 2011 г.). «Сглаживание с другой точки зрения (расширенные слайды GDC 2011)». and.intercon.ru . Архивировано из оригинала 5 апреля 2011 г. . Получено 6 января 2021 г. .
  15. ^ "Рендеринг в реальном времени · Методы отложенного освещения". realtimerendering.com . 2 июня 2009 г.
  16. ^ "Assassin's Creed III: The Redesigned Anvil Engine". www.GameInformer.com . Архивировано из оригинала 30 марта 2012 года.
  17. ^ "Разработка BioShock Infinite ориентирована на PS3 и использует технологию Uncharted 2". blorge.com . Архивировано из оригинала 3 октября 2011 г.
  18. ^ Chetan Jags (18 июля 2023 г.). «BlackMesa XenEngine: Часть 4 – Освещение и тени». chetanjags.wordpress.com . Получено 18 сентября 2023 г. .
  19. ^ "Tech Interview: Crackdown 2". Eurogamer.net . 26 июня 2010 г.
  20. ^ guest11b095 (14 мая 2009 г.). "A Bit More Deferred Cry Engine3". slideshare.net .{{cite web}}: CS1 maint: numeric names: authors list (link)
  21. ^ "Dead Space by Electronic Arts". NVIDIA . Получено 14 февраля 2008 г.
  22. ^ "Face-Off: Dead Space 2". Eurogamer . Получено 1 февраля 2010 г.
  23. ^ "Face-Off: Dead Space 3". Eurogamer . 18 февраля 2013 г. Получено 18 февраля 2013 г.
  24. ^ "Google Переводчик". google.com .
  25. ^ "GregaMan, Управление блогом". capcom-unity.com .
  26. ^ "Нормалы". Imgur .
  27. ^ "Техническое интервью: Halo: Reach". Eurogamer.net . 11 декабря 2010 г.
  28. ^ ab "Технический анализ: движок FOX в Metal Gear Solid 5". Eurogamer.net . 5 апреля 2013 г.
  29. ^ "Архивная копия" (PDF) . Архивировано из оригинала (PDF) 15 сентября 2011 г. . Получено 12 июля 2011 г. .{{cite web}}: CS1 maint: archived copy as title (link)
  30. ^ "Статья о создании Shift 2 Unleashed • Страница 2 • Eurogamer.net". Eurogamer.net . 14 мая 2011 г.
  31. ^ "StarCraft II Effects & techniques" (PDF) . AMD . Получено 9 июля 2012 г. .
  32. ^ "CGSociety Maintenance". cgsociety.org . Архивировано из оригинала 2 апреля 2015 г. Получено 12 июля 2011 г.
  33. ^ "Отложенный рендеринг « PlatinumGames Inc". platinumgames.com . Архивировано из оригинала 27 ноября 2010 г.
  34. ^ «Анализ Ghost of Tsushima: Графическая мощь PS4». gamingbolt.com .
  35. ^ Силард Шимон. «Интервью Frictional Games». playsomnia.com .
  36. ^ DICE (8 марта 2011 г.). «Отложенное затенение на основе SPU в BATTLEFIELD 3 для Playstation 3». slideshare.net .
  37. ^ "Valve Developer Wiki - Dota 2" . Получено 10 апреля 2012 г.
  38. ^ "Архивная копия" (PDF) . Архивировано из оригинала (PDF) 11 июля 2011 г. . Получено 12 июля 2011 г. .{{cite web}}: CS1 maint: archived copy as title (link)
  39. ^ Войны шахтеров 2081
  40. ^ "Техническое интервью: Интервью по Metro 2033 • Страница 2 • Eurogamer.net". Eurogamer.net . 25 февраля 2010 г.
  41. ^ "История - Игры электрических овец" . Получено 14 апреля 2011 г.
  42. Шишковцов, Олесь (7 марта 2005 г.). "GPU Gems 2: Глава 9. Отложенное затенение в STALKER". Nvidia . Получено 2 февраля 2011 г.
  43. ^ "Отложенное затенение в Tabula Rasa". NVIDIA. Архивировано из оригинала 3 февраля 2009 г. Получено 14 февраля 2008 г.
  44. ^ "Форумы пользователей Steam - Просмотреть отдельное сообщение - Снятие нагрузки PhysX с ЦП..." steampowered.com .
  45. ^ "Форумы пользователей Steam - Просмотр отдельного сообщения - Информация о рендеринге Trine 2 - сглаживание, перегрев, стерео, задержка ввода и т. д.". steampowered.com .
  46. ^ "CryENGINE 3 Specifications". Crytek GmbH. Архивировано из оригинала 27 марта 2009 г. Получено 27 марта 2009 г.
  47. ^ "Lighting you up in Battlefield 3". DICE . 3 марта 2011 г. Архивировано из оригинала (PDF) 25 августа 2011 г. Получено 15 сентября 2011 г.
  48. ^ "GameStart – Feature List". Архивировано из оригинала 2 декабря 2011 года.
  49. ^ "Infinity Development Journal – Deferred Lighting". I-Novae Studios. 3 апреля 2009 г. Архивировано из оригинала 26 января 2013 г. Получено 26 января 2011 г.
  50. ^ "BUILD: Отложенный рендеринг". MCV . 26 февраля 2009 г. Получено 8 апреля 2015 г.
  51. ^ "Torque 3D Development - Advanced Lighting (гибрид отложенного освещения)". 3 марта 2009 г. Получено 2 июля 2015 г.
  52. ^ Vosburgh, Ethan (9 сентября 2010 г.). "Unity 3 Feature Preview – Deferred Rendering". Unity Technologies . Получено 26 января 2011 г. .
  53. ^ "Unreal Engine 4 - Обзор рендеринга". Epic Games . Получено 6 июня 2015 г.
  54. ^ "Vision Engine 8.2 приносит 3D-технологии кросс-платформенным". 10 октября 2011 г. Архивировано из оригинала 16 ноября 2012 г. Получено 8 апреля 2015 г.
  55. ^ "Графические технологии Fallout 4". Bethesda Softworks . 4 ноября 2015 г. Получено 24 апреля 2020 г.
  56. ^ Сайто, Такафуми; Токиитиро Такахаси (1990). «Понятная визуализация трехмерных фигур». ACM SIGGRAPH Компьютерная графика . 24 (4): 197–206. дои : 10.1145/97880.97901.
  57. ^ Geldreich, Rich. "GDC 2004 Presentation on Deferred Lighting and Shading". Архивировано из оригинала 11 марта 2014 г. Получено 24 августа 2013 г.
  58. ^ "Deferred Shading" (PDF) . NVIDIA . Получено 28 марта 2007 г. .
  59. ^ Клинт, Джош. "Отложенный рендеринг в движке Leadwerks" (PDF) . Leadwerks. Архивировано из оригинала (PDF) 9 декабря 2008 г.