The Oculus Quest Store and Oculus Rift Store now accept VR app submissions made with OpenXR instead of the proprietary Oculus SDKs.
Most VR games are made in Unity or Unreal Engine. Unity has no announced timeline for using OpenXR, currently focused on its own cross platform in-engine VR framework & tools. Unreal Engine added support for OpenXR in December.
What Is OpenXR?
OpenXR is an open standard for VR/AR. It was developed by Khronos, the same non-profit industry consortium managing OpenGL. The working group includes the major VR companies such as Facebook, Sony, Valve, Microsoft, HTC, NVIDIA, and AMD.
To clear up any confusion: OpenXR is not the same as OpenVR. That was Valve’s API for SteamVR. OpenVR works on all PC VR headsets, but it doesn’t support Android headsets like Quest and (due to Facebook’s policies) cannot be used in Oculus Store apps. In June, Valve announced that new SteamVR features would be “on the OpenXR side”.
The Problem OpenXR Solves
An API (Application Programming Interface) allows software to interact with other software or hardware. VR developers use APIs like Facebook’s Oculus and Valve’s OpenVR to build apps. The API is often part of an SDK (software development kit), and informally these terms are often used interchangeably.
The problem with the Oculus API is apps developed with it only work on Oculus hardware, with the caveat that hacks could make that software run on other systems. In addition, for developers using a custom engine, there are actually two separate APIs between Quest and Rift.
This means that if a developer wants to support all VR headsets, they need to use multiple APIs. This can be time consuming and increase complexity.
Engines like Unity and Unreal make this easier, and both are trying to separately unify VR APIs under their own new engine subsystems, but the problem still exists.
Will These Games Work On Other Headsets?
Microsoft was the first to add support for OpenXR to its Windows MR platform back in July of 2019. SteamVR has ‘preview’ support too.
This raises the obvious question: will OpenXR Oculus Rift Store games run on Valve Index, HTC Vive, or Windows MR headsets without the need for the ReVive hack?
Theoretically yes, but we’ll have to test this once such a game actually releases to confirm.
Developers submitting to the Oculus Store still need to use the Oculus Platform SDK to integrate the entitlement check (a very basic form of DRM, similar to Steam DRM). The Platform SDK is essentially the SDK for the social features, such as leaderboards, achievements and bringing Parties into the same session.
This check isn’t required for apps distributed through unofficial channels such as SideQuest, and can actually be added post-build, so shouldn’t prevent other headsets. It only tries to check whether the app was purchased, not which headset is running it.
Facebook notes the following known issues with the current OpenXR support, which it says will be fixed in future releases:
- Grip pose is misaligned.
- Action spaces continue to track even when isActive == false, which is conformant but misaligned with other runtimes. This will cause issues if relying on tracking state vs. isActive for rendering hands.
- Parent interaction profile bindings are missing for non-natively supported profiles (everything besides the Simple, Touch, and XBox controller profiles)
If you’re developing a VR app in a custom engine, or your own engine, and want to use OpenXR, you can find the Oculus documentation here for Windows.