Разница между VR API (OpenXR, SteamVR, Oculus)

ᅠ ᅠ
Непонятна разница между различными видами API для VR-игр?
ᅠ ᅠ
Путают множество похожих терминов, например, OpenXR, SteamVR, VDXR (Virtual Desktop XR), и непонятно какой выбрать для игр?

ᅠПредисловие

Я пользуюсь гарнитурой виртуальной реальности с конца 2024 года, и играл через Quest 3 уже немало игр. И в целом есть некоторое понимание, что к чему. Но в голове всё ещё иногда возникали примерно такие вопросы:

Если зайти в настройки Virtual Desktop Streamer, приложения на ПК, там можно выбрать варианты для OpenXR Runtime. И там можно выбрать Авто, SteamVR, или VDXR – какой и когда выбрать, и почему именно такой?

Есть еще какой-то Runtime, который используется для эксклюзивов Oculus. Например, в игре Stormland, или в Lone Echo.
В них, например, работает через Oculus. И чтобы нормально играть такие игры через Virtual Desktop (со всеми удобствами, и качеством AV1 кодека), требуется Revive загружать и использовать – почему так?

Это все путает. Можно ли это понять?

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

Давайте разберем всё по порядку:

Основные понятия:

  1. VR API (Application Programming Interface): Это язык, на котором игра (приложение) общается с VR-системой (шлемом, контроллерами, системой трекинга). Примеры: OpenVR (SteamVR), Oculus PC SDK (LibOVR), OpenXR.
  2. VR Runtime: Это программное обеспечение, работающее в фоновом режиме на вашем ПК. Оно:
    – Управляет подключенными VR-устройствами (шлем, базовые станции, контроллеры).
    – Обеспечивает работу "SteamVR Home" или "Oculus Dash" (те окружения, которые вы видите при включении).
    – Предоставляет реализацию одного или нескольких VR API для игр.
    – Обрабатывает композицию (сборку итогового изображения для каждого глаза) и отправку его на шлем.

Теперь разберем ключевых игроков:

OpenXR (API и Стандарт):

– Что это: Открытый, кроссплатформенный стандарт VR/AR, разрабатываемый Khronos Group (те же, кто за OpenGL/Vulkan). Его цель — устранить фрагментацию. Игра, написанная под OpenXR, в теории должна работать с любым шлемом и Runtime, поддерживающим стандарт.

– Как работает: Игра вызывает функции OpenXR API. Runtime (например, SteamVR, Oculus Runtime, VDXR) предоставляет реализацию этого API для конкретного оборудования.

– Аналогия: OpenXR — это как стандарт USB. Устройство (игра) знает, как общаться по USB. Хост (Runtime) знает, как принимать USB-сигналы и управлять подключенными USB-устройствами (шлемом).

SteamVR (Runtime + API OpenVR):

– Что это: Проприетарный Runtime и API (OpenVR) от Valve. Исторически доминирующее решение для ПК-VR, особенно для шлемов HTC Vive, Valve Index, и многих других через драйверы.

– API: Основной API — OpenVR. Хотя SteamVR Runtime также предоставляет реализацию OpenXR API.
С 2020-го Valve рекомендует разработчикам использовать OpenXR вместо OpenVR API для SteamVR.

– Роль: Управляет шлемами/контроллерами (часто через свои драйверы "SteamVR Tracking"), предоставляет среду SteamVR Home, композицию. Является мостом для многих игр и шлемов.

Oculus PC Runtime (Runtime + API Oculus SDK/LibOVR):

– Что это: Проприетарный Runtime и API (Oculus SDK, часто называемый LibOVR) от Meta (ранее Oculus) для ПК. Используется только для шлемов Oculus Rift (Rift, Rift S) и в режиме Oculus Link/Air Link с Quest.

– API: Основной API — Oculus SDK (LibOVR). Современные версии Runtime также предоставляют реализацию OpenXR API.

– Эксклюзивы: Игры, разработанные специфически под Oculus SDK (LibOVR) и часто финансируемые Oculus/Meta (как Stormland, Lone Echo, Asgard's Wrath), требуют этот Runtime для работы на ПК. Они напрямую вызывают функции LibOVR.

VDXR (Virtual Desktop XR Runtime):

– Что это: Проприетарная реализация OpenXR API, созданная разработчиками Matthieu Bucchianeri, Mathias Peter Nordskog, и Guy Godin (автором VD) для Virtual Desktop.

– Цель: Оптимизировать работу игр и приложений через стриминг Virtual Desktop на гарнитуры Quest (и другие standalone). Это не полноценный Runtime в том смысле, что он не управляет физическими устройствами напрямую (это делает драйвер шлема или другой Runtime). Это специализированная реализация OpenXR.

– Как работает: Когда игра использует OpenXR API, VDXR "перехватывает" эти вызовы и оптимизирует их для стриминга через Virtual Desktop. Он обходит необходимость прохождения через SteamVR или Oculus Runtime, что потенциально снижает задержку и нагрузку на CPU.
Разработчик Virtual Desktop (Guy Godin) заявляет что VDXR даёт примерно 10% лучшую производительно по сравнению со SteamVR.

– Аналогия: VDXR — это как специализированный драйвер USB-устройства (игры под OpenXR), оптимизированный для работы по Wi-Fi (стриминг Virtual Desktop).

Теперь про путаницу в настройках Virtual Desktop Streamer:

"OpenXR Runtime": Эта настройка указывает Virtual Desktop, какую реализацию OpenXR API использовать для игр, запускаемых через VD и использующих OpenXR.

Опции:

  • Automatic: Virtual Desktop попытается выбрать лучший вариант сам (часто SteamVR, если он установлен).
  • SteamVR: Будет использована реализация OpenXR API, предоставляемая SteamVR Runtime. Игра (OpenXR) -> SteamVR OpenXR -> SteamVR Runtime -> Virtual Desktop -> Шлем.
  • VDXR: Будет использована собственная оптимизированная реализация OpenXR от Virtual Desktop. Игра (OpenXR) -> VDXR -> Virtual Desktop -> Шлем. Этот путь часто предпочтителен для OpenXR игр при использовании VD, так как он короче и оптимизирован.

Почему эксклюзивы Oculus (Stormland, Lone Echo) не работают напрямую через Virtual Desktop без Revive?

  1. Нативный API: Эти игры написаны специфически под проприетарный API Oculus SDK (LibOVR). Они вообще не знают, что такое OpenXR или OpenVR (SteamVR).
  2. Требуют Oculus Runtime: Для работы им обязательно нужен Oculus PC Runtime, установленный на ПК, и они вызывают его функции напрямую.
  3. Virtual Desktop и Oculus Runtime: По умолчанию Virtual Desktop не эмулирует Oculus Runtime и не перехватывает вызовы LibOVR. Он фокусируется на SteamVR и OpenXR.
  4. Роль Revive: Это гениальный неофициальный проект. Он действует как переводчик или прокси:
    – Устанавливает свои DLL-библиотеки, которые притворяются Oculus Runtime (LibOVR) для игры.
    – Перехватывает вызовы LibOVR от игры.
    – Переводит (re-implements) эти вызовы в вызовы API, понятные SteamVR Runtime (OpenVR).
    – SteamVR Runtime, в свою очередь, работает с Virtual Desktop для стриминга на Quest.
    – Цепочка: Игра (Oculus SDK/LibOVR) -> Revive (эмуляция Oculus Runtime + перевод на OpenVR) -> SteamVR Runtime -> Virtual Desktop -> Шлем.

Итоговая схема выбора:

  1. Игра использует OpenXR (открытый стандарт)?
    – Если ДА: В настройках VD Streamer выбирайте VDXR (для лучшей оптимизации стриминга) или SteamVR/Oculus OpenXR, если по каким-то причинам VDXR не работает идеально.
    – Если НЕТ: Переходим к пункту 2.
  2. Игра использует SteamVR (OpenVR от Valve)?
    – Если ДА: Запускайте через SteamVR. В VD обычно выбирается автоматически. Runtime будет SteamVR.
    – В случае если вы уже подключены к пк через VD, и у вас уже принудительно выбран VDXR в настройках (не Авто), то скорее всего, игра требующая SteamVR (OpenVR API) не запустится вообще. Как вариант вы можете просто перед запуском такой игры вручную запускать SteamVR Runtime, и это будет игнорировать выбранную настройку VDXR.
    VDXR сам по себе не может обработать вызовы OpenVR API (от Valve). Потому что OpenVR (API) ≠ OpenXR (API) для оптимизации которого был сделан VDXR.
  3. Игра использует Oculus SDK (LibOVR) (эксклюзив)?
    – Если ДА: У вас два основных пути:
    → 1) Простой: Oculus Link/Air Link: Требует установки Oculus PC App и Runtime. Запускается напрямую через Oculus Dash. Самый нативный и часто самый стабильный путь для эксклюзивов Oculus.
    → 2) Продвинутый: Virtual Desktop + Revive: Требует установки Revive. Запускайте игру через библиотеку Revive (в SteamVR или через ярлык Revive).
    В VD специальный стример OpenXR Runtime (VDXR) не влияет в плане оптимизации цепочки на эти игры, так как они используют SteamVR Runtime через Revive.
    Но Плюс продвинутой связки в использовании всех удобств VD, и возможности без проблем использовать встроенные в VD современные кодеки AV1 10-bit и HEVC 10-bit дающие по воздуху отличное качество на битрейте 200мбит/с.
    (к слову, кодек AV1 предпочтительнее в большинстве ситуаций, но в некоторых играх, типа Far Cry 4 с VR модом от Luke Ross, кодек HEVC 10-bit может выдать больше мелких деталей на дальних пейзажах и в местах с обилием растительности, без смазывания / "стабилизации" которая характерна для AV1).
    – Virtual Desktop БЕЗ Revive: Не будет работать для нативных эксклюзивов Oculus (LibOVR).

Почему все это важно?

  • Производительность: Разные пути (VDXR, SteamVR OpenVR и OpenXR, Oculus с LivOVR и OpenXR, Revive+SteamVR) имеют разную нагрузку на CPU/GPU и задержку. VDXR оптимизирован для стриминга VD.

  • Совместимость: Не все игры поддерживают все API/Runtime. Эксклюзивы Oculus требуют либо Oculus Runtime (Link), либо эмуляцию через Revive.

  • Будущее: OpenXR — это стандарт, к которому движется индустрия. Разработчикам выгоднее писать под один OpenXR, чем под несколько проприетарных API. Со временем необходимость в Revive и путаница с Runtime должны уменьшиться. Однако, наследие (старые эксклюзивы Oculus LibOVR, игры на OpenVR) будет с нами еще долго.

Краткие рекомендации для Virtual Desktop:

  • Для большинства современных игр (особенно не эксклюзивов): Пробуйте использовать VDXR в настройках OpenXR Runtime. Это часто дает лучшую производительность.
  • Если VDXR не работает или игра старая: Используйте Авто или SteamVR (либо перед запуском игры вручную запускайте SteamVR – это аналогично).
  • Для эксклюзивов Oculus (Stormland, Lone Echo и т.д.):
    – Лучшая совместимость: Используйте Oculus Link/Air Link (требует Oculus PC App).
    – Лучшее качество и удобства через Virtual Desktop: Попробуйте Revive и запускайте игру через его интерфейс. Выбор OpenXR Runtime (VDXR) в VD не влияет на эти игры.

Надеюсь, это разъяснило слои взаимодействия между API, Runtime и такими инструментами, как Virtual Desktop и Revive! Путаница понятна, это действительно сложный ландшафт, но он постепенно упрощается с распространением OpenXR.

77
11
11