Первое крупное обновление открытого стандарта OpenXR

OpenXR – это открытый стандарт, который устанавливает унифицированный способ взаимодействия между аппаратным обеспечением и приложениями для виртуальной (VR) и дополненной реальности (AR). Недавно он получил свое первое крупное обновление. Версия OpenXR 1.1 расширяет стандарт новой функциональностью, которая была важна для индустрии, но до этого не стандартизирована.

Работа над стандартом проводится под эгидой организации Khronos Group. OpenXR – это стандарт, не предусматривающий выплату авторских отчислений, цель которого – стандартизация разработки приложений VR и AR для создания более взаимосовместимой экосистемы. Стандарт разрабатывается с апреля 2017 года и со временем получил поддержку практически всех ведущих компаний в индустрии VR, а также значимых игроков в сфере AR, хотя компания Apple остаётся в стороне.

Что нового в OpenXR 1.1?

Следуя за выпуском OpenXR версии 1.0 в 2019 году, новый релиз OpenXR 1.1 является первым большим обновлением за более чем четыре с половиной года. Это обновление демонстрирует, как стандарт развивается в соответствии с потребностями индустрии, что было частью изначального плана.

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

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

Ключевые нововведения и планы развития OpenXR

В обновлённую версию OpenXR 1.1 были включены пять возможностей, которые изначально были расширениями:

  • Local Floor: предоставляет новое пространство с гравитационно-ориентированным и закреплённым в мире началом координат для контента на уровне стоячей позиции пользователя, которое можно переместить на текущую позицию пользователя одним нажатием кнопки без процедуры калибровки. Также интегрирована встроенная оценка высоты пола.
  • Stereo with Foveated Rendering: обеспечивает первичную конфигурацию вида для реализации фовеального рендеринга с отслеживанием глаз или фиксированного фовеального рендеринга для XR-гарнитур через несколько API графического рендеринга. Это особенно полезно для эффективной визуализации дисплеев с высоким разрешением, которые создают большую нагрузку на GPU.
  • Grip Surface: предоставляет стандартный идентификатор позиции для надёжного закрепления визуального контента относительно физической руки пользователя, независимо от того, отслеживается ли положение руки напрямую или определяется по положению и ориентации физического контроллера.
  • XrUuid: предоставляет общий тип данных для хранения уникального универсального идентификатора, который соответствует IETF RFC 4122.
  • xrLocateSpaces: предоставляет функцию определения пространств для повышения производительности и упрощения кода приложения, позволяя определить массив пространств в одном вызове функции, заполняя «массив структур», вместо ограничения определением одного пространства на вызов функции.

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

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