На первом проходе отложенного шейдера собираются только данные, необходимые для вычисления затенения. Позиции, нормали и материалы для каждой поверхности визуализируются в буфере геометрии ( G-буфер ) с использованием « визуализации в текстуру ». После этого пиксельный шейдер вычисляет прямое и непрямое освещение для каждого пикселя, используя информацию из буферов текстур в пространстве экрана .
Основным преимуществом отложенного затенения является отделение геометрии сцены от освещения. Требуется только один проход геометрии, и каждый источник света вычисляется только для тех пикселей, на которые он фактически влияет. Это дает возможность визуализировать множество источников света в сцене без значительного снижения производительности. [5] Существуют и другие заявленные преимущества этого подхода. К ним относятся более простое управление сложными ресурсами освещения, простота управления другими сложными ресурсами шейдеров и упрощение конвейера программного рендеринга.
Другим серьезным недостатком является сложность использования нескольких материалов. Можно использовать много разных материалов, но это требует хранения большего количества данных в 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]
Ссылки
^ Харгривз, Шон; Харрис, Марк (2004). «6800 лье под водой: отложенное затенение» (PDF) . Nvidia . Архивировано (PDF) из оригинала 22 ноября 2009 г. . Получено 6 января 2021 г. .
^ «Прямой рендеринг против отложенного рендеринга». 28 октября 2013 г.
^ 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.
^ О'Доннелл, Юрий (18 июля 2011 г.). "Deferred Screen Space Directional Occlusion". kayru.org . Архивировано из оригинала 22 октября 2012 г.
^ Kayi, Celal Cansin. "Deferred Rendering in XNA 4" (PDF) . Linnaeus University . Архивировано (PDF) из оригинала 13 августа 2013 г. . Получено 6 января 2021 г. .
^ "SDK 9.51 – Featured Code Samples". Nvidia . 17 января 2007 г. Архивировано из оригинала 8 марта 2005 г. Получено 28 марта 2007 г.
^ Энгель, Вольфганг (16 марта 2008 г.). «Light Pre-Pass Renderer». Дневник графического программиста . Архивировано из оригинала 7 апреля 2008 г. Получено 6 января 2021 г.
^ "Учебник по отложенному затенению" (PDF) . Папский католический университет Рио-де-Жанейро. Архивировано из оригинала (PDF) 6 марта 2009 г. . Получено 14 февраля 2008 г. .
^ "MLAA: эффективное перемещение сглаживания с графического процессора на центральный процессор" (PDF) . Intel . Получено 2 декабря 2018 г. .
^ "Морфологическое сглаживание и топологическая реконструкция" (PDF) . Университет Гюстава Эйфеля . Архивировано (PDF) из оригинала 3 апреля 2012 г. . Получено 6 января 2021 г. .
^ "Архивная копия" (PDF) . Архивировано из оригинала (PDF) 25 ноября 2011 г. . Получено 7 ноября 2011 г. .{{cite web}}: CS1 maint: archived copy as title (link)
^ Chajdas, Matthäus G.; McGuire, Morgan; Luebke, David (1 февраля 2011 г.). «Сглаживание субпиксельной реконструкции». Nvidia . Архивировано из оригинала 27 января 2011 г. Получено 6 января 2021 г.
^ Андреев, Дмитрий (2011). «Сглаживание с другой точки зрения». and.intercon.ru . Архивировано из оригинала 4 апреля 2011 г. . Получено 6 января 2021 г. .
↑ Андреев, Дмитрий (4 марта 2011 г.). «Сглаживание с другой точки зрения (расширенные слайды GDC 2011)». and.intercon.ru . Архивировано из оригинала 5 апреля 2011 г. . Получено 6 января 2021 г. .
^ "Рендеринг в реальном времени · Методы отложенного освещения". realtimerendering.com . 2 июня 2009 г.
^ "Assassin's Creed III: The Redesigned Anvil Engine". www.GameInformer.com . Архивировано из оригинала 30 марта 2012 года.
^ "Разработка BioShock Infinite ориентирована на PS3 и использует технологию Uncharted 2". blorge.com . Архивировано из оригинала 3 октября 2011 г.
^ Chetan Jags (18 июля 2023 г.). «BlackMesa XenEngine: Часть 4 – Освещение и тени». chetanjags.wordpress.com . Получено 18 сентября 2023 г. .
^ "Tech Interview: Crackdown 2". Eurogamer.net . 26 июня 2010 г.
^ guest11b095 (14 мая 2009 г.). "A Bit More Deferred Cry Engine3". slideshare.net .{{cite web}}: CS1 maint: numeric names: authors list (link)
^ "Dead Space by Electronic Arts". NVIDIA . Получено 14 февраля 2008 г.
^ "Face-Off: Dead Space 2". Eurogamer . Получено 1 февраля 2010 г.
^ "Face-Off: Dead Space 3". Eurogamer . 18 февраля 2013 г. Получено 18 февраля 2013 г.
^ "Google Переводчик". google.com .
^ "GregaMan, Управление блогом". capcom-unity.com .
^ "Нормалы". Imgur .
^ "Техническое интервью: Halo: Reach". Eurogamer.net . 11 декабря 2010 г.
^ ab "Технический анализ: движок FOX в Metal Gear Solid 5". Eurogamer.net . 5 апреля 2013 г.
^ "Архивная копия" (PDF) . Архивировано из оригинала (PDF) 15 сентября 2011 г. . Получено 12 июля 2011 г. .{{cite web}}: CS1 maint: archived copy as title (link)
^ "Статья о создании Shift 2 Unleashed • Страница 2 • Eurogamer.net". Eurogamer.net . 14 мая 2011 г.
^ "StarCraft II Effects & techniques" (PDF) . AMD . Получено 9 июля 2012 г. .
^ "CGSociety Maintenance". cgsociety.org . Архивировано из оригинала 2 апреля 2015 г. Получено 12 июля 2011 г.
^ "Отложенный рендеринг « PlatinumGames Inc". platinumgames.com . Архивировано из оригинала 27 ноября 2010 г.
^ «Анализ Ghost of Tsushima: Графическая мощь PS4». gamingbolt.com .
^ DICE (8 марта 2011 г.). «Отложенное затенение на основе SPU в BATTLEFIELD 3 для Playstation 3». slideshare.net .
^ "Valve Developer Wiki - Dota 2" . Получено 10 апреля 2012 г.
^ "Архивная копия" (PDF) . Архивировано из оригинала (PDF) 11 июля 2011 г. . Получено 12 июля 2011 г. .{{cite web}}: CS1 maint: archived copy as title (link)
^ "Техническое интервью: Интервью по Metro 2033 • Страница 2 • Eurogamer.net". Eurogamer.net . 25 февраля 2010 г.
^ "История - Игры электрических овец" . Получено 14 апреля 2011 г.
↑ Шишковцов, Олесь (7 марта 2005 г.). "GPU Gems 2: Глава 9. Отложенное затенение в STALKER". Nvidia . Получено 2 февраля 2011 г.
^ "Отложенное затенение в Tabula Rasa". NVIDIA. Архивировано из оригинала 3 февраля 2009 г. Получено 14 февраля 2008 г.
^ "Форумы пользователей Steam - Просмотреть отдельное сообщение - Снятие нагрузки PhysX с ЦП..." steampowered.com .
^ "Форумы пользователей Steam - Просмотр отдельного сообщения - Информация о рендеринге Trine 2 - сглаживание, перегрев, стерео, задержка ввода и т. д.". steampowered.com .
^ "CryENGINE 3 Specifications". Crytek GmbH. Архивировано из оригинала 27 марта 2009 г. Получено 27 марта 2009 г.
^ "Lighting you up in Battlefield 3". DICE . 3 марта 2011 г. Архивировано из оригинала (PDF) 25 августа 2011 г. Получено 15 сентября 2011 г.
^ "GameStart – Feature List". Архивировано из оригинала 2 декабря 2011 года.
^ "Infinity Development Journal – Deferred Lighting". I-Novae Studios. 3 апреля 2009 г. Архивировано из оригинала 26 января 2013 г. Получено 26 января 2011 г.
^ "BUILD: Отложенный рендеринг". MCV . 26 февраля 2009 г. Получено 8 апреля 2015 г.
^ "Torque 3D Development - Advanced Lighting (гибрид отложенного освещения)". 3 марта 2009 г. Получено 2 июля 2015 г.
^ Vosburgh, Ethan (9 сентября 2010 г.). "Unity 3 Feature Preview – Deferred Rendering". Unity Technologies . Получено 26 января 2011 г. .
^ "Unreal Engine 4 - Обзор рендеринга". Epic Games . Получено 6 июня 2015 г.
^ "Vision Engine 8.2 приносит 3D-технологии кросс-платформенным". 10 октября 2011 г. Архивировано из оригинала 16 ноября 2012 г. Получено 8 апреля 2015 г.
^ "Графические технологии Fallout 4". Bethesda Softworks . 4 ноября 2015 г. Получено 24 апреля 2020 г.