Как оптимизировать графику в играх. Настраиваем производительность
Пришла пора поделиться опытом практической настройки видео в играх. Мажоры с мониторами в 4к и i9 компами пробегают мимо - статья для старых компов, на которых можно запускать игры с системными требованиями, превосходящими это железо.
Процессоры могуть брать на себя графическую нагрузку при слабой видеокарте, и первое что я делаю в любой игре - убираю музыку, чтобы снизить нагрузку на процессор.
Можно ориентироваться на таблицы соответствия видеокарт к центральным процессорам.
Если игра вылетает или фризится с сообщением "VPU Recover сбросил графический ускоритель" - это только аппаратная проблема, означающая, что у видеокарты отвалился вентилятор и вообще перестал крутиться. Отключать сообщение не надо - это пиведет к перегреву видеокарты и её смерти.
Надо починить кулер и поставить дополнительный кулер на корпус, вобщем, это проблемы охлаждения.
Разрешение
На заре сетевых битв по локалке обиженный сосед выдал мне претензию, что у меня стоит 800 на 600, а него 1024 на 768 и поэтому у меня фмгурки крупнее и мне легче попадать.
Снижение разрешения всегда улучшает производительность. Дело в том, что в картинке хочешь не хочешь, а надо загружать каждый пиксель, и чем больше разрешение, тем больше пикселей надо загружать.
Самую оптимальную картинку в игре можно получить, если разрешение соответствует максимальному стандартному (заводскому) разрешению монитора. Также рекомендуется выставлять одинаковые частоты обновления экрана, в игре и на рабочем столе.
Драйверы
Драйвер должен быть не на вырост, а для конкретной видеокарты, не больше и не меньше, и не реагируйте на сообщения "ваш драйвер устарел". Появится новая видеокарта - ставьте драйвер под неё, а не под высшую видеокарту. Не замусоривайте систему.
Тестинг последней версии видеодрайвера и драйвера, точно предназначенного для видеокарты выявмл даже визуально более понятную и приятную глазу картинку а последнем случае. Отключается много ненужных эффектов, которые не используются (и не могут быть использованы в принципе) данными комплектующими.
Фильтрация
Билинейная фильтрация является самым простым алгоритмом и требует меньше вычислительной мощности, однако и дает наихудший результат. Трилинейная добавляет четкости, но наиболее продвинута анизотропная фильтрация, устраняющим заметные искажения на объектах, сильно наклоненных относительно камеры. В отличие от Би- и трилинейной фильтрации анизотропная успешно борется с эффектом ступенчатости. При использовании билинейной или трилинейной фильтрации с увеличением расстояния текстура становится более размытой, анизотропная же лишена этого недостатка.
Анизотропная фильтрация имеет коэффициент фильтрации (2x, 4x, 8x, 16x). Чем он выше, тем четче и естественнее выглядят текстуры. Анизотропная фильтрация требовательна к пропускной способности памяти. Считается, что на современных видеокартах она почти не влияет на FPS.
Наилучшее соотношение производительность/качество достигается при анизотропной фильтрации 4x или 8x.
Наш выбор - анизотропия 4х (в крайнем случае - 2х). Эффективность 4х почти такая же, как и 16х, нет смысла насиловать видеокарту чрезмерностью. Разница между отключенной анизотропией и 16x составляет всего лишь 2 кадра.
Качество и разрешение текстур не так сильно влияют на производительность видеокарты, как качество объектов, так как чем больше объектов одновременно нужно удерживать на экране, тем сложнее просчеты самих объектов и теней, которые они отбрасывают.
Поэтому - траву убираю полностью, тени убираю или в низкое качество. В сетевом бою тебе будет не до качества теней, ты его просто не успеешь оценить.
Тени нагружают видеокарту весьма ощутимо, потому у объектов меняется угол обзора и источник освещения, и чтобы тени выглядели мягко и реалистично, видеокарте нужно это просчитывать много раз и усреднять итоговые значения.
Шейдеры делятся на три типа: вершинные (Vertex Shader) - оперируют координатами, геометрические (Geometry Shader) - обрабатывают не только отдельные вершины, но и целые геометрические фигуры, состоящие максимум из 6 вершин, пиксельные (Pixel Shader)- работают с отдельными пикселами и их параметрами.
Шейдеры применяются для создания новых эффектов. Без них набор операций, которые разработчики могли бы использовать в играх, весьма ограничен. Добавление шейдеров позволило получать новые эффекты, по умолчанию не заложенные в видеокарте. Принудительное снижение шейдеров в настройках игры Hitman Blood Money позволило запустить игру на видеокарте, на которой игра не желала запускаться.
Видеокарте нужно расставить объекты, натянуть текстуры, рассчитать освещение, положить тени, сгладить неровности, и сделать это за микросекунды. Если какой-то этап занимает больше времени, чем положено, появляются фризы - подтормозка картинки, или по другому - проседание кадров в секунду.
Parallax mapping - это модифицированная версия bumpmapping, используемой для придания текстурам рельефности.
Parallax mapping существенно экономит вычислительные ресурсы компьютера, поскольку при использовании объектов-аналогов со столь же детальной 3D-структурой, производительности видеоадаптеров не хватало бы для просчета сцен в режиме реального времени.
Эффект чаще всего применяется для каменных мостовых, стен, кирпичей и плитки.
Наиболее ресурсоемкими настройками обычно являются качество текстур, качество теней и использование HDR.
Значительную нагрузку на графические процессоры создают такие эффекты как Bloom и Motion blur, для GTX - эффекты Global Illumination и Ambient Occlusion (Затенение фонового освещения).
Картинка с эффектами
https://ic.pics.livejournal.com/interes2012/25717847/485545/485545_original.jpghttps://ic.pics.livejournal.com/interes2012/25717847/327955/327955_original.jpgИ без эффектов
https://ic.pics.livejournal.com/interes2012/25717847/486677/486677_original.jpg Вода, гильзы, и всё такое ради производительности
Вода - они и есть вода, и какое вам дело до её качества? Ставим на минимум. Отражения на воде убираем в ноль.
Убираем отрисовку гильз - это мелкие объекты, съедающие ресурсы.
Количество трупов и время их хранения игрой - на минимум.
Количество ненужных мелких объектов - на минимум или их выключаем. В FEAR я постоянно кружки хватал, думая, что это аптечки, а это действует на нервы.
Отключение сглаживания мыши даст четкий контроль над оружием.
Отключаем окклюзию - затухание отдаляющихся звуков.
Если есть возможность - меняем значение FOV (угол обзора). Увеличение угла обзора прямо пропорционально уменьшению FPS. Эталонное значение - 70, наилучшее лежит в диапазоне 60- 80.
Количество снежинок-дождинок - на минимум или отключаем.
Также есть абсолютно не оптимизированные игры, типа халтурно сляпанной Gothic 3 или Crysis, и надо подбирать самому настройки.
Эффекты
High dynamic range (HDR) - Эффект, используемый в игровых сценах с контрастным освещением. Если одна область экрана является очень яркой, а другая, наоборот, затемненной, многие детали в каждой из них теряются, и они выглядят монотонными. HDR добавляет больше градаций в кадр и позволяет детализировать сцену.
Motion Blur - эффект смазывания изображения при быстром перемещении камеры. Может быть удачно применен, когда сцене следует придать больше динамики и скорости, поэтому особенно востребован в гоночных играх.
В шутерах использование размытия воспринимается однозначно отрицательно.
Лучше вырубать HDR и bloom.
Post-processing
Это общее название всех эффектов, которые накладываются на уже готовый кадр полностью просчитанной 3D-сцены (иными словами, на двухмерное изображение) для улучшения качества финальной картинки. Постпроцессинг использует пиксельные шейдеры.
Этот эффект нужен.
V-Sync - синхронизация кадров игры с частотой вертикальной развертки монитора. Полностью просчитанный игровой кадр выводится на экран в момент обновления на нем картинки. Важно, что очередной кадр (если он уже готов) появится не позже и не раньше, чем закончится вывод предыдущего.
При включенной вертикальной синхронизации FPS в игре не может превышать частоту вертикальной развертки монитора. Если же число кадров ниже этого значения (в нашем случае меньше, чем 60 Гц), то во избежание потерь производительности необходимо активировать тройную буферизацию, при которой кадры просчитываются заранее и хранятся в трех раздельных буферах, что позволяет чаще отправлять их на экран.
То есть вертикальная синхронизация - ограничитель кадров.
Видеокарта будет выдавать столько кадров, сколько способен выдать монитор (на большинстве ЖК мониторов частота регенерации составляет 60 Гц, следовательно видеокарта будет также выдавать 60 кадров в секунду. При отключении V-Sync, видеокарта будет выдавать столько кадров, сколько сможет рассчитать.
Лучше включать V-Sync, или придётся временами видеть поперечные полосы на экране.
Ambient Occlusion (глобальное освещение) - техника, применяемая для придания сцене фотореалистичности за счет создания более правдоподобного освещения находящихся в ней объектов, при котором учитывается наличие поблизости других предметов со своими характеристиками поглощения и отражения света. Это технология, которая просчитывает как объекты отражают свет, который на них падает, и как близко расположены объекты, затеняя друг друга. Это создает гораздо более реалистичную картинку с необходимыми затенениями в углах, но ОЧЕНЬ нагружает видеокарту.
SSAO - Screen Space Ambient Occlusion является модифицированной версией Ambient Occlusion и тоже имитирует непрямое освещение и затенение. Появление SSAO было обусловлено тем, что Ambient Occlusion при современном уровне быстродействия GPU не мог использоваться для просчета сцен в режиме реального времени. За повышенную производительность в SSAO приходится расплачиваться более низким качеством, однако даже его хватает для улучшения реалистичности картинки.
HBAO (Horizon-based Ambient Occlusion) - технология Nvidia. От SSAO это затенение отличалось тем, что оно основано на физической модели. Итоговое качество оказывается выше SSAO, но это бьёт по производительности. Поэтому HBAO рендерится обычно в более низком разрешении, что приводит к мерцанию картинки. Проблема мерцания была исправлена в HBAO+ внедрением шахматного рендеринга, то есть для обработки затенения используется часть предыдущего кадра и половина нового - это требует меньше затрат GPU, но при этом позволяет рендерить затенение в исходном разрешении, что и убирает мерцание. Рассчитывает HBAO целиком видеокарта.
HDAO (High Definition AO) - то же самое, что HBAO, только от AMD ATI-Radeon, в основе метода лежит Gather4 - технология, которая собирает 4 текселя в один регистр. То есть, как и с HBAO, по сути происходит рендеринг в пониженном разрешении. В итоге, в среднем картинка с HBAO и HDAO сравнима по качеству, но это сильно зависит от игры.
С выходом DX12 Nvidia представила новое затенение - VXAO (Voxel Accelerated Ambient Occlusion). Его суть в том, что оно работает с вокселями - аналогом пикселя в 3D. Итоговое качество картинки оказывается лучше, чем с HBAO+.
SSAO - выбор в сторону производительности.
Методы сглаживания
Методы сглаживания взаимодействуют с изображением ещё на уровне его построения. К ним относятся: SSAA (Supersample anti-aliasing) и MSAA (Multisample anti-aliasing), CSAA (Coverage Sampling Antialiasing) - последний это нечто среднее по производительности и по качеству.
Методы сглаживания создают картинку в несколько раз большую, чем необходимо, а потом сжимают ее до размеров экрана, получается красивая картинка, но при этом бешеная нагрузка на видеокарту. Потому что в зависимости от того, что вы выберете в настройках игры (2x, 4x или 8x), соответственно и изображение будет в два, четыре или в восемь раз больше необходимого, получается, что и нагрузка в два, четыре или восемь раз больше.
По тяжести 8х MSAA оказывается ощутимо легче, чем 4х SSAA при сравнимом качестве картинки.
CSAA и CFAA (Coverage Sampling anti-aliasing и Custom-filter anti-aliasing) - 8x CSAA/CFAA дает сравнимое с 8x MSAA качество картинки, однако потребляет примерно столько же ресурсов, столько и 4х MSAA. На сегодняшний момент CSAA и CFAA не используются - разработчики игр решили использовать унифицированные для всех видеокарт сглаживания.
Методы пост-обработки - когда сглаживание применяется уже к сформированной сцене.
FXAA (Fast approXimate anti-aliasing) - нетребовательное быстрое сглаживание. Алгоритм - совершается один проход по всем пикселям изображения и усредняются цвета соседних пикселей. Это не нагружает видеокарту, однако сильно мылит картинку. По сути тут идет выбор между замыливанием изображения и лесенками.
MLAA (MorphoLogical anti-aliasing) - аналог FXAA от Intel. Это сглаживание, работающее полностью на процессоре, поэтому практически не влияет на fps в играх при мощном процессоре. Изображение получается более качественным, чем с FXAA, однако до 2x MSAA все ещё далеко.
SMAA (Subpixel Morphological anti-aliasing) - смесь FXAA и MLAA. По сути несколько улучшенный MLAA, но работающий на видеокарте (так как процессор для сглаживания подходит гораздо хуже). Дает картинку, сравнимую с MLAA, лучше, чем FXAA, однако потребляет больше ресурсов. То есть
SMAA даёт чуть меньшее размытие, но и настолько же меньшее качество сглаживания, при том, что не сильно нагружает видеокарту.
TXAA (Temporal anti-aliasing) - доступно только на видеокартах от Nvidia, умеет работать с движущимися объектами и хорошо убирает «мельтешение» картинки. Даёт плавную качественную кинематографическую картинку, однако немного ее мылит. По сути является смесью MSAA и SMAA, и очень требовательно к ресурсам.
FSAA - Full Scene Anti-Aliasing (полносценный анти-алиасинг)
Алиасинг - эффект ступенчатости.
Изображение на экране состоит из множества точек - пикселей, а изображение трехмерной картинки состоит из множества плоских треугольников - полигонов. Треугольники - простейшие плоскости, комбинируя которые, легче всего строить любые трехмерные геометрические объекты. Они приближают нас к фотореалистичной графике, то есть к тому, что мы видим глазами в реальной жизни.
Как это работает - На краях трехмерных объектов можно различить “ступенчатую лесенку”. На наклонных линиях видно, что они не идеально прямые, а ступенчатые. Особенно это заметно на низких разрешениях, на высоких эффект уменьшается, но присутствует.
Анти-алиасинг - функция видеокарты, призванная максимально уменьшить эффект ступенчатости.
Anti-Aliasing (FSAA) и алгоритм сглаживания бывает аппаратный (задействуются ресурсы только видеокарты) или программный (задействуется и видеокарта, и процессор - достигается наилучший результат).
Например, при разрешении экрана 800х600 и установке режима FSAA 2x2, изображение будет расчитываться в разрешении 1600х1200, а затем сжиматься до 800х600 и выводиться на экран. При этом эффект лестницы заметно снизится.
Скорость от включения анти-алиасинга падает в режиме 2х2 в 4 раза, а в режиме 4х4 - в 16 раз. Но если играть хочется, и при этом бодро шутерить врагов на экране - приходится выбирать между качеством и производительностью.
Впрочем, в некоторых играх вырубание FSAA не ухудшает картинки.
Аntialising - Gamma correction - ставим значение On (Вкл). "Сглаживание гамма коррекции" сглаживает гамму при переходе от светлого тона к темному или же наоборот. Включение дает возможность сглаживать моменты, например, при "свечении" лица персонажа в лучах света. На производительность не влияет. По моему мнению, в гамма-коррекцию лучше не лезть, не запомнив настроек по умолчанию.
Maximus pre-render frames (Максимальное количество заранее подготовленных кадров) - значение 1 или 2 (выбирайте в зависимости от мощности вашего ЦП).
Максимально количество кадров после первого, которые может подготовить ЦП, для дальнейшей обработки ГП видеокарты. При одном кадре, от 1 до 8 кадров будут подготавливаться наперед, загружаться в память, нагружая ваш ЦП во время подготовки этих кадров. Ставим значение не более 3 (то есть 1 или 2), это позволит увеличить скорость обработки графики в реальном времени и значит - производительность.