Ambient occlusion что это в играх

Ambient occlusion что это в играх

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

В принципе, он определяет, сколько света должно быть "заблокировано" определенной частью окружающей среды.

С появлением 3D-игр у их создателей серьезно прибавилось проблем: о сглаживании мы уже говорили, также мы говорили и о фильтрации текстур. Теперь же поговорим о еще одном эффекте, который позволяет серьезно улучшить реалистичность картинки — о Ambient Occlusion (AO), или о затенении.

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

Таких черных теней не бывает (ну на Земле по крайней мере), так что сразу становится очевидным, что мы забыли — рассеяние света: суть в том, что в реальном времени фотоны могут отражаться от различных поверхностей и в итоге попадать туда, куда напрямую фотоны от источника не долетают: именно поэтому в тени хоть и темнее, чем на свету, но не черным черно. На Земле таким «рассеивателем» фотонов выступает сама атмосфера.

Но тут возникает вопрос — а как это рассчитать-то? Увы — алгоритма, дающего 100% точное рассеяние света в real-time, нет, однако есть множество хорошо приближенных к реальности алгоритмов, отлаженных настолько, что они спокойно используются в видеоиграх.

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

Однако тут мы получаем очередную проблему — отрисовка геометрии происходит постепенно, поэтому заграждающий фактор также в процессе отрисовки может серьезно меняться. Можно, конечно, рассчитать AO на этапе загрузки сцены, но тогда затенение не коснется динамических объектов (персонажей, машин и т.д.) — а это нехорошо. И тут приходит идея использовать для отрисовки затенения экранное пространство (Screen Space), что в итоге выливается в простейший алгоритм AO — SSAO.

Читайте также:  Chieftec navitas gpm 650s

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 трава выглядит красивее:

Читайте также:  Epson принтер не готов к печати

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 оно будет доступно лишь пользователям старших Nv >

Задумывались ли вы о том, как современные игры, такие как PUBG и NFS, могут отображать так много глубины и контраста? Это происходит из-за окклюзии окружающей среды, технологии, которая использует передовые передовые технологии и удивительные художественные концепции для создания потрясающей реалистичной графики. Но что такое окклюзия окружающей среды и что она делает? Читайте дальше, чтобы узнать это.

Современные видеоигры — это творческие шедевры, в которых используются современные методы, чтобы смешать в игре удивительную художественную графику. Но, как мы все знаем, реализовать такие удивительные функции нелегко. Чтобы поддерживать синхронизацию с современными постоянно развивающимися технологиями, необходимы новые методы реализации сложной графики. Здесь появляется окружающая окклюзия, также известная как АО. Впервые он был использован в видеоигре Crysis, которая вышла в 2007 году.

Читайте также:  Check point software technologies ltd

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

Как работает окружающая окклюзия?

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

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

Когда назначенное значение ниже, окклюзия или отсутствие окружающего света выше. Когда мы видим то же самое в игре, это иллюзирует реалистичный эффект 3D, показывая исключительную детализацию и погружение в объекты.

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

Наиболее распространенные типы окклюзии Ambient:

Окружающая окклюзия имеет большое значение?

Абсолютно. Если вы любите играть в высококлассные игры на самых высоких настройках графики, окружающая окклюзия имеет все значение. Разработчики используют SSAO уже более десяти лет, и их качество только улучшается год от года.

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

Почти все современные видеокарты способны быстро генерировать тени на лету. Такие компании, как Nvidia и AMD, постоянно выпускают более мощные версии эмбиентной окклюзии, что является фантастическим с точки зрения геймера, поскольку лучший способ получить удовольствие от этой технологии — использовать выделенную графическую карту и индивидуальную сборку ПК.

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

Ссылка на основную публикацию
Adblock detector