OpenVR

OpenVR is a software development kit (SDK) and application programming interface (API) developed by Valve for supporting the SteamVR and other virtual reality headset devices. The SteamVR platform uses it as the default application programming interface and runtime. It serves as the interface between the virtual reality hardware and software and is implemented by SteamVR.

Although OpenVR is the default SDK for HTC Vive, it was developed to have multiple vendor support. For instance, a developer can design OpenVR-based trigger button functions for controllers of Oculus Rift or Windows MR because these systems are both supported by the SDK.

Valve has announced that they will be cooperating with the Open Source Virtual Reality project, although the extent of the cooperation is unclear.

Initial Release
OpenVR SDK was released to the public on 30 April 2015 by Valve, for developers to develop SteamVR games and software. It provides support for the HTC Vive Developer Edition, including the SteamVR controller and Lighthouse. OpenVR SDK was an important step towards the release of the first HTC Vive Developer Edition.

The OpenVR SDK has replaced the API that was previously available in steamvr.h in the Steamworks SDK. The old API will continue to receive support indefinitely, but applications that require any of the new features must switch to the new SDK.

A number of new interfaces were added, and existing interfaces received new methods. Details can be found in the OpenVR API documentation.

With the OpenVR SDK, software can now be connected to SteamVR hardware. The SDK can be downloaded from the OpenVR GitHub page. It supports all SteamVR products.

The SteamVR Unity Plugin and native SteamVR support in Unreal 4.8 have been implemented to support Unity in addition to the OpenVR SDK support. Both were available shortly after the initial release of OpenVR.

Release Notes
Changes from the SteamVR interface in SteamWorks SDK 1.31 to Initial release of OpenVR include


 * IHmd is now IVRSystem
 * Added support for multiple tracked objects.
 * Moved fetching of various values about HMDs and other tracked devices into properties.
 * Added support for providing applications with models and textures for tracked devices.
 * Clarified and changed tracking prediction.
 * Added origin to calls that return poses.
 * Renamed IVRSystem::ZeroTracker to IVRSystem::ResetSeatedZeroPose
 * Added angular velocity and velocity to the data returned with a tracked device's pose.
 * CAPI and C# bindings for OpenVR interfaces added to headers.
 * Added IVRSystem::PollNextEvent to the API.
 * Added new interface IVRChaperone to query chaperone hard and soft bounds.
 * IVRSystem::GetHiddenAreaMesh. It returns the stencil mesh to use to minimize pixel rendering for the current HMD.
 * Removed GetIPD. Use the property Prop_UserIpdMeters_Float instead.
 * Added IVRCompositor interface