Настройки графики в играх: на что они влияют? Screen space ambient occlusion с учетом нормалей и расчет одного отражения света.

Недавно игра 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 МГц, 4x4 ГБ
  • жесткий диск: Hitachi HDS721010CLA332, 1 TБ
  • блок питания: Seasonic SS-750KM
  • операционная система: Windows 7 Ultimate SP1 x64
  • драйвер GeForce: NVIDIA GeForce 364.51

Тестирование проводилось путем переигрывания небольшой прогулки по локации геотермальной долины - одного из самых тяжелых для видеокарт мест в игре.

Изначально выбран профиль качества «Очень высокого», менялись только режимы AO. Сглаживание FXAA, разрешение 1920x1080, 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 определяется мощностью вашей видеокарты.

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

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


трилинейная

анизотропная

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

Учитывая объем обрабатываемых данных (а в сцене может быть множество 32-битовых текстур высокого разрешения), анизотропная фильтрация особенно требовательна к пропускной способности памяти. Уменьшить трафик можно в первую очередь за счет компрессии текстур, которая сейчас применяется повсеместно. Ранее, когда она практиковалась не так часто, а пропуская способность видеопамяти была гораздо ниже, анизотропная фильтрация ощутимо снижала количество кадров. На современных же видеокартах она почти не влияет на fps.

Анизотропная фильтрация имеет лишь одну настройку коэффициент фильтрации (2x, 4x, 8x, 16x). Чем он выше, тем четче и естественнее выглядят текстуры. Обычно при высоком значении небольшие артефакты заметны лишь на самых удаленных пикселах наклоненных текстур. Значений 4x и 8x, как правило, вполне достаточно для избавления от львиной доли визуальных искажений. Интересно, что при переходе от 8x к 16x снижение производительности будет довольно слабым даже в теории, поскольку дополнительная обработка понадобится лишь для малого числа ранее не фильтрованных пикселов.

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

Шейдеры делятся на три типа: вершинные (Vertex Shader) оперируют координатами, геометрические (Geometry Shader) могут обрабатывать не только отдельные вершины, но и целые геометрические фигуры, состоящие максимум из 6 вершин, пиксельные (Pixel Shader) работают с отдельными пикселами и их параметрами.

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

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

Parallax mapping
Parallax mapping это модифицированная версия известной техники bumpmapping, используемой для придания текстурам рельефности. Parallax mapping не создает 3D-объектов в обычном понимании этого слова. Например, пол или стена в игровой сцене будут выглядеть шероховатыми, оставаясь на самом деле абсолютно плоскими. Эффект рельефности здесь достигается лишь за счет манипуляций с текстурами.

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

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

Эффект чаще всего применяется для каменных мостовых, стен, кирпичей и плитки.

Anti-Aliasing
До появления DirectX 8 сглаживание в играх осуществлялось методом SuperSampling Anti-Aliasing (SSAA), известным также как Full-Scene Anti-Aliasing (FSAA). Его применение приводило к значительному снижению быстродействия, поэтому с выходом DX8 от него тут же отказались и заменили на Multisample Аnti-Аliasing (MSAA). Несмотря на то что данный способ давал худшие результаты, он был гораздо производительнее своего предшественника. С тех пор появились и более продвинутые алгоритмы, например CSAA.

AA off AA on

Учитывая, что за последние несколько лет быстродействие видеокарт заметно увеличилось, как AMD, так и NVIDIA вновь вернули в свои ускорители поддержку технологии SSAA. Тем не менее использовать ее даже сейчас в современных играх не получится, поскольку количество кадров/с будет очень низким. SSAA окажется эффективной лишь в проектах предыдущих лет, либо в нынешних, но со скромными настройками других графических параметров. AMD реализовала поддержку SSAA только для DX9-игр, а вот в NVIDIA SSAA функционирует также в режимах DX10 и DX11.

Принцип работы сглаживания очень прост. До вывода кадра на экран определенная информация рассчитывается не в родном разрешении, а увеличенном и кратном двум. Затем результат уменьшают до требуемых размеров, и тогда «лесенка» по краям объекта становится не такой заметной. Чем выше исходное изображение и коэффициент сглаживания (2x, 4x, 8x, 16x, 32x), тем меньше ступенек будет на моделях. MSAA в отличие от FSAA сглаживает лишь края объектов, что значительно экономит ресурсы видеокарты, однако такая техника может оставлять артефакты внутри полигонов.

Раньше Anti-Aliasing всегда существенно снижал fps в играх, однако теперь влияет на количество кадров незначительно, а иногда и вовсе никак не cказывается.

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

На первый взгляд, тесселяцию можно спутать с Parallax mapping. Хотя это совершенно разные эффекты, поскольку тесселяция реально изменяет геометрическую форму предмета, а не просто симулирует рельефность. Помимо этого, ее можно применять практически для любых объектов, в то время как использование Parallax mapping сильно ограничено.

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

Чтобы игра могла использовать тесселяцию, ей требуется видеокарта с поддержкой DirectX 11.

Вертикальная синхронизация

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

Если частота обновления монитора составляет 60 Гц, и видеокарта успевает просчитывать 3D-сцену как минимум с таким же количеством кадров, то каждое обновление монитора будет отображать новый кадр. Другими словами, с интервалом 16,66 мс пользователь будет видеть полное обновление игровой сцены на экране.

Следует понимать, что при включенной вертикальной синхронизации fps в игре не может превышать частоту вертикальной развертки монитора. Если же число кадров ниже этого значения (в нашем случае меньше, чем 60 Гц), то во избежание потерь производительности необходимо активировать тройную буферизацию, при которой кадры просчитываются заранее и хранятся в трех раздельных буферах, что позволяет чаще отправлять их на экран.

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

Post-processing
Это общее название всех эффектов, которые накладываются на уже готовый кадр полностью просчитанной 3D-сцены (иными словами, на двухмерное изображение) для улучшения качества финальной картинки. Постпроцессинг использует пиксельные шейдеры, и к нему прибегают в тех случаях, когда для дополнительных эффектов требуется полная информация обо всей сцене. Изолированно к отдельным 3D-объектам такие приемы не могут быть применены без появления в кадре артефактов.

High dynamic range (HDR)
Эффект, часто используемый в игровых сценах с контрастным освещением. Если одна область экрана является очень яркой, а другая, наоборот, затемненной, многие детали в каждой из них теряются, и они выглядят монотонными. HDR добавляет больше градаций в кадр и позволяет детализировать сцену. Для его применения обычно приходится работать с более широким диапазоном оттенков, чем может обеспечить стандартная 24-битовая точность. Предварительные просчеты происходят в повышенной точности (64 или 96 бит), и лишь на финальной стадии изображение подгоняется под 24 бита.

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

Bloom
Bloom нередко применяется совместно с HDR, а еще у него есть довольно близкий родственник Glow, именно поэтому эти три техники часто путают.

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

Film Grain
Зернистость артефакт, возникающий в аналоговом ТВ при плохом сигнале, на старых магнитных видеокассетах или фотографиях (в частности, цифровых изображениях, сделанных при недостаточном освещении). Игроки часто отключают данный эффект, поскольку он в определенной мере портит картинку, а не улучшает ее. Чтобы понять это, можно запустить Mass Effect в каждом из режимов. В некоторых «ужастиках», например Silent Hill, шум на экране, наоборот, добавляет атмосферности.

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

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

SSAO
Ambient occlusion техника, применяемая для придания сцене фотореалистичности за счет создания более правдоподобного освещения находящихся в ней объектов, при котором учитывается наличие поблизости других предметов со своими характеристиками поглощения и отражения света.

Screen Space Ambient Occlusion является модифицированной версией Ambient Occlusion и тоже имитирует непрямое освещение и затенение. Появление SSAO было обусловлено тем, что при современном уровне быстродействия GPU Ambient Occlusion не мог использоваться для просчета сцен в режиме реального времени. За повышенную производительность в SSAO приходится расплачиваться более низким качеством, однако даже его хватает для улучшения реалистичности картинки.

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

Cel shading
Игры с эффектом Cel shading начали делать с 2000 г., причем в первую очередь они появились на консолях. На ПК по-настоящему популярной данная техника стала лишь через пару лет. С помощью Cel shading каждый кадр практически превращается в рисунок, сделанный от руки, или фрагмент из мультика.

В похожем стиле создают комиксы, поэтому прием часто используют именно в играх, имеющих к ним отношение. Из последних известных релизов можно назвать шутер Borderlands, где Cel shading заметен невооруженным глазом.

Особенностями технологии является применение ограниченного набора цветов, а также отсутствие плавных градиентов. Название эффекта происходит от слова Cel (Celluloid), т. е. прозрачного материала (пленки), на котором рисуют анимационные фильмы.

Depth of field
Глубина резкости это расстояние между ближней и дальней границей пространства, в пределах которого все объекты будут в фокусе, в то время как остальная сцена окажется размытой.

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

Лицезреть эффект глубины резкости в гипертрофированной форме можно на некоторых фотографиях. Именно такую степень размытия часто и пытаются симулировать в 3D-сценах.

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

Влияние на производительность

Чтобы выяснить, как включение тех или иных опций сказывается на производительности, мы воспользовались игровым бенчмарком Heaven DX11 Benchmark 2.5. Все тесты проводились на системе Intel Core2 Duo e6300, GeForce GTX460 в разрешении 1280Ч800 точек (за исключением вертикальной синхронизации, где разрешение составляло 1680Ч1050).

Как уже упоминалось, анизотропная фильтрация практически не влияет на количество кадров. Разница между отключенной анизотропией и 16x составляет всего лишь 2 кадра, поэтому рекомендуем ее всегда ставить на максимум.

Сглаживание в Heaven Benchmark снизило fps существеннее, чем мы того ожидали, особенно в самом тяжелом режиме 8x. Тем не менее, поскольку для ощутимого улучшения картинки достаточно и 2x, советуем выбирать именно такой вариант, если на более высоких играть некомфортно.

Тесселяция в отличие от предыдущих параметров может принимать произвольное значение в каждой отдельной игре. В Heaven Benchmark картинка без нее существенно ухудшается, а на максимальном уровне, наоборот, становится немного нереалистичной. Поэтому следует устанавливать промежуточные значения moderate или normal.

Для вертикальной синхронизации было выбрано более высокое разрешение, чтобы fps не ограничивался вертикальной частотой развертки экрана. Как и предполагалось, количество кадров на протяжении почти всего теста при включенной синхронизации держалось четко на отметке 20 или 30 кадров/с. Это связано с тем, что они выводятся одновременно с обновлением экрана, и при частоте развертки 60 Гц это удается сделать не с каждым импульсом, а лишь с каждым вторым (60/2 = 30 кадров/с) или третьим (60/3 = 20 кадров/с). При отключении V-Sync число кадров увеличилось, однако на экране появились характерные артефакты. Тройная буферизация не оказала никакого положительного эффекта на плавность сцены. Возможно, это связано с тем, что в настройках драйвера видеокарты нет опции принудительного отключения буферизации, а обычное деактивирование игнорируется бенчмарком, и он все равно использует эту функцию.

Если бы Heaven Benchmark был игрой, то на максимальных настройках (1280Ч800; AA 8x; AF 16x; Tessellation Extreme) в нее было бы некомфортно играть, поскольку 24 кадров для этого явно недостаточно. С минимальной потерей качества (1280Ч800; AA 2x; AF 16x, Tessellation Normal) можно добиться более приемлемого показателя в 45 кадров/с.



Графический движок Far Cry 3

Far Cry 3 построен на движке Dunia 2, ведущего родословную от первой версии CryEngine, которая лежала в основе самого первого Far Cry, а следующие версии используются в серии Crysis. Но, несмотря на именитое родство, а также всю привлекательность Far Cry 3, нельзя не признать, что эта игра больше берет проработанным дизайном, чем передовыми технологиями и богатством графических эффектов. Far Cry 3 поддерживает API DirectX 9 либо DX11 (промежуточный вариант в виде DirectX 10 недоступен), но почти все красоты игры не выходят за рамки возможностей первого. Немногие заметные глазу преимущества, которые можно извлечь из DirectX 11, сводятся к полноэкранному сглаживанию мощностью вплоть до 8x и выбору из трех различных механизмов Ambient Occlusion. Внимательные игроки также могут заметить работу технологии Contact Hardening Shadows: жесткость тени варьируется в зависимости от расстояния между ее источником и затененной поверхностью.

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

Возьмем персонажей. Постоянные читатели наверняка помнят, что в свое время NVIDIA в качестве очередной виртуальной красотки, демонстрирующей возможности GeForce 8800 GTX, избрала отрендеренную копию некой модели по имени Adrianne Curry. В 2006 году результат действительно восхищал, в то время как в большинстве игр физиономии персонажей все еще выглядели довольно-таки грубо. Ну а теперь уже красота виртуальной Adrianne Curry уступает внешности Citra — главной обольстительницы из истории Far Cry 3.

Что касается красот природы, то вызывает восхищение тот изящный и эффективный метод, с помощью которого разработчики сделали игровой мир столь богатым и реалистичным. Поначалу картинка просто вызывает восторг и поглощает зрителя целиком, но если присмотреться к деталям, то выяснится, что пейзажи острова довольно однообразные и простые. Нельзя не сравнить Far Cry 3 с первым Crysis, действие которого также происходит на тропическом острове. И в плане проработки окружения сравнение будет не в пользу новинки. Хотя, конечно, это не только или даже, быть может, не столько недостаток Far Cry 3, сколько свидетельство тому, насколько Crysis тогда опередил свое время.

Но сравнение видеоряда Crysis и Far Cry 3 раскрывает и главное преимущество последнего. Это одна из первых игр, которые используют технологию Global Illumination, и с чрезвычайно эффектным результатом. Работа GI в Far Cry 3 складывается из двух основных компонентов: прямого освещения от небесной сферы и рассеянного света, отраженного от элементов игрового окружения.

Направление и оттенок света небесной сферы рассчитывается движком в реальном времени, что позволяет теням от объектов ползти по земле вслед за солнцем.

А данные о распределении света, отражающегося от близко расположенных поверхностей, и видимости неба из определенной точки (зонда - Probe) вычисляется на CPU в «офлайне» (на схеме — Probe Baking), что делает технологию относительно нетребовательной по сравнению с полностью «онлайновой» реализацией Global Illumination. И это, возможно, не последняя причина того, что движок допускает лишь небольшие разрушения игровой среды.

Затем уже в игре из сочетания заранее просчитанной информации и динамического небесного освещения (Relighting) формируются объемные текстуры, с помощью которых GPU придает объектам ту или иную освещенность и оттенок.

Таким образом и получаются сцены с роскошными реалистичными тенями, которыми так привлекает Far Cry 3.

Наконец, в дополнение к описанному алгоритму, версия Far Cry 3 для PC оперирует информацией о распространении света от локальных источников для того, чтобы аппроксимировать динамическое освещение, создаваемое фарами автомобиля, факелами и прочим.

⇡ Настройки графики Far Cry 3

DirectX 9 vs DirectX 11

Итак, Far Cry 3 предлагает выбор между API DirectX 9 и DX 11. Последний вариант открывает доступ к выбору режима полноэкранного сглаживания и алгоритма Ambient Occlusion. Последняя технология выполняет ту же задачу, что и Global Illumination, только в меньшем масштабе: аппроксимирует распределение отраженного света, что лучше всего проявляется в затенении углубленных участков геометрии (ниши, углы и т.д.) по сравнении с выдающимися.

Польза антиалиасинга в Far Cry 3 не подлежит обсуждению, особенно потому, что наш остров головорезов — «весь покрытый зеленью, абсолютно весь». MSAA в сочетании с TSAA (применением суперсемплинга к прозрачным текстурам, из которых состоит обильная тропическая листва) делает картинку куда более четкой, нежели в режиме DirectX 9, хотя и ценой колоссального падения производительности. Что поделаешь, такова неприятная особенность доминирующего сегодня метода отложенного рендеринга (Deferred Rendering).

А вот выбор между методами Ambient Occlusion неоднозначнен. В режиме DirectX 9 по умолчанию доступен только относительно старый и неточный метод - SSAO (Screen space ambient occlusion), при переходе к DirectX 11 появляются еще два варианта: HBAO (Horizon-Based Ambient Occlusion) и HDAO (High Definition Ambient Occlusion).

Как видно по скриншотам, использование SSAO производит довольно грубый результат, резко выделяя стыки полигонов и накладывая обширные тени на поверхности.

Освещение с использованием HBAO также выглядит не очень естественно. Хотя картинка и не столь темная, как при SSAO, в стыках полигонов появляются резкие короткие тени, за счет чего клочки травы на открытых пространствах выглядит как подпаленные, а в закрытых помещениях HBAO придает графике Far Cry 3 отдаленное сходство с мультяшным стилем Borderlands 2.

Наиболее сбалансированные тени производит метод HDAO, подчеркивая объем в тех местах, где нужно, и не создавая странных графических артефактов. Для расчета данных HDAO движок Far Cry 3 задействует API DirectCompute.

GPU от AMD и NVIDIA с теми версиями драйверов, которые использовались в тестировании, работают с тремя режимами Ambient Occlusion с примерно одинаковой эффективностью: разница очень невелика.

Предустановки детализации

Far Cry 3 позволяет в широких пределах изменять детализацию игрового окружения. Предлагаются пять предустановленных настроек: Low, Medium, High, Very High и Ultra, от которых также сильно зависит и производительность. Откатив графику до уровня Low, можно сделать Far Cry 3 играбельным даже на относительно старых системах, хотя при этом и пропадет добрая часть труда дизайнеров.

Предустановки мало влияют на сложность геометрии движущихся моделей и вид закрытых помещений. Сильнее всего изменяется детализация текстур и дальность прорисовки деталей ландшафта. При переходе от низких режимов к высоким постепенно включаются компоненты сложной модели освещения Far Cry 3. Заметная разница также проявляется в том, как выглядят модели персонажей.

Изображение, приближенное к замыслу авторов игры, появляется на экране только в режиме High, при котором наблюдается неплохой компромисс между красотой и быстродействием. В более низких режимах открытые пространства Far Cry 3 становятся похожи на примитивные (а когда-то восхищавшие) декорации TES: Oblivion.

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

Анизотропная фильтрация

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

Триленейная

Анизатропная

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

Учитывая объем обрабатываемых данных (а в сцене может быть множество 32-битовых текстур высокого разрешения), анизотропная фильтрация особенно требовательна к пропускной способности памяти. Уменьшить трафик можно в первую очередь за счет компрессии текстур, которая сейчас применяется повсеместно. Ранее, когда она практиковалась не так часто, а пропуская способность видеопамяти была гораздо ниже, анизотропная фильтрация ощутимо снижала количество кадров. На современных же видеокартах она почти не влияет на fps.

Анизотропная фильтрация имеет лишь одну настройку – коэффициент фильтрации (2x, 4x, 8x, 16x). Чем он выше, тем четче и естественнее выглядят текстуры. Обычно при высоком значении небольшие артефакты заметны лишь на самых удаленных пикселах наклоненных текстур. Значений 4x и 8x, как правило, вполне достаточно для избавления от львиной доли визуальных искажений. Интересно, что при переходе от 8x к 16x снижение производительности будет довольно слабым даже в теории, поскольку дополнительная обработка понадобится лишь для малого числа ранее не фильтрованных пикселов.

Шейдеры

Шейдеры – это небольшие программы, которые могут производить определенные манипуляции с 3D-сценой, например, изменять освещенность, накладывать текстуру, добавлять постобработку и другие эффекты.

Шейдеры делятся на три типа: вершинные (Vertex Shader) оперируют координатами, геометрические (Geometry Shader) могут обрабатывать не только отдельные вершины, но и целые геометрические фигуры, состоящие максимум из 6 вершин, пиксельные (Pixel Shader) работают с отдельными пикселами и их параметрами.

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

Шейдеры очень продуктивно работают в параллельном режиме, и именно поэтому в современных графических адаптерах так много потоковых процессоров, которые тоже называют шейдерами. Например, в GeForce GTX 580 их целых 512 штук.

Parallax mapping

Parallax mapping – это модифицированная версия известной техники bumpmapping, используемой для придания текстурам рельефности. Parallax mapping не создает 3D-объектов в обычном понимании этого слова. Например, пол или стена в игровой сцене будут выглядеть шероховатыми, оставаясь на самом деле абсолютно плоскими. Эффект рельефности здесь достигается лишь за счет манипуляций с текстурами.

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

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

Эффект чаще всего применяется для каменных мостовых, стен, кирпичей и плитки.

Anti-Aliasing

До появления DirectX 8 сглаживание в играх осуществлялось методом SuperSampling Anti-Aliasing (SSAA), известным также как Full-Scene Anti-Aliasing (FSAA). Его применение приводило к значительному снижению быстродействия, поэтому с выходом DX8 от него тут же отказались и заменили на Multisample Аnti-Аliasing (MSAA). Несмотря на то что данный способ давал худшие результаты, он был гораздо производительнее своего предшественника. С тех пор появились и более продвинутые алгоритмы, например CSAA.

AA выключено

AA включено

Учитывая, что за последние несколько лет быстродействие видеокарт заметно увеличилось, как AMD, так и NVIDIA вновь вернули в свои ускорители поддержку технологии SSAA. Тем не менее использовать ее даже сейчас в современных играх не получится, поскольку количество кадров/с будет очень низким. SSAA окажется эффективной лишь в проектах предыдущих лет, либо в нынешних, но со скромными настройками других графических параметров. AMD реализовала поддержку SSAA только для DX9-игр, а вот в NVIDIA SSAA функционирует также в режимах DX10 и DX11.

Принцип работы сглаживания очень прост. До вывода кадра на экран определенная информация рассчитывается не в родном разрешении, а увеличенном и кратном двум. Затем результат уменьшают до требуемых размеров, и тогда «лесенка» по краям объекта становится не такой заметной. Чем выше исходное изображение и коэффициент сглаживания (2x, 4x, 8x, 16x, 32x), тем меньше ступенек будет на моделях. MSAA в отличие от FSAA сглаживает лишь края объектов, что значительно экономит ресурсы видеокарты, однако такая техника может оставлять артефакты внутри полигонов.

Раньше Anti-Aliasing всегда существенно снижал fps в играх, однако теперь влияет на количество кадров незначительно, а иногда и вовсе никак не cказывается.

Тесселяция

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

Выключена

Включена

На первый взгляд, тесселяцию можно спутать с Parallax mapping. Хотя это совершенно разные эффекты, поскольку тесселяция реально изменяет геометрическую форму предмета, а не просто симулирует рельефность. Помимо этого, ее можно применять практически для любых объектов, в то время как использование Parallax mapping сильно ограничено.

Технология тесселяции известна в кинематографе еще с 80-х го­дов, однако в играх она стала поддерживаться лишь недавно, а точнее после того, как графические ускорители наконец достигли необходимого уровня производительности, при котором она может выполняться в режиме реального времени.

Чтобы игра могла использовать тесселяцию, ей требуется видеокарта с поддержкой DirectX 11.

Вертикальная синхронизация

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

Если частота обновления монитора составляет 60 Гц, и видео­карта успевает просчитывать 3D-сцену как минимум с таким же количеством кадров, то каждое обновление монитора будет отображать новый кадр. Другими словами, с интервалом 16,66 мс пользователь будет видеть полное обновление игровой сцены на экране.

Следует понимать, что при включенной вертикальной синхронизации fps в игре не может превышать частоту вертикальной развертки монитора. Если же число кадров ниже этого значения (в нашем случае меньше, чем 60 Гц), то во избежание потерь производительности необходимо активировать тройную буферизацию, при которой кадры просчитываются заранее и хранятся в трех раздельных буферах, что позволяет чаще отправлять их на экран.

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

Post-processing

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

High dynamic range (HDR)

Эффект, часто используемый в игровых сценах с контрастным освещением. Если одна область экрана является очень яркой, а другая, наоборот, затемненной, многие детали в каждой из них теряются, и они выглядят монотонными. HDR добавляет больше градаций в кадр и позволяет детализировать сцену. Для его применения обычно приходится работать с более широким диапазоном оттенков, чем может обеспечить стандартная 24-битовая точность. Предварительные просчеты происходят в повышенной точности (64 или 96 бит), и лишь на финальной стадии изображение подгоняется под 24 бита.

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

Bloom

Bloom нередко применяется совместно с HDR, а еще у него есть довольно близкий родственник – Glow, именно поэтому эти три техники часто путают

.

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

Film Grain

Зернистость – артефакт, возникающий в аналоговом ТВ при плохом сигнале, на старых магнитных видеокассетах или фотографиях (в частности, цифровых изображениях, сделанных при недостаточном освещении). Игроки часто отключают данный эффект, поскольку он в определенной мере портит картинку, а не улучшает ее. Чтобы понять это, можно запустить Mass Effect в каждом из режимов. В некоторых «ужастиках», например Silent Hill, шум на экране, наоборот, добавляет атмосферности.

Motion Blur

Motion Blur – эффект смазывания изображения при быстром перемещении камеры. Может быть удачно применен, когда сцене следует придать больше динамики и скорости, поэтому особенно востребован в гоночных играх. В шутерах же использование размытия не всегда воспринимается однозначно. Правильное применение Motion Blur способно добавить кинематографичности в происходящее на экране.

Выключен

Включен

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

SSAO

Ambient occlusion – техника, применяемая для придания сцене фотореалистичности за счет создания более правдоподобного освещения находящихся в ней объектов, при котором учитывается наличие поблизости других предметов со своими характеристиками поглощения и отражения света.

Screen Space Ambient Occlusion является модифицированной версией Ambient Occlusion и тоже имитирует непрямое освещение и затенение. Появление SSAO было обусловлено тем, что при современном уровне быстродействия GPU Ambient Occlusion не мог использоваться для просчета сцен в режиме реального времени. За повышенную производительность в SSAO приходится расплачиваться более низким качеством, однако даже его хватает для улучшения реалистичности картинки.

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

Cel shading

Игры с эффектом Cel shading начали делать с 2000 г., причем в первую очередь они появились на консолях. На ПК по-настоящему популярной данная техника стала лишь через пару лет, после выхода нашумевшего шутера XIII. С помощью Cel shading каждый кадр практически превращается в рисунок, сделанный от руки, или фрагмент из детского мультика.

В похожем стиле создают комиксы, поэтому прием часто используют именно в играх, имеющих к ним отношение. Из последних известных релизов можно назвать шутер Borderlands, где Cel shading заметен невооруженным глазом.

Особенностями технологии является применение ограниченного набора цветов, а также отсутствие плавных градиентов. Название эффекта происходит от слова Cel (Celluloid), т. е. прозрачного материала (пленки), на котором рисуют анимационные фильмы.

Depth of field

Глубина резкости – это расстояние между ближней и дальней границей пространства, в пределах которого все объекты будут в фокусе, в то время как остальная сцена окажется размытой.

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

Лицезреть эффект глубины резкости в гипертрофированной форме можно на некоторых фотографиях. Именно такую степень размытия часто и пытаются симулировать в 3D-сценах.

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

Влияние на производительность

Чтобы выяснить, как включение тех или иных опций сказывается на производительности, мы воспользовались игровым бенчмарком Heaven DX11 Benchmark 2.5. Все тесты проводились на системе Intel Core2 Duo e6300, GeForce GTX460 в разрешении 1280×800 точек (за исключением вертикальной синхронизации, где разрешение составляло 1680×1050).

Как уже упоминалось, анизо­тропная фильтрация практически не влияет на количество кадров. Разница между отключенной анизотропией и 16x составляет всего лишь 2 кадра, поэтому рекомендуем ее всегда ставить на максимум.

Сглаживание в Heaven Benchmark снизило fps существеннее, чем мы того ожидали, особенно в самом тяжелом режиме 8x. Тем не менее, поскольку для ощутимого улучшения картинки достаточно и 2x, советуем выбирать именно такой вариант, если на более высоких играть некомфортно.

Тесселяция в отличие от предыдущих параметров может принимать произвольное значение в каждой отдельной игре. В Heaven Benchmark картинка без нее существенно ухудшается, а на максимальном уровне, наоборот, становится немного нереалистичной. Поэтому следует устанавливать промежуточные значения – moderate или normal.

Для вертикальной синхронизации было выбрано более высокое разрешение, чтобы fps не ограничивался вертикальной частотой развертки экрана. Как и предполагалось, количество кадров на протяжении почти всего теста при включенной синхронизации держалось четко на отметке 20 или 30 кадров/с. Это связано с тем, что они выводятся одновременно с обновлением экрана, и при частоте развертки 60 Гц это удается сделать не с каждым импульсом, а лишь с каждым вторым (60/2 = 30 кадров/с) или третьим (60/3 = 20 кадров/с). При отключении V-Sync число кадров увеличилось, однако на экране появились характерные артефакты. Тройная буферизация не оказала никакого положительного эффекта на плавность сцены. Возможно, это связано с тем, что в настройках драйвера видеокарты нет опции принудительного отключения буферизации, а обычное деактивирование игнорируется бенчмарком, и он все равно использует эту функцию.

Если бы Heaven Benchmark был игрой, то на максимальных настройках (1280×800; AA – 8x; AF – 16x; Tessellation Extreme) в нее было бы некомфортно играть, поскольку 24 кадров для этого явно недостаточно. С минимальной потерей качества (1280×800; AA – 2x; AF – 16x, Tessellation Normal) можно добиться более приемлемого показателя в 45 кадров/с.

Надеюсь данная статья не только позволит вам лучше оптимизировать игру под свой компьютер, но и расширит ваш кругозор. Совсем скоро появится статья о реальном влиянии количества FPS на восприятие игры.

Стоит только начать обсуждение новой игры для ПК, как неотвратимо всплывет слово «оптимизация». Deus Ex: Mankind Divided? «Похоже, что эту игру ВООБЩЕ не оптимизировали», - пишет кто-то из игроков в Steam. Metro: Last Light? «Если коротко, то оптимизация выполнена ужасно», - пишет другой.

Жалобы на плохую оптимизацию, как правило, идут бок о бок с фразами наподобие «у меня эта игра тормозит». Но связана ли производительность с ошибками программистов, которые не смогли эффективно написать код? Как понять, игра на самом деле плохо оптимизирована или для нее просто не хватает мощности вашего ПК?

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

Что такое оптимизация, и чем её измерить?

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

Вот простой пример. Допустим, вам необходимо вычислить следующее:

a = b*c + b*c + b*c

Если вместо этого мы определим:

d = b*c, и запишем a = d + d + d

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

Так как же нам рассуждать об оптимизации, сохранив хоть какую-то объективность? Вот какое определение дали мне в QLOC:

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

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

Дин Секулич из Croteam оптимизирует игры уже 20 лет и уверен, что «с одной стороны, невозможно сравнить, насколько оптимизированы разные игры», но с другой? всегда можно составить мнение, визуально оценив качество двух разных игр и уровень производительности, который ими достигнут. Однако он также отмечает, что «есть много всего скрытого от глаз», влияющего на поведение игры.

Что же это? Понимание того, что такое оптимизация и что на неё влияет, подразумевает получение ответа на этот вопрос. Мы начнем с оценки того, как на производительность могут влиять те визуальные эффекты, которые дают наибольшую нагрузку на современные аппаратные средства.

Современные эффекты и производительность

Если вы разочарованы производительностью игры, скорее всего виной тому один из этих эффектов. В большинстве случаев картинка не выглядит плавной именно благодаря им, и с них стоит начать настройку графики для достижения частоты 60 FPS (кадров в секунду).

Качество изображения

Возможно, самый простой параметр, который заметно влияет на производительность и позволяет сравнивать уровень оптимизации, это разрешение экрана . Вполне естественно сравнивать игры на одинаковом разрешении, поскольку этот параметр состоит всего из двух чисел (к примеру, 1920×1080) и доступен для настройки практически в каждой игре. Важный факт, который часто упускается из виду: с изменением разрешения меняется количество выводимых пикселей - 4k дает нагрузку примерно в четыре, а не в два раза больше, чем 2k.

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

  • Чистые методы работы с экранным пространством, такие как FXAA или SMAA (1x). Работают с уже сгенерированным изображением. На этапе постобработки производится попытка выявить и устранить артефакты визуализации, к примеру, «лесенки».
  • Методы временного сглаживания. Делают движения более плавными, генерируя изображение с наложением предыдущего кадра и выводят промежуточный результат.
  • Множественная выборка сглаживания или мультисэмплинг (MSAA). На разных этапах визуализации пиксели на гранях полигонов генерируются на основе нескольких предварительных виртуальных моделей.
  • Избыточная выборка сглаживания или суперсэмплинг. На разных этапах визуализации все пиксели генерируются на основе нескольких предварительных виртуальных моделей.
  • Комбинации из вышеописанных методов (к примеру, TXAA)

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

Освещение и тени

Поверхности и окружающая атмосфера напрямую зависят от освещения, которое относится к основам 3D графики и одновременно является ее Священным Граалем. Постоянно разрабатываются всё более сложные эффекты, благодаря которым достижимо современное качество изображения, однако улучшение картинки часто достигается за счет огромного ущерба производительности.

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

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

Рассеянное затенение впервые было представлено в Crysis и само по себе требовало немалых ресурсов. В наши дни использование этого эффекта больше не вызывает проблем с производительностью. Однако новые графические техники, такие как воксельное рассеянное затенение или затенение отдаленных пространств, всё еще достаточно требовательны к производительности.

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

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

Прочие визуальные эффекты

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


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

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

Особенности оптимизации

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

Стандартные настройки и системные требования

Предустановленные графические настройки - привычные «низкие», «средние», «высокие», «очень высокие», «ультра» - практически никогда не соответствуют друг другу в разных играх, однако они крайне важны: их используют игроки, которые не хотят углубляться в тонкости индивидуальной настройки.
В Croteam «средние» предустановки определяются на ранней стадии разработки игры и зависят от текущего и прогнозируемого уровня развития аппаратных средств, а будущие графическое оформление и дизайн выполняются с учетом этого стандарта. Ближе к выпуску техническая команда определяет настройки для каждой предустановки, стараясь на каждом уровне сбалансировать качество картинки и производительность.

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

Для QLOC, где, в основном, занимаются портированием консольных игр на ПК, «средние» настройки портированной игры определяются стандартными установками графики на консоли, однако могут быть внесены и некоторые изменения, вызванные различием платформ. В тех случаях, когда такое возможно, вводится варьируемость параметров. Предустановки графики и системные требования меняются в процессе оптимизации, начиная того момента, как система визуализации и другие ключевые механизмы протестированы и функционируют.

Игрокам не всегда до конца известно, каким образом определяются системные требования. В то время как

каждый разработчик использует собственные стандарты, в Croteam «минимальные» требования означают, что игра должна хорошо работать на низких настройках, и если эти требования не соблюдены, техническая поддержка не предоставляется. «Рекомендуемые» же системные требования подразумевают, что игра должна хорошо работать («не на средних, а на высоких», как сказал мне Дин) c разрешением 1080p.

Как оценивать оптимизацию игры

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

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

Поднялся громкий вой на Dying Light, как на «ужасно не оптимизированный порт на ПК» из-за того, что она не соответствовала (произвольно выбранным) стандартам на максимальных настройках графики. Как выяснилось, ползунок настройки дальности прорисовки, установленный на минимум, в первоначальной версии игры определял более высокую дальность прорисовки, чем на консоли. В сущности, люди были недовольны тем, что разработчик подразумевал, что в ранних патчах игрокам придется устанавливать ползунок дальности прорисовки на 55% от максимального значения.

Выглядела бы игра более «оптимизированной», если бы этот простой шаг был сделан до релиза? Я в этом уверен. При этом была бы она на самом деле «лучше оптимизирована»? Разумеется, нет. Dying Light – не только хороший пример того, как сложно оценить качество оптимизации, но и того, что должны учитывать разработчики при определении доступных настроек графики.

Похожая история недавно произошла с Deus Ex: Mankind Divided, в которой важное значение имеет настройка MSAA (до 8x). Поскольку в игре используется отложенное освещение и затенение – универсальная техника визуализации, которая делает намного менее эффективной простую реализацию MSAA с аппаратным ускорением - MSAA давала большую нагрузку на производительность, которой от нее никто не ожидал. И снова, игра выглядела бы более «оптимизированной» в том случае, если бы не предоставляла такую настройку, при чем, опять же, проблема с оптимизацией совсем не в этом.

Игра редко представляет из себя монолитную сущность, которая либо оптимизирована, либо нет. Не оптимизированы могут быть отдельные эффекты, в отличие от игры в целом. Это особенно распространено при использовании нововведений: когда в оригинальной Crysis впервые было использовано рассеянное затенение, оно было плохо оптимизировано по сравнению с современными реализациями. Кроме того, первая реализация воксельного рассеянного затенения в Rise of the Tomb Raider – в целом хорошо оптимизированной и красивой игры – может оказаться хуже грядущих реализаций.

Metro 2033 стала одной из первых игр, где были широко использованы объемные лучи, и позиционировалась она как духовный приемник Crysis в том, что касается производительности на высоких настройках. Это же актуально и для недавнего и последующего использования теней с контактным уплотнением. Тем не менее, я считаю, что необходимо экспериментировать с внедрением новых возможностей, несмотря на то, что первые реализации не всегда можно использовать из-за их нагрузки на производительность. Благодаря этому процесс развития игровой разработки не стоит на месте, и появляются хорошо оптимизированные визуальные эффекты. Прелесть платформы ПК заключается в том, что эффект, который был «не оптимизирован» в 2010 году, может быть использован по максимуму в 2016-м, и игра будет выглядеть лучше даже на средней аппаратной конфигурации.

Разумеется, существуют игры, которые действительно плохо оптимизированы. Обычно за ними стоит одно и то же: недостаток ресурсов, попытка небольшого разработчика откусить больше, чем он может прожевать, или просто низкие технические навыки. Когда игра тормозит на настройках по умолчанию даже на самом мощном ПК, или в простой 2D игре fps падает до 20 кадров в секунду даже на современной консоли, тогда никакой самый глубокий анализ не приведет к утешительным выводам. В большинстве случаев, однако, оценка становится намного сложнее, и я надеюсь, что, как я надеюсь, было хорошо проиллюстрировано в этом разделе.

Трудности оптимизации

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

Когда верхняя функция занимает 3% времени, это означает, что если вам удастся вдвое сократить время ее выполнения - для чего могут потребоваться титанические усилия - в целом программа ускорится на 1,5%. Из-за того, что подобные ситуации возникают постоянно, оптимизация готового кода превращается в поэтапный и трудоемкий процесс.

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

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

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

Дин Секулич уверен, что «парадигму движков визуализации пора менять», но при этом видит огромный потенциал для Vulkan в будущем. Он дает наполовину шуточный совет разработчикам: «Если вы используете Vulkan, добавляйте на экран побольше объектов», подразумевая, что в будущем могут возникнуть ситуации, которые невозможно качественно воспроизвести, используя возможности современных интерфейсов.

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

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

Подводя итог

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

В подобной форме это оказалось бы невозможным без помощи добрых людей из QLOC и Croteam. Croteam считается перспективной и опытной компанией, разрабатывающей игры в первую очередь для ПК и известной высоким качеством своих продуктов. О QLOC мы знаем в первую очередь благодаря их работе по портированию игр. Ожидая выход игры на ПК, игроки, как правило, вздыхают с облегчением, когда видят название этой компании. Если вы найдете в статье ошибки, то они принадлежат только мне, а не им.
В завершение статьи хотелось бы озвучить две просьбы.

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

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