Отложенное затенение
этой статьи Начальный раздел может быть слишком коротким, чтобы адекватно суммировать ключевые моменты . ( июль 2013 г. ) |




В области компьютерной 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] ДЛАА [13] (используется в Star Wars: The Force Unleashed II ) и пост-MSAA (используется в Crysis 2 как решение для сглаживания по умолчанию). Хотя это не метод сглаживания краев, временное сглаживание (используемое в Halo: Reach и Unreal Engine ) также может помочь придать краям более гладкий вид. [14] В DirectX 10 появились функции, позволяющие шейдерам получать доступ к отдельным сэмплам в целях рендеринга с множественной выборкой (и буферам глубины в версии 10.1), предоставляя пользователям этого API доступ к аппаратному сглаживанию при отложенном затенении. Эти функции также позволяют им правильно применять сопоставление яркости HDR к сглаженным краям, тогда как в более ранних версиях API любые преимущества сглаживания могли быть потеряны.
Отложенное освещение [ править ]
![]() | этого раздела Фактическая точность оспаривается . ( Август 2016 г. ) |
Отложенное освещение (также известное как предварительный проход света) — это модификация отложенного затенения. [15] В этом методе используется три прохода вместо двух при отложенном затенении. При первом проходе по геометрии сцены в цветовой буфер записываются только нормали и коэффициент расширения зеркала. «Отложенный» проход экранного пространства затем отдельно накапливает данные о рассеянном и зеркальном освещении, поэтому последний проход необходимо выполнить над геометрией сцены, чтобы вывести окончательное изображение с попиксельной затенением. Очевидным преимуществом отложенного освещения является резкое уменьшение размера G-буфера. Очевидная цена — необходимость визуализировать геометрию сцены дважды, а не один раз. Дополнительные затраты заключаются в том, что отложенный проход при отложенном освещении должен выводить рассеянное и зеркальное освещение отдельно, тогда как отложенный проход при отложенном затенении должен выводить только одно объединенное значение яркости.
За счет уменьшения размера G-буфера этот метод позволяет частично преодолеть один серьезный недостаток отложенного затенения — несколько материалов. Еще одна проблема, которую можно решить, — MSAA . Отложенное освещение можно использовать с MSAA на оборудовании DirectX 9. [ нужна ссылка ]
Отложенное освещение в коммерческих играх [ править ]
Использование этой техники в видеоиграх возросло из-за контроля, который она обеспечивает с точки зрения использования большого количества динамических источников света и снижения сложности необходимых инструкций шейдера. Некоторые примеры игр, использующих отложенное освещение:
- Алан Уэйк
- Кредо убийцы III [16]
- БиоШок Инфинит [17]
- Черная Меза [18]
- Размытие
- Край
- Разгон и разгон 2 [19]
- Крайзис 2 [20]
- Мертвое пространство , [21] Мертвый космос 2 [22] и Мертвый космос 3 [23]
- Deus Ex: Человеческая революция [24]
- Догма Дракона [25]
- Войны гильдий 2 [26]
- Halo: Достичь [27]
- InFamous и InFamous 2
- ЛиттлБольшаяПланета
- Metal Gear Solid V: Ground Zeroes
- Metal Gear Solid V: Призрачная боль [28]
- Красное мертвое искупление
- Серия сопротивления [29]
- Рошар
- Сдвиг 2: Высвобождение [30]
- Старкрафт II [31]
- Неизведанное и Неизведанное 2 [32]
- Побеждать [33]
- Призрак Цусимы [34]
Отложенное затенение в коммерческих играх [ править ]
По сравнению с отложенным освещением этот прием не очень популярен. [ нужна ссылка ] из-за большого размера памяти и требований к пропускной способности, особенно на консолях седьмого поколения, где размер графической памяти и пропускная способность ограничены и часто являются узкими местами.
- Амнезия: Темное спуск [35]
- Поле битвы 3 [36]
- Дота 2 [37]
- Подземелья
- Цифровой боевой симулятор (DCS) World 2.5
- Гранд Крафт Авто IV
- Киллзона 2 и Киллзона 3 [38]
- Мафия II
- Шахтерские войны 2081 [39]
- Метро 2033 [40]
- Рифт
- Шрек [41]
- Splinter Cell: Осуждение
- Серия игр СТАЛКЕР : Тень Чернобыля , Чистое небо и Зов Припяти [42]
- Табула Раса [43]
- Трин [44]
- Трина 2 [45]
- Да здравствует Пиньята
Игровые движки с отложенным затенением рендеринга или методами
- НаковальняСледующий
- Хромовый движок
- CryEngine 3 [46]
- Фокс Двигатель [28]
- Обморожение 2 [47]
- Начало игры [48]
- Игровой движок Haemimont (HGE)
- Я-Новый [49]
- Лидверкс
- Платформа МТ
- Усовершенствованный игровой движок Rockstar [50]
- Крутящий момент 3D [51]
- Единство [52]
- Нереальный Движок 4 [53]
- Зрение [54]
- Creation Engine для Fallout 4 и Skyrim SE [55]
- Fusion Engine (ранний Illusion Engine) в Mafia III и Mafia: Definitive Edition.
История [ править ]
Идея отложенного затенения была первоначально предложена Майклом Дирингом и его коллегами в статье. [3] опубликованная в 1988 году под названием «Треугольный процессор и нормальный векторный шейдер: система СБИС для высокопроизводительной графики» . Хотя в статье никогда не используется слово «отложенный», вводится ключевое понятие; каждый пиксель затеняется только один раз после разрешения глубины. Отложенное затенение в том виде, в котором мы его знаем сегодня, с использованием G-буферов было представлено в статье Сайто и Такахаши в 1990 году. [56] хотя они тоже не используют слово «отложенный». Первой отложенной затененной видеоигрой была Shrek , игра для Xbox , выпущенная в 2001 году. [57] Примерно в 2004 году начали появляться реализации на обычном графическом оборудовании. [58] Позже этот метод приобрел популярность в таких приложениях, как видеоигры , и, наконец, стал массовым примерно в 2008–2010 годах. [59]
Ссылки [ править ]
- ^ Харгривз, Шон; Харрис, Марк (2004). «6800 лье под водой: отложенное затенение» (PDF) . Нвидиа . Архивировано (PDF) из оригинала 22 ноября 2009 г. Проверено 6 января 2021 г.
- ^ «Прямой рендеринг против отложенного рендеринга» .
- ↑ Перейти обратно: Перейти обратно: а б Диринг, Майкл; Стефани Виннер; Бик Шедиви; Крис Даффи; Нил Хант (1988). «Треугольный процессор и обычный векторный шейдер: система СБИС для высокопроизводительной графики». ACM SIGGRAPH Компьютерная графика . 22 (4): 21–30. дои : 10.1145/378456.378468 .
- ^ О'Доннелл, Юрий (18 июля 2011 г.). «Отложенная направленная окклюзия экранного пространства» . Кайру.орг . Архивировано из оригинала 22 октября 2012 года.
- ^ Кайи, Джелал Кансин. «Отложенный рендеринг в XNA 4» (PDF) . Университет Линнея . Архивировано (PDF) из оригинала 13 августа 2013 г. Проверено 6 января 2021 г.
- ^ «SDK 9.51 — Рекомендуемые примеры кода» . Нвидиа . 17 января 2007. Архивировано из оригинала 8 марта 2005 года . Проверено 28 марта 2007 г.
- ^ Энгель, Вольфганг (16 марта 2008 г.). «Световой предварительный рендерер» . Дневник графического программиста . Архивировано из оригинала 7 апреля 2008 года . Проверено 6 января 2021 г.
- ^ «Учебное пособие по отложенному затенению» (PDF) . Папский католический университет Рио-де-Жанейро. Архивировано из оригинала (PDF) 6 марта 2009 г. Проверено 14 февраля 2008 г.
- ^ «MLAA: эффективный перенос сглаживания с графического процессора на центральный процессор» (PDF) . Интел . Проверено 2 декабря 2018 г.
- ^ «Морфологическое сглаживание и топологическая реконструкция» (PDF) . Университет Гюстава Эйфеля . Архивировано (PDF) из оригинала 3 апреля 2012 г. Проверено 6 января 2021 г.
- ^ «Архивная копия» (PDF) . Архивировано из оригинала (PDF) 25 ноября 2011 года . Проверено 7 ноября 2011 г.
{{cite web}}
: CS1 maint: архивная копия в заголовке ( ссылка ) - ^ Хайдас, Маттеус Г.; Макгуайр, Морган; Любке, Дэвид (1 февраля 2011 г.). «Сглаживание субпиксельной реконструкции» . Нвидиа . Архивировано из оригинала 27 января 2011 года . Проверено 6 января 2021 г.
- ^ Андреев, Дмитрий (2011). «Сглаживание с другой точки зрения» . и.intercon.ru . Архивировано из оригинала 4 апреля 2011 года . Проверено 6 января 2021 г.
- ^ Андреев Дмитрий (4 марта 2011 г.). «Сглаживание с другой точки зрения (расширенные слайды GDC 2011)» . и.intercon.ru . Архивировано из оригинала 5 апреля 2011 года . Проверено 6 января 2021 г.
- ^ «Рендеринг в реальном времени · Отложенное освещение» . Realtimerendering.com .
- ^ «Assassin's Creed III: переработанный двигатель Anvil Engine» . www.GameInformer.com .
- ^ «Разработка BioShock Infinite ориентирована на PS3 и использует технологию Uncharted 2» . blorge.com . Архивировано из оригинала 3 октября 2011 года.
- ^ Четан Джагс (18 июля 2023 г.). «BlackMesa XenEngine: Часть 4 – Освещение и тени» . chetanjags.wordpress.com . Проверено 18 сентября 2023 г.
- ^ «Техническое интервью: Разгон 2» . Еврогеймер.нет . 26 июня 2010 г.
- ^ гость11b095. «Немного больше отложенного движка Cry3» . SlideShare.net .
{{cite web}}
: CS1 maint: числовые имена: список авторов ( ссылка ) - ^ «Мертвое пространство» от Electronic Arts . NVIDIA . Проверено 14 февраля 2008 г.
- ^ «Вбрасывание: Мертвый космос 2» . Еврогеймер . Проверено 1 февраля 2010 г.
- ^ «Вбрасывание: Мертвый космос 3» . Еврогеймер . Проверено 18 февраля 2013 г.
- ^ «Гугл-переводчик» . гугл.com .
- ^ «GregaMan, управляй блогом» . capcom-unity.com .
- ^ «Нормальные» . Имгур .
- ^ «Техническое интервью: Halo: Reach» . Еврогеймер.нет . 11 декабря 2010 г.
- ↑ Перейти обратно: Перейти обратно: а б «Технический анализ: двигатель FOX в Metal Gear Solid 5» . Еврогеймер.нет . 5 апреля 2013 г.
- ^ «Архивная копия» (PDF) . Архивировано из оригинала (PDF) 15 сентября 2011 года . Проверено 12 июля 2011 г.
{{cite web}}
: CS1 maint: архивная копия в заголовке ( ссылка ) - ^ «Статья о создании Shift 2 Unleashed • Страница 2 • Eurogamer.net» . Еврогеймер.нет . 14 мая 2011 г.
- ^ «Эффекты и приемы StarCraft II» (PDF) . АМД . Проверено 9 июля 2012 г.
- ^ «Поддержание общества CGSociety» . cgsociety.org . Архивировано из оригинала 2 апреля 2015 года . Проверено 12 июля 2011 г.
- ^ «Отложенный рендеринг «PlatinumGames Inc» . platinumgames.com . Архивировано из оригинала 27 ноября 2010 года.
- ^ «Анализ Призрака Цусимы: мощный графический процессор для PS4» . www.gamingbolt.com .
- ^ Силард Шимон. «Интервью Frictional Games» . playsomnia.com .
- ^ КОСТИ. «Отложенное затенение на основе SPU в BATTLEFIELD 3 для PlayStation 3» . SlideShare.net .
- ^ «Вики разработчика Valve — Dota 2» . Проверено 10 апреля 2012 г.
- ^ «Архивная копия» (PDF) . Архивировано из оригинала (PDF) 11 июля 2011 года . Проверено 12 июля 2011 г.
{{cite web}}
: CS1 maint: архивная копия в заголовке ( ссылка ) - ^ Шахтерские войны 2081
- ^ «Техническое интервью: Интервью Metro 2033 • Страница 2 • Eurogamer.net» . Еврогеймер.нет . 25 февраля 2010 г.
- ^ «История – игры с электрическими овцами» . Проверено 14 апреля 2011 г.
- ^ Шишковцов, Олесь (7 марта 2005 г.). "GPU Gems 2: Глава 9. Отложенное шейдинг в СТАЛКЕРЕ" . Нвидиа . Проверено 2 февраля 2011 г.
- ^ «Отложенное затенение в Tabula Rasa» . NVIDIA. Архивировано из оригинала 3 февраля 2009 года . Проверено 14 февраля 2008 г.
- ^ «Форумы пользователей Steam — Просмотр одного сообщения — Снятие нагрузки с процессора Physx…» steampowered.com .
- ^ «Форумы пользователей Steam — Просмотр отдельного сообщения — Информация о рендеринге Trine 2 — сглаживание, перегрев, стерео, задержка ввода и т. д.» . Steampowered.com .
- ^ «Характеристики CryENGINE 3» . Крайтек ГмбХ. Архивировано из оригинала 27 марта 2009 года . Проверено 27 марта 2009 г.
- ^ «Осветим вас в Battlefield 3» . КОСТИ . 3 марта 2011 г. Архивировано из оригинала (PDF) 25 августа 2011 г. . Проверено 15 сентября 2011 г.
- ^ «GameStart – Список функций» . Архивировано из оригинала 2 декабря 2011 года.
- ^ «Журнал Infinity Development – отложенное освещение» . Я-Нова Студии. 3 апреля 2009 года. Архивировано из оригинала 26 января 2013 года . Проверено 26 января 2011 г.
- ^ «СТРОИТЕЛЬСТВО: Отложенный рендеринг» . 26 февраля 2009 года . Проверено 8 апреля 2015 г.
- ^ «Разработка Torque 3D — усовершенствованное освещение (гибрид отложенного освещения)» . 3 марта 2009 года . Проверено 2 июля 2015 г.
- ^ Восбург, Итан (9 сентября 2010 г.). «Предварительный просмотр функций Unity 3 — отложенный рендеринг» . Юнити Технологии . Проверено 26 января 2011 г.
- ^ «Unreal Engine 4 — Обзор рендеринга» . Эпические игры . Проверено 6 июня 2015 г.
- ^ «Vision Engine 8.2 обеспечивает кроссплатформенность 3D-технологий» . 10 октября 2011. Архивировано из оригинала 16 ноября 2012 года . Проверено 8 апреля 2015 г.
- ^ «Графическая технология Fallout 4» . Бетесда Софтворкс . 4 ноября 2015 г. Проверено 24 апреля 2020 г.
- ^ Сайто, Такафуми; Токиитиро Такахаши (1990). «Понятная визуализация трехмерных фигур». ACM SIGGRAPH Компьютерная графика . 24 (4): 197–206. дои : 10.1145/97880.97901 .
- ^ Гелдрейх, Рич. «Презентация GDC 2004 по отложенному освещению и затенению» . Архивировано из оригинала 11 марта 2014 года . Проверено 24 августа 2013 г.
- ^ «Отложенное затенение» (PDF) . NVIDIA . Проверено 28 марта 2007 г.
- ^ Клинт, Джош. «Отложенный рендеринг в Leadwerks Engine» (PDF) . Лидверкс. Архивировано из оригинала (PDF) 9 декабря 2008 г.