Whenever you’ve searched for making cross-platform virtual reality, you probably have come across these terms: OpenXR, OpenVR, SteamVR, UnityXR.
And it’s very easy to mix them up, as they all sound similar.
OpenXR is an open standard by the Khronos group for augmented reality and virtual reality. XR refers to the superset of AR and VR.
The goal is that developers can create cross-platform code which is supported on many XR devices and platforms.
Many XR vendors provide implementations of OpenXR. For example headset manufacturers such as Meta or Magic Leap.
On the other end, also high-level software supports OpenXR. For example, Unity and Unreal plugins for XR. Therefore, as a developer, you will rarely use the OpenXR standard directly.
Open VR/Steam VR
OpenVR is an API for accessing VR headsets. It was developed by Valve and can be implemented as a driver by VR headset manufacturers.
Steam is a platform for selling games. It is run by the game developer and publisher Valve Corporation.
SteamVR is included in the Steam client in order to run VR games. It supports multiple devices such as the Valve Index, HTC Vive, Meta, and Windows Mixed Reality devices.
SteamVR implements both, Open VR and Open XR.
Unity developed its own SDK for developing cross-platform VR and AR apps. Sometimes it’s referred to as Unity XR. In the package manager, you find it under the name “XR Plugin Management”. It lets you easily switch between different plugins for different XR devices.
As you can see in the screenshot, OpenXR is a supported plugin by Unity. Thus, even devices without a dedicated Unity plugin might be supported via Open XR. For example, Vive devices are not supported by Unity itself, but there is an Open XR Plugin.
In addition to the core XR plugin, there are also frameworks for high-level interactions.
- ARFoundation for mobile augmented reality
- XR Interaction toolkit for virtual and augmented reality headsets
OpenXR is the official standard for developing cross-platform XR apps.
Unity provides its own solution for cross-platform development. You can use OpenXR under the hood, but it won’t affect your code.
OpenVR is a proprietary SDK by Valve. At the moment there is no reason to use it for other devices.