SteamVR Guide

SteamVR: Как улучшить графику в VR играх for SteamVR

SteamVR: Как улучшить графику в VR играх

Overview

Как сделать игры для SteamVR визуально более приглядными c использованием настроек SteamVR. Данное руководство о настройках суперсемплинга (Supersampling, SS) и репроекции (Reprojection) кадров.

.

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

Данная версия руководства актуальна для версии SteamVR 1.9 и 1.10 beta (скриншоты из версии beta 1.10.15)

1. Введение

В данном руководстве затронуты очень важные возможности и настройки SteamVR. Про которые желательно знать всем владельцам шлемов виртуальной реальности (VR), совместимых с SteamVR (OpenVR).

2. Суперсэмплинг

Суперсэмплинг, он же полноэкранное сглаживание, он же Full-scene Anti-aliasing (FSAA), он же Supersample anti-aliasing (SSAA) — самая старая разновидность антиалиасинга. Полноэкранное сглаживание позволяет устранить характерные «лесенки» на границах полигонов. Многие современные разновидности сглаживания в VR работают крайне плохо, и выглядит это как правило как “мыльное” изображение, за исключением возможно MSAA и TXAA, но зависит от конкретной реализации.
Повышая разрешение рендеринга с помощью настройки суперсемплинга можно получить очень приятную для глаз картинку в игре. Однако следует учитывать, что полноэкранное сглаживание потребляет немало вычислительных ресурсов, что приводит к падению частоты кадров (как с этим бороться смотрите в той части руководства в которой говорится о репроекции кадров). Вероятно самый лучший вариант это комбинировать суперсэмплинг с MSAA или TXAA, если данные типы сглаживания присутствуют в игре или приложении.

SteamVR оперирует двумя настройками суперсемплинга одна для игр и приложений, вторая для VR интерфейса Steam и оверлеев сторонних программ (так же называют его “Дашбоард“, Dashboard, Compositor). Настройка суперсемплинга для игр и приложений происходит, через интерфейс SteamVR. Напрямую настроить разрешение для дашборда (композитора) нельзя, можно косвенно на нее повлиять через конфигурационные файлы, а вообще зависит от скорости видеокарты.
В этом гайде рассматривается только настройка суперсемплинга для игр и приложений.

Суперсемплинг в SteamVR задается процентами, во вспомогательных утилитах (а так же например в ПО Oculus) или в файлах конфигурациях SteamVR задается коэффициентами.
Примеры:
20% = 0.2
100% = 1.0
153% = 1.53
400% = 4.0

100% или коэффициент 1.0 обозначает стандартное разрешение рендеринга для шлема, оно немного больше чем разрешение экранов.

Разрешения рендеринга (не матриц экранов!) для разных шлемов при суперсемплинге 1.0 или 100% на один глаз: Шлем: <коэффициенты отличия от размерности матрицы> = <разрешение рендеринга при суперсемплинге 1.0> (<кол-во пикселей в одном кадре на один глаз>) HTC Vive: 1.40x and 1.40x = 1512 x 1680 (2.540M пикселей) LCD WMR: 1.11x and 1.11x = 1592 x 1592 (2.534M) (нужно перепроверить, возможны изменения) Samsung Odyssey/Odyssey+: 0.99x and 1.11x = 1424 x 1780 (2.534M) (нужно перепроверить, возможны изменения) Oculus Rift: 1.24x and 1.33x = 1344 x 1600 (2.150M) Oculus S: 1.29x and 1.23x = 1648×1776 (2.927M) (в режиме приоритета качества) HTC Vive Pro: 1.40x and 1.40x = 2016 x 2240 (4.515M) Valve Index: 1.40x and 1.40x = 2016 x 2240 (4.515M) кол-во пикселей в скобках указано без учета не используемых областей экрана, которые различаются у разных шлемов

Больше 100% или коэффициент больше 1 будет означать увеличение разрешение рендеринга, а значит и повышения требования к “железу”, Меньше 100% или коэффициент меньше 1 будет приводить к уменьшению разрешения рендеринга и снижению требования к “железу” для данного приложения или игры.

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

Для того чтобы показать как происходит умножение процентов и коэффициентов, вот несколько примеров:
100%*150%=150% (1.0*1.5=1.5)
150%*150%=225% (1.5*1.5=2.25)

Имейте ввиду что в некоторых играх внутри игровая настройка может задаваться не процентами, а коэффициентом, и этот коэффициент может обозначать вовсе не во сколько раз общее кол-во пикселей отличается от оригинального разрешения рендеринга, а размерность по одной из сторон разрешения. То есть может показывать на сколько изменятся размерность разрешения по вертикали и горизонтали. Например коэффициент 2.0 означает 400% пикселей в итоговом разрешении в отличии от оригинального разрешения для рендеринга шлема. Это старая система обозначения суперсемплинга которая применялась в старых версия SteamVR. К слову в ПО Oculus до сих пор используется именно это система. Поэтому например коэффициент 1.2 в ПО Oculus аналогичен 140% в СтимВР (1.2 x 1.2 = 1.4 =140%)

2.1 Настройка через интерфейс SteamVR

Самый простой способ настраивать суперсемплинг – настраивать его через интерфейс SteamVR.
Чтобы открыть настройки нажмите в нижнем правом углу дашборда SteamVR значок настроек. В окне настроек выберите раздел “Видео”.


В этом окне по умолчанию не установлен режим управления суперсемплингом в ручную (на изображении выше выставлен ручной режим).
SteamVR при запуске производит короткое тестирование производительности видео карты и на ее основе выставляет рекомендуемое для вашей видеокарты значение суперсемплинга. Если вы установите в этом окне галку ручного управления, то увидите это значение.
Например для шлема HTC Vive будет предлагаться следующие значения для разных видеокарт:
GTX 970 = 100%
GTX 1060 = 100%
GTX 1070 = 130%
GTX 1080 = 150%
GTX 1080Ti = 150%
Как видите 150% это максимальное ограничение в SteamVR для устанавливаемых по умолчанию значений.

Ползунок и есть настройка общего суперсемплинга для VR игр и приложений. Для большинства игр и приложений не требуется перезапуск, если изменения не вносят корректировку в качество изображения(чтобы убедится возможно стоит в более широком диапазоне проверить выставляя например очень низкие значения, например 20%-40%) то либо приложение автоматически меняет суперсемплинг самостоятельно, либо настраивается только своими встроенными настройками или нужно выполнить перезапуск игры/приложения для применения настроек SteamVR.
Здесь же в окне вы можете видеть разрешение рендеринга на один глаз в пикселях.

Кроме того для того чтобы не настраивать данный ползунок каждый раз при запуске другой новой игры, предусмотрена корректирующая настройка для каждого отдельного приложения. Вы можете выставить в разделе настроек “Видео” постоянный коэффициент или оставить автоматический режим который выставит значение которое лучше подходит для видеокарты по мнению SteamVR и по кнопке “Per-Application Video Settings” (“Настройки видео для приложения”) выбрать корректировку суперсемплинга с помощью ползунка именно для этой конкретной игры.


Если игра у вас запущена название игры в ниспадающем поле выбора игры подставится автоматически. Выставленное значение ползунком будет сохранено и применяться автоматически при каждом запуске данной игры/приложения .
Рассмотрим пример:
Предположим что у вас Vive и GTX 1070, и в настройках “Видео” у вас включена автоматическая установка значение суперсемплинга (галочка снята), ориентировочно значение у вас там будет 130% (1.3).
В настройке “На-Приложение” для конкретной игры установлено в 110%
Значит итоговое значение суперсемплинга SteamVR у вас будет 130%*110%=1.3*1.1=1.43 или 143% от разрешения рендеринга по умолчанию для шлема. (не забывайте что игра может иметь и свою настройку внутри игры, можно оставить ее равной 100% или 1.0, и управлять только из SteamVR, иначе вам нужно и эту настройку внутри игры учитывать аналогично).
Итоговое разрешение показывает только в настройках видео “на-приложение”, только тут SteamVR умножает глобальную настройку и настройку на-приложение. В общем разделе “Видео” показываемое разрешение на глаз не учитывает настройку на приложение. Не очень это интуитивно понятно сделано, но что есть то есть….

2.2 Настройка суперсемплинга через конфигурационные файлы

Теперь о том как настроить через конфигурационные файлы, это способ для тех кто любит трудности. Данный способ не рекомендуется тем кто не знает синтаксиса файлов JSON (JavaScript Object Notation).

И так, как настроить через конфигурационные файлы:

Конфигурационный файл steamvr.vrsettings расположен в папке <путь где лежит папка Steam>steamconfig):
Найдите код

“steamvr” : { ….. ….. },

Вставьте в середину раздела строку или найдите уже существующую и откорректируйте значение:

“supersampleScale” : 2.0,

запятая в конце нужна если это не последняя строка в разделе.
Всё, вы настроили общую глобальную настройку суперсемплинга для игр с коэффициентом 2.0 (то есть 200%, тут указывается именно в виде коэффициента), вы можете менять на более подходящий. Только не забывайте что при правке SteamVR не должен быть запущен.

Для настройки “на-приложение”, ищите код типа:

“steam.app.488310” : { “disableAsync” : false, “motionSmoothingOverride” : 0, “resolutionScale” : 150 },

для каждой игры создается такой раздел. Параметр “resolutionScale” отвечает за настройку. Указывается в процентах.

2.3 Какие конкретные значения коэффициентов выставлять?

Какие значения коэффициентов выставлять – все зависит от производительности вашей системы, требований самой игры или приложения к системе, ваших личных ощущений “плавности картинки” игры или приложения.
Если вы новичок в VR возможно имеет смысл общее значение суперсемплинга оставить в автоматическом режиме, и регулировать только значения для отдельных игр и приложений.
Корректирующие значения для приложений (раздел настроек видео “На-Приложение”) по умолчанию выставлены в 100% что фактически означает, что будет браться общее значение (раздел настроек “Видео”).
В той или иной игре значение приемлемое для вас может быть очень разным. Выбирайте пробуйте и экспериментируйте.

Стоит упомянуть, что в некоторых играх может иметься такой функционал как
“Динамическое разрешение”, который может изменять настройки суперсемплинга на ходу. И игра при этом может ориентироваться (брать как максимальное значение для своего некоторого диапазона) или игнорировать значения которые вы выставите в настройках, игра будет при этом менять значения суперсеплинга в зависимости от загруженности вашей видеокарты. Яркие примеры таких игр :
Doom VFR – игнорирует ваши настройки, можно отключить динамическое разрешение через консоль
PAYDAY 2 – использует ваши настройки как ориентир, можно отключить динамическое разрешение через настройки игры
The Elder Scrolls V: Skyrim VR – использует ваши настройки как ориентир, можно отключить динамическое разрешение через настройки игры
The Lab, SteamVR Home – использует ваши настройки как ориентир, нельзя отключить динамическое разрешение, так же управляет автоматически сглаживанием MSAA.

3. Репроекция кадров

Немного теории… Asynchronous Reprojection, Interleaved Reprojection, Motion Smoothing – это функционал SteamVR предназначенный для предотвращения появления пропущенных кадров в тех случаях когда приложение или игра не способна выдавать fps равный частоте экранов вашего шлема.
Asynchronous Reprojection, Interleaved Reprojection, Motion Smoothing это функционал SteamVR который генерирует синтетические кадры на основе предыдущих кадров (производится это путем репроекции предыдущего кадра таким образом чтобы у пользователя сложилось впечатление, что это новый кадр, даже не смотря на движение шлема, то есть чтобы сложилось впечатление, что приложение или игра продолжает успевать выдавать новые кадры с требуемой частотой), и они доступны только для следующих шлемов: HTC Vive, HTC Vive Pro, Valve Index. Остальные шлемы которые поддерживаются в SteamVR имеют схожий функционал, но он выполняется не композитором SteamVR, а на стороне программного обеспечения вашего шлема (то есть родным композитором вашего шлема)…

  • Interleaved Reprojection (Репроекция с чередованием) – репроекцируется каждый второй кадр, то есть от приложения уже не требуется 90 fps (для шлема с частотой 90Hz), достаточно 45 (или кадр за 22мс). Это снижает требования к приложению/игре. Но тем не менее есть и минусы, если при повороте головы вам все еще будет казаться что плавность сохранилась как при 90 fps то у близких объектов (руки или оружие) или быстро перемещающихся объектов будут заметны артефакты двоения или ряби. При включенной опции, режим Interleaved Reprojection в процессе игры будет включаться автоматически как только кадр не будет готов за отведенные 11 мс (для частоты кадров 90Hz, для других другие значения), выход из это режима будет происходить так же автоматически по определенному алгоритму, в режим стандартной частоты кадров шлема.
  • Asynchronous Reprojection (Асинхронная репроеция) – репроекцируется не каждый второй, а предыдущий кадр только в том случае если приложение/игра не успевает отрендерить в положенные 11мс(для частоты 90Hz) новый кадр. Визуально этот вид репроекции самый лучший, хотя все те же артефакты можно заметить.
  • Motion Smoothing (Сглаживание движений) – Если у вас есть телевизор с плоским экраном, вам может быть знаком термин «Сглаживание движений». Оно применяется в телевизорах посредством интерполяции между двумя существующими кадрами для создания нового промежуточного кадра. В результате происходит сглаживание кадров и увеличение их частоты, однако также появляется задержка, что допустимо для телевизора, но не для виртуальной реальности. Сглаживание движений в SteamVR применяется несколько иначе. Когда SteamVR видит, что приложение не успевает за частотой кадров (то есть, начинает пропускать кадры), включается функция сглаживания движений. Она смотрит на два последних пришедших кадра, рассчитывает движение и анимацию, а затем экстраполирует новый кадр. Синтез новых кадров сохраняет полную частоту кадров в текущем приложении, поддерживает движение вперёд и предотвращает скачки. Это означает, что пользователь по-прежнему видит полноценную частоту кадров, но приложению необходимо обрабатывать лишь один из двух кадров, что значительно снижает требования к производительности. Более того, если синтез нового кадра для каждого кадра, отправленного приложением, вызывает проблемы производительности, сглаживание движений сможет синтезировать два или даже три кадра для каждого поступившего. Данный метод имеет немного другой тип артефактов, например в автосимуляторах вы увидите как края покрышек “съедаются” изображением дороги…. да и в целом любые быстро движущиеся объекты на экране могут иметь немного искаженную геометрию в следствии действия Сглаживания движений.

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

Чтобы настроить Motion Smoothing откройте раздел “Видео” в настройках, вы можете в данном разделе настроить глобальную настройку: Включить, Выключить или перевести в режим постоянной работы. Или настроить в настройках видео “на-приложение” поведение данной настройки для конкретной игры: Использовать общую(глобальную) настройку, Включить, Выключить или включить режим постоянной работы. Режим постоянной работы – это режим когда игру вынуждают генерировать в два (три, четыре и т.п.) раз меньше кадров, с целью меньшей загрузки графического адаптера на постоянной основе, а не по мере необходимости как в режиме просто “Включить”. Это бывает полезно когда производительности не хватает, но постоянно включение и выключение Motion Smoothing вызывает подергивания изображения, можно попробовать этот режим чтоб Motion Smoothing работал постоянно. Но возможно вам вообще захочется отключить Motion Smoothing (можно отключить глобальной настройкой, а включать при необходимости настройкой “на-приложение”) если визуальные артефакты вам не понравятся.


Тут же есть опция “Использовать классический режим репроекции”, название этой опции не совсем верное и может запутать. Данная опция отключает так называемый асинхронный режим работы композитора SteamVR, что приводит к тому что Asynchronous Reprojection, Interleaved Reprojection, Motion Smoothing – отключаются. Если время кадра выйдет за лимит отведенный на кадр, то ни каких синтетических кадров подставляться не будет, кадр будет пропускаться, а на экране вы будете видеть микрофризы… Однако такой режим бывает полезен иногда в некоторых играх, при использовании этой опции экономится немного времени на подготовку кадра которую съедает CPU. Если вы уверены что игра способна выдавать очень стабильный fps без сильных перепадов, то можете попробовать этот режим.

4. Заключение

Данный материал подготовлен на основе опыта админов и рядовых участников Steam-группы Vive Rus
и дискорд-сервера VR RUS[discord.gg].
Если вы нашли какие то ошибки и неточности, сообщите об этом в комментариях к данному руководству.

SteamSolo.com