Jump to content

OpenVR

From VR & AR Wiki
OpenVR
Information
Type Virtual Reality
Subtype Head-mounted display, SDK
Developer Valve
Operating System Windows, Mac, Linux
Devices Any
Release Date April 30, 2015
Website https://github.com/ValveSoftware/openvr
See also: SteamVR

OpenVR is a Virtual Reality software development kit (SDK) and application programming interface (API) developed by Valve. It allows an application to access VR hardware from multiple vendors without requiring the application to have specific knowledge of the device it is targeting.[1][2] The same API is used as the default interface and runtime by Valve's SteamVR platform, which provides the underlying implementation that talks to the hardware.[2]

Valve released OpenVR publicly on April 30, 2015, initially to support development for the HTC Vive together with its motion controllers and the Lighthouse tracking system. It replaced the earlier steamvr.h API that had been part of the Steamworks SDK.[2] Because OpenVR sits between the application and the headset, a single OpenVR title can run on any supported device, and existing applications can run on newly released hardware without modification.[1]

Architecture

The OpenVR API is implemented as a set of C++ interface classes composed of pure virtual functions.[3] An application initializes the API by calling vr::VR_Init, which takes an application type (Scene, Overlay, Background or Utility) and, on success, returns a pointer to the main Template:Abbr interface; the application later calls vr::VR_Shutdown to release resources.[3]

The SDK abstracts several distinct parts of a VR system so that an application does not have to address each headset, tracking system or input device directly. The principal interfaces are:[3]

Interface Purpose
IVRSystem Main interface for display, distortion, tracking, controller and event access.
IVRChaperone Provides access to the chaperone soft and hard play-area bounds.
IVRCompositor Lets an application render 3D content through the VR compositor.
IVROverlay Lets an application render 2D content through the VR compositor.
IVRInput Lets an application define and query bindable actions and action sets.
IVRRenderModels Gives an application access to controller and device render models.
IVRScreenshots Lets an application request and submit screenshots.

Features

  • Developers can create any application for OpenVR. The SDK is distributed under a licence with no content restriction or gatekeepers, and there is no certification process for OpenVR apps.[4]
  • OpenVR apps are not required to be distributed on Steam. Developers can distribute their apps on any channel.[4]
  • Lower barrier to entry for new hardware. Manufacturers can create hardware for OpenVR without Valve's explicit permission, and OpenVR allows existing apps to run on new hardware without modification.[4]
  • OpenVR apps are future proof. The OpenVR runtime updates without any application changes, so apps do not need to be modified to support new hardware or software updates.[4]
  • The OpenVR API and runtime were originally supported on Windows, Mac and Linux.[4] Valve ended SteamVR support for macOS on April 30, 2020, refocusing development on Windows and Linux, although legacy macOS builds remained available for existing users.[5]

Supported hardware

OpenVR is hardware-agnostic by design. Through the SteamVR runtime it supports headsets from multiple vendors, including the HTC Vive, the Oculus Rift, Windows Mixed Reality headsets and Valve's own Valve Index, among other SteamVR-compatible devices.[2] Vendors can add support for new headsets and controllers by supplying a SteamVR driver, after which existing OpenVR applications work with the new hardware without any application-side changes.[1]

Licence

The OpenVR SDK is open source and hosted on GitHub. It is distributed under the BSD 3-Clause ("New" or "Revised") License.[1][2]

Relationship to OpenXR

OpenXR is a royalty-free open standard for VR and AR developed by the Khronos Group with the goal of letting engines and developers target a single, non-proprietary API rather than porting an application to many vendor-specific SDKs.[6]

On June 25, 2020, Valve announced that it expected new features on SteamVR to appear "on the OpenXR side" rather than as new OpenVR APIs going forward, signalling a transition away from OpenVR as the platform's primary forward-looking API. At the same time Valve stated that OpenVR applications would continue to work not only on existing hardware but also on future headsets, so the move does not break compatibility for shipped titles.[6]

SteamVR version 1.16, released in February 2021, added full support for OpenXR 1.0, passing the OpenXR 1.0 conformance tests on Windows for Vulkan, OpenGL, Direct3D 11 and Direct3D 12.[7] SteamVR can act as an OpenXR runtime as well as an OpenVR runtime, so the same headset can run both older OpenVR titles and newer OpenXR titles.[7]

The OpenVR SDK continues to be maintained as of 2026; the GitHub repository reflects ongoing releases.[1] In practice OpenVR remains supported for existing and legacy applications while OpenXR has become the recommended target for new cross-platform VR development.[6][7]

References