Как работает затенение в компьютерных играх
С появлением 3D-игр у их создателей серьезно прибавилось проблем: о сглаживании мы уже говорили, также мы говорили и о фильтрации текстур. Теперь же поговорим о еще одном эффекте, который позволяет серьезно улучшить реалистичность картинки — о Ambient Occlusion (AO), или о затенении.
В оптике можно выделить три простых градации освещенности — тень (источник света не виден), полутень (источник света виден частично) и освещенное место (источник света виден полностью). Казалось бы — все просто, рассчитать границы тени и полутени можно в два счета с помощью обыкновенных лучей. Однако полученная в результате картинка наводит на мысль, что мы где-то что-то забыли:
Таких черных теней не бывает (ну на Земле по крайней мере), так что сразу становится очевидным, что мы забыли — рассеяние света: суть в том, что в реальном времени фотоны могут отражаться от различных поверхностей и в итоге попадать туда, куда напрямую фотоны от источника не долетают: именно поэтому в тени хоть и темнее, чем на свету, но не черным черно. На Земле таким «рассеивателем» фотонов выступает сама атмосфера.
Но тут возникает вопрос — а как это рассчитать-то? Увы — алгоритма, дающего 100% точное рассеяние света в real-time, нет, однако есть множество хорошо приближенных к реальности алгоритмов, отлаженных настолько, что они спокойно используются в видеоиграх.
Для начала — общая для всех алгоритмов теория: можно ввести так называемую среднюю освещенность всей сцены, своеобразную аппроксимацию непрямого освещения. Но вот проблема в том, что в местах, где есть тень, такая аппроксимация будет давать повышенную яркость. Поэтому можно несколько усложнить ее — снижать яркость в тех местах, куда отраженному свету труднее добраться. То есть для каждого фрагмента сцены мы находим так называемый заграждающий фактор: количество свободных «путей» для фотона деленное на все количество путей фотона до данного участка, и на основе этих данных и средней яркости сцены можно рассчитать яркость конкретного участка.
Однако тут мы получаем очередную проблему — отрисовка геометрии происходит постепенно, поэтому заграждающий фактор также в процессе отрисовки может серьезно меняться. Можно, конечно, рассчитать AO на этапе загрузки сцены, но тогда затенение не коснется динамических объектов (персонажей, машин и т.д.) — а это нехорошо. И тут приходит идея использовать для отрисовки затенения экранное пространство (Screen Space), что в итоге выливается в простейший алгоритм AO — SSAO.
SSAO
Этот алгоритм появился еще в Crysis 10 лет назад. Его суть проста: после построения геометрии у нас остается Z-буфер, или буфер глубины, который включает в себя абсолютно всю информацию о геометрии сцены — а значит никаких проблем сделать AO нет.
Хотя, конечно, кого я обманываю — проблемы есть, и самая серьезная — недостаточная производительность современных видеокарт: для того, чтобы получить более-менее неплохую карту затенения, для каждого фрагмента сцены нужно обсчитывать порядка 200-250 направлений, что позволяет «закопать» любой GPU. Поэтому делается хитрее — используется 8-32 «луча», направленные на выбранный фрагмент сцены, которые каждый раз поворачиваются на случайное значение. В итоге получается терпимое качество картинки с не очень большими затратами на расчеты:
В дальнейшем алгоритм был доработан — стали использоваться карты нормалей, что снизило сложность вдвое и позволило в итоге вдвое увеличить число выборок. Ну и финальный штрих — стали использовать размытие, дабы сгладить шум от случайных выборок.
HBAO и HBAO+
Nvidia не была бы Nvidia, если бы не стала развивать затенение дальше, представив в 2008 году HBAO — Horizon Based Ambient Occlusion. От SSAO это затенение отличалось тем, что оно основано на физической модели, где аппроксимируется интеграл освещенности фрагмента сцены со значениями выборки буфера глубины. Итоговое качество оказывается выше SSAO при большом числе выборок, но мы опять же упираемся в производительность. Поэтому HBAO рендерится обычно в более низком разрешении, что приводит к мерцанию картинки.
Проблема мерцания была исправлена в HBAO+ простым методом, который сейчас активно использует Sony в 4К играх на PlayStation 4 Pro: для рассчета HBAO+ используется шахматный рендеринг, то есть для обработки затенения используется часть предыдущего кадра и половина нового: это требует меньше затрат GPU, но при этом позволяет рендерить затенение в исходном разрешении, что и убирает мерцание.
HDAO
AMD в стороне не остались, и стали использовать собственное затенение (которое, к слову, также работает и на Nvidia) — HDAO (High Definition AO). Увы — AMD не делится алгоритмом, однако известно, что в его основе лежит Gather4 — технология, которая собирает 4 текселя в один регистр. То есть, как и с HBAO, по сути происходит рендеринг в пониженном разрешении. В итоге, в среднем картинка с HBAO и HDAO сравнима по качеству, но опять же — все достаточно сильно зависит от игры: к примеру, в Far Cry 3 с HDAO трава выглядит красивее:
VXAO
С выходом DX12 Nvidia представила принципиально новое затенение — VXAO (Voxel Accelerated Ambient Occlusion). Его суть в том, что оно работает уже не с пикселями и текселями (то есть 2D-объектами), а с вокселями — аналогом пикселя в 3D. И теперь мы используем не Z-буфер, а воксельное построение сцены, поэтому алгоритм состоит из трех пунктов: вокселизация, постобработка вокселей и трассировка конуса. Вокселизация выполняется путем рендеринга треугольных сеток в трехмерную текстуру, и поэтому ее производительность сильно зависит от общего количества треугольников, размера этих треугольников и количества вызовов рисования, необходимых для их рендеринга. Постобработка объединяет проходы, такие как очистка, фильтрация и понижающие выборки вокселей, а ее производительность зависит от общего количества вокселей, созданных во время вокселизации. Типичное время после обработки составляет 0,5 — 1,5 мс. И, наконец, трассировка конуса выполняется в пространстве экрана, поэтому его производительность зависит от разрешения экрана и скорости затенения. Итоговое качество картинки оказывается в куда лучше, чем с HBAO+:
На этом все. Советы для игроков простые: если компьютер хорошо тянет игру без AO, то можно попробовать включить SSAO или HBAO — обычно это снижает fps не более чем на 10%. Если же и с ними производительность отличная — можно попробовать HBAO+ и HDAO. Ну и для самых топовых видеокарт современности можно порекомендовать набирающее обороты VXAO — оно крайне требовательно к ресурсам (в том числе и к видеопамяти), поэтому даже в FHD оно будет доступно лишь пользователям старших Nvidia GTX 900ой и 1000ой линейки, а также владельцам старших AMD RX, Fury и Vega.
www.iguides.ru
Технология NVIDIA VXAO в Rise of the Tomb Raider. Сравнение с HBAO+ и SSAO
Недавно игра Rise of the Tomb Raider получила обновление, которое добавило поддержку нового затенения по технологии NVIDIA VXAO и поддержку DirectX 12. Мы рассмотрим особенности VXAO, сравним качество этого затенения с другими режимами и проведем сравнительное тестирование, чтобы выявить ресурсоемкость каждого метода Ambient Occlusion.
В отдельной статье уже рассмотрены особенности работы HBAO+ в Rise of the Tomb Raider. По итогам сравнения хорошо видно, что это затенение позволяет лучше выделить отдельные детали окружения и неровности рельефа. VXAO является еще более качественным вариантом. Этот метод Ambient Occlusion (AO) позволяет реализовать еще более точное затенение с учетом освещенности и влияния объектов друг на друга. VXAO является частью технологии объемного освещения VXGI (Voxel Global Illumination), которая корректно учитывает прямой и отраженной свет. В VXGI сцена разбивается на вексельную сетку, а потом осуществляется трассировка сцены с учетом разных параметров для каждого сегмента. Кроме корректного моделирования освещенности каждого участка при таком методе получается более точное затенение Ambient Occlusion. Наглядный пример ниже.
С обычным SSAO имеют место некорректные тени вокруг астронавта и прямо под корпусом посадочного модуля. Эти ореолы помогают оттенить объекты на общем фоне. Но объекты удалены от поверхности, таких теней не может быть. С воксельным AO их и нет, есть тени под опорами, которые стоят на земле. При этом точнее ложатся тени на мелкие элементы корпуса, лучше их выделяя.
Чтобы в полной мере оценить преимущества нового алгоритма затенения NVIDIA мы проведем несколько полных сравнений в разных режимах, и отдельно сконцентрируемся на сравнении HBAO+ и VXAO.
За основу взята конфигурация настроек максимального качества графики. По умолчанию этот профиль нам предлагает режим HBAO+, но мы вначале отключим это затенение, а потом будем поэтапно включать разные варианты AO (параметр «преграждение окружающего света»).
При включении SSAO мы видим, как однотонные тени на снегу становятся сложнее. Усиливаются темные зоны под краном и в месте стыка каменных глыб.
Сложный рельеф неровного снега просматривается еще лучше благодаря оттеснению его неровностей в HBAO+. Темная зона камней в разломе перед героиней еще темнее. В правой части сцены просматривается неравномерное затенение здания, в глубине появляются более темные зоны.
VXAO продолжает отмеченную тенденцию. Тень под краном еще интенсивнее, немного возрастает интенсивность теней в районе деревьев справа. Темнее зона прямо под героиней.
Посмотрим на другой пример.
SSAO создает дополнительные полутени в расщелинах скалы на заднем плане, появляется тень от растительности на переднем плане. HBAO+ усиливает выделение неровней на поверхности скалы. Появляется тень на поваленном дереве слева и тень в нижней части дерева справа. Усиливаются тени от растительности. В итоге все объекты на переднем плане приобретают дополнительный объем. VXAO уже глобально не меняет ситуацию. Разница с HBAO+ видна только по тени у обрыва в нижней правой части кадра. Также обратите внимание на зеленую зону под поваленным деревом, с VXAO ее неровности выделяются чуть лучше.
Пример другой сцены показывает кардинальную разницу между режимом без AO и с SSAO. На втором скриншоте темнеют слабо освещенные зоны пещеры по бокам, появляются легкие тени вокруг камней. С HBAO+ выделение этих камней еще лучше, тени даже помогают выделить отдельные элементы этих камней. Усиливаются темные зоны за опорами слева, что лучше выделяет эти элементы. Нечто подобное заметно на поверхности пещеры справа.
VXAO глобальных изменений снова не приносит. Можно отметить только усиление некоторых темных зон в правой части и определенное изменение в затенении камней, которые находятся в этой зоне. Обратите внимание на нижнюю их часть, с VXAO она темнее. Мелочь, но это придает дополнительное ощущение объема этим элементам.
По итогам сравнения скриншотов в трех сценах мы видим, что VXAO дает картинку близкую к HBAO+. Можно отметить дополнительное усиление некоторых теней в слабоосвещенных зонах. Еще один такой пример ниже.
На поверхность скалы за выступом слева попадает меньше света. С VXAO эта зона темнее в сравнении с HBAO+. И наиболее интенсивное затенение между расщелинами и кустами.
Но визуальные изменения не ограничиваются дополнительным усилением теней. Нижнее сравнение позволит раскрыть и некоторые другие особенности.
В пещере один источник освещения — солнечные лучи пробиваются сквозь щель в потолке, частично освещая помещение. Обратите внимание на правую зону обоих скриншотов. С HBAO+ есть слабый желтоватый оттенок на колонне, хотя она вне освещаемой зоны. С VXAO вся зона все конуса света чуть темнее и холоднее. Еще лучше видна разница по сравнению тел в лучах света. С HBAO+ они все ярко освещены, как и камни вокруг. VXAO погружает обратную сторону камней в тень, ведь лучи на них падают с другой стороны, и нам видна именно темная сторона. Тело на копье становится неравномерно освещенным, вверху светлее, внизу темнее. Другой объем для сравнения — ближний скелет, который прислонен к цилиндрическому куску обрушившейся конструкции. Этот элемент должен укрывать скелет от света, но с HBAO+ он слегка освещен и имеет характерный желтоватый оттенок. VXAO усиливает затенение скелета. Возле этого скелета частично освещенная грань какой-то опоры у стены, которая тоже повернута к нам и закрыта от прямого света. Она не может быть такой яркой, и VXAO тоже это исправляет.
В итоге видно, что VXAO не просто усиливает тени и расширяет затененную зону, а корректнее воссоздает реальную картину затенения с учетом направления лучей света.
Но еще более интересный эффект мы получим при резком изменении интенсивности освещения. Ниже приведено три скриншота при разных режимах AO в сцене, где яркий слепящий свет пробивается сквозь щели внутрь темного помещения.
Между SSAO и HBAO+ нет кардинальной разницы в этой сцене. Второй вариант усиливает затенение дальнего угла и зоны справа от шкафчика. Меняется освещенность боковых граней досок слева. VXAO же резко меняет все изображение. Яркие пятна света на полу и куртке героини становятся ярче. Ярче изображение между щелями досок, оно превращается в яркое световое пятно. При этом дальний угол помещения и тени на том же шкафчике еще темнее.
В итоге мы имеет более резкий перепад между темными и светлыми зонами и более явное ощущение яркого света, который пробивается через отверстия. Конечное изображение ближе к нашему реальному восприятию такого света в темном помещении. Эффект адаптации зрения к резким перепадам освещения более достоверный.
В качестве дополнительного наглядного материала вы можете посмотреть аналогичное сравнение режимов AO в видеоформате.
После визуального сравнения проведем тестирование производительности в разных режимах.
Тестовый стенд
- процессор: Intel Core i7-3930K @4,4 ГГц
- материнская плата: ASUS Rampage IV Formula
- видеокарта: GeForce GTX 980 Ti
- память: Kingston KHX2133C11D3K4/16GX, 1866 МГц, 4×4 ГБ
- жесткий диск: Hitachi HDS721010CLA332, 1 TБ
- блок питания: Seasonic SS-750KM
- операционная система: Windows 7 Ultimate SP1 x64
- драйвер GeForce: NVIDIA GeForce 364.51
Тестирование проводилось путем переигрывания небольшой прогулки по локации геотермальной долины — одного из самых тяжелых для видеокарт мест в игре.
Изначально выбран профиль качества «Очень высокого», менялись только режимы AO. Сглаживание FXAA, разрешение 1920×1080, DirectX 11.
SSAO и HBAO слабо сказываются на общей производительности, снижая частоту кадров лишь на несколько процентов. При этом между двумя режимами можно провести знак примерного равенства, с HBAO+ на топовой видеокарте NVIDIA минимальный fps даже чуть лучше. Это немного отличается от старых результатов, где производительность SSAO на GeForce GTX 980 Ti все же была чуть выше. Это говорит о лучшей оптимизации в новом видеодрайвере, и о том, что программисты NVIDIA постоянно работают над улучшением быстродействия своих продуктов.
VXAO уже дается с заметными потерями производительности. Разница с HBAO+ на уровне 22-26%.
Выводы
По итогам знакомства с NVIDIA VXAO в Rise of the Tomb Raider можно констатировать, что это самый прогрессивный алгоритм Ambient Occlusion. VXAO добавляет дополнительные тени и меняет картину затенения в соответствии с реальной освещенностью объектов. Это позволяет лучше выделить некоторые детали окружения и воссоздать ощущение направленного света. Но конечный эффект зависит от освещения в сцене, поэтому не всегда VXAO даст картинку кардинально отличающуюся от HBAO+. Особенно впечатляет, что VXAO улучшает восприятие света в сценах с резкими перепадами освещенности. Слепящий яркий свет, контрастирующий с темным окружением, выглядит более достоверно, лучше отражая особенности восприятия таких сцен человеческим глазом. То есть влияние VXAO более глобально, оно не ограничивается одной лишь проработкой теней. К сожалению, этот метод AO серьезно сказывается на производительности. Если вы обладатель топовой видеокарты, то смело включайте VXAO. Владельцы более простых графических карт могут ограничиться HBAO+, который лучше обычного SSAO при том же уровне ресурсоемкости. В итоге обе технологии NVIDIA GameWorks позволяют улучшить изображение и расширить визуальные впечатления от Rise of the Tomb Raider, а выбор метода AO определяется мощностью вашей видеокарты.
nvplay.ru
Как HBAO+ улучшает картинку в Rise of the Tomb Raider
Rise of the Tomb Raider радует нас динамичным геймплеем и отличной графикой. Освещение и правильные тени играют важную роль в восприятии картинки. И в данной статье мы рассмотрим один из этих аспектов, связанный с технологией затенения NVIDIA HBAO+.
Игра Rise of the Tomb Raider предлагает несколько параметров настроек, связанных с тенями. Качество теней регулирует детализацию теней, которые отбрасываются объектами. Есть регулировки для управления эффектом мягких теней. А есть еще пункт, который называется «Преграждение окружающего света». Он отвечает на технологию Ambient Occlusion (AO). Это специальная модель затенения учитывает влияние объектов друг на друга, усиливая тени в слабо освещенных местах. Rise of the Tomb Raider поддерживает обычный режим Ambient Occlusion, который, скорее всего, отвечает методу SSAO. При выборе максимального качества игра предлагает более продвинутый вариант HBAO+. Мы сравним качество изображения при разных режимах и проведем тестирование, которое покажет влияние каждого варианта AO на общую производительность.
Возьмем за основу предустановки максимального качества графики в разрешении 1920×1080 при сглаживании SMAA. Вначале отключим AO, потом будем постепенно включать разные режимы и сравнивать изображение.
Первый же пример демонстрирует значительную разницу между изображением без AO и после включения SSAO. Второй вариант добавляет тени в расщелинах камней, что усиливает ощущение неровного рельефа на ближних и дальних склонах. Обратите внимание, как темнеем склон с висящим грузовиком. Даже куртка на спине Лары становится неоднородно освещенной, на ней появляются тени. Все это добавляет ощущения глубины конечному изображению.
HBAO+ усиливает эффект. Тени на склонах и камнях еще интенсивнее. В результате лучше просматривается неравномерная рельефная структура дальних горных склонов в правой части изображения. И даже на снегу проявляются небольшие бугорки. Обратите внимание на ели — верхние ветви слегка затеняют нижние.
Давайте проведем сравнение в другой сцене. Камера направлена в сторону солнца, тени тянутся в наблюдателю.
Вновь мы видим значительную разницу между простым вариантом и SSAO. Кран, строение справа и деревья обращены к нам затененной стороной, и с SSAO все темные зоны становятся еще темнее. Особенно возрастает интенсивность темного каменного обрыва прямо перед Ларой. Тени на объектах неравномерные. Нижняя часть крана и деревьев затенена сильнее. Ну и традиционно улучшается восприятие каменных склонов.
HBAO+ повышает неравномерность затенения в зависимости от их формы, дополнительно усиливая тени возле бугорков на снежной поверхности. То есть снег приобретает дополнительный объем и ощущение рельефа. Обратите внимание на здание в центре. Благодаря дополнительную усилению темных зон с правой стороны этого строения начинают просматриваться некоторые отдельные элементы.
Теперь перенесемся на другую локацию.
Большая часть сцены находится в тени. Но SSAO усиливает тени в изгибах скалы и усиливает темную зону под травой. В итоге лучше просматривается неравномерная структура склонов, лучше выделяется трава и камни на тропе. HBAO+ усиливает тени на поверхности, дополнительно выделяя рельефные элементы. Большие камни в нижней левой части обретают дополнительный объем благодаря более сложным теням, которые лучше оттеняют все изгибы на их поверхности. Обратите внимание на небольшую кладку дров в правой части. Только при HBAO+ отдельные элементы этой кладки приобретают ощущение объема.
Ну и последний пример с этой же локации.
Ярче всего разница видна между изображением без AO и с SSAO. При втором варианте появляются темные зоны между камнями, из которых выложены стены, темнее зона под навесом. Четче разделение на освещенную и затемненную часть у камней, из которых состоят ступени. С HBAO+ меняется затенение бочки. В той части, что прислонена к стене, на нее ложится тень. Нижняя часть бочки и камней, на которые попадает меньше света, тоже темнеют. Интенсивнее тени в расщелинах плит, что способствует лучшему их визуальному выделению.
Небольшое видео ниже послужит дополнительной иллюстрацией к отмеченным изменениям. С учетом сжатия видеопотока четкость деталей в сравнении со скриншотами хуже, но различия видны даже при таких условиях.
Дополним визуальное сравнение тестирование производительности.
Тестовый стенд
- процессор: Intel Core i7-3930K @4,4 ГГц
- материнская плата: ASUS Rampage IV Formula
- видеокарта: GeForce GTX 980 Ti
- память: Kingston KHX2133C11D3K4/16GX, 1866 МГц, 4×4 ГБ
- жесткий диск: Hitachi HDS721010CLA332, 1 TБ
- блок питания: Seasonic SS-750KM
- операционная система: Windows 7 Ultimate SP1 x64
- драйвер GeForce: NVIDIA GeForce 361.75
Совершалась небольшая прогулка на геотермальной долине. Выбрано разрешение 1920×1080, профиль очень высокого качества графики, сглаживание SMAA.
На видеокарте топового уровня HBAO+ дается немного тяжелее SSAO, но итоговая разница в частоте кадров все равно исчисляется несколькими процентами. Так что для общей производительности это не критично, а влияние на картинку неплохое.
В итоге нужно сказать, что любой режим Ambient Occlusion улучшает графику в Rise of the Tomb Raider. Такое затенение формирует более достоверную картину теней, которая лучше подчеркивает многочисленные детали игрового мира. Лучше всего с этим справляется HBAO+. В таком режиме появляются дополнительные тени в слабоосвещенных местах, где предметы затеняют друг друга, лучше ощущается сложный рельеф скал, снега и других поверхностей. HBAO+ придает дополнительную глубину изображению и оттеняет мелкие детали. SSAO справляется с этим несколько хуже, но все равно дает более приятную картинку в сравнении с режимом без Ambient Occlusion. На мощных видеокартах смело включайте HBAO+, чтобы получить максимально эффектную детализированную картинку. На слабых картах можно ограничиться простым режимом AO.
nvplay.ru
Оставить комментарий