# valvesoftware/openvr

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/valvesoftware-openvr).**

6,615 stars · 1,309 forks · C++ · BSD-3-Clause

## Links

- GitHub: https://github.com/ValveSoftware/openvr
- Homepage: http://steamvr.com
- awesome-repositories: https://awesome-repositories.com/repository/valvesoftware-openvr.md

## Topics

`hardware` `openvr-sdk` `sdk` `steamvr` `steamvr-plugin` `vr`

## Description

OpenVR is a software development kit and runtime that provides a unified API for accessing virtual reality hardware from multiple manufacturers. It abstracts vendor-specific headsets, controllers, and tracking systems into a common interface, enabling applications to work across different VR devices without requiring hardware-specific code. The SDK handles core VR operations including stereoscopic frame submission to a compositor, headset and controller tracking, and input binding that maps abstract application actions to physical device controls.

The runtime is built around a modular driver plugin architecture that loads hardware drivers as separate DLLs, allowing third-party devices to integrate without modifying the core system. It includes a compositor-based rendering pipeline that applies distortion correction and lens-matched display, an overlay rendering system for drawing persistent 2D images at arbitrary 3D positions, and a skeletal input pipeline for delivering hand and body animation data. The SDK also provides room-scale boundary definition and visualization through a chaperone mesh, and supports custom input binding configurations that let users create and share action-to-device mappings.

OpenVR integrates with the Steam platform to launch VR applications, manage sessions through a dashboard overlay, and customize virtual home environments with community content. It exposes interfaces for monitoring VR system status and adjusting visual, audio, and input settings. The SDK includes a Driver API for building and registering custom hardware drivers, with support for device input control exposure, server-side device provider implementation, and skeletal animation data provision.

## Tags

### Part of an Awesome List

- [Hardware Vendor Abstractions](https://awesome-repositories.com/f/awesome-lists/devtools/vendor-abstraction-libraries/hardware-vendor-abstractions.md) — Provides a unified API for tracking, rendering, and input across multiple VR headset manufacturers.
- [VR Pose Tracking APIs](https://awesome-repositories.com/f/awesome-lists/devtools/diy-hardware-and-firmware/vr-headset-firmware/vr-pose-tracking-apis.md) — Tracks headset and controller position and orientation through a unified API call. ([source](https://github.com/ValveSoftware/openvr/wiki/API-Documentation))
- [VR Overlay Renderers](https://awesome-repositories.com/f/awesome-lists/devtools/canvas-and-webgl-graphics/webgl-rendering-pipelines/vr-renderers/vr-overlay-renderers.md) — Draws persistent 2D images at arbitrary 3D positions on top of running VR applications.
- [VR Input Control Exposures](https://awesome-repositories.com/f/awesome-lists/devtools/input-and-controllers/controller-input-mappers/device-aware-input-switching/vr-input-control-exposures.md) — Exposes VR controller inputs like buttons and triggers through a dedicated driver input API. ([source](https://github.com/ValveSoftware/openvr/wiki/Driver-Documentation))

### Hardware & IoT

- [SteamVR Integrations](https://awesome-repositories.com/f/hardware-iot/steamvr-integrations.md) — Serves as the primary SDK and runtime for building VR applications that integrate with the SteamVR ecosystem.
- [Unified Hardware Interfaces](https://awesome-repositories.com/f/hardware-iot/unified-hardware-interfaces.md) — Provides a unified hardware interface that abstracts differences between VR devices from multiple manufacturers. ([source](https://cdn.jsdelivr.net/gh/valvesoftware/openvr@master/README.md))
- [VR Driver Bridges](https://awesome-repositories.com/f/hardware-iot/custom-hardware-drivers/vr-driver-bridges.md) — Includes a Driver API for building and registering custom VR hardware drivers that integrate with the runtime. ([source](https://cdn.jsdelivr.net/gh/valvesoftware/openvr@master/README.md))

### Data & Databases

- [VR Driver Plugin Systems](https://awesome-repositories.com/f/data-databases/storage-abstraction/storage-provider-drivers/task-and-device-drivers/decoupled-driver-architectures/vr-driver-plugin-systems.md) — Loads VR hardware drivers as separate DLLs with a manifest system for third-party device integration.

### Graphics & Multimedia

- [VR Compositor Frame Submissions](https://awesome-repositories.com/f/graphics-multimedia/remote-gaming-streaming-clients/compositor-frame-streams/vr-compositor-frame-submissions.md) — Submits stereoscopic frames to a compositor for distortion-corrected display on VR headsets.
- [Stereoscopic Rendering Integrations](https://awesome-repositories.com/f/graphics-multimedia/stereoscopic-rendering-integrations.md) — Submits stereoscopic frames to a compositor for distortion-corrected display on VR headsets. ([source](https://github.com/ValveSoftware/openvr/wiki/API-Documentation))
- [VR Hardware Compatibility](https://awesome-repositories.com/f/graphics-multimedia/vr-hardware-compatibility.md) — Provides a unified API that abstracts vendor-specific VR hardware for cross-headset compatibility. ([source](https://steamvr.com/))
- [VR Runtime Initializations](https://awesome-repositories.com/f/graphics-multimedia/vr-hardware-compatibility/vr-runtime-initializations.md) — Initializes connected VR hardware and provides interfaces for tracking, rendering, and input. ([source](https://github.com/ValveSoftware/openvr/wiki/API-Documentation))
- [VR Overlay Renderings](https://awesome-repositories.com/f/graphics-multimedia/hybrid-2d-3d-rendering/vr-overlay-renderings.md) — Draws persistent 2D images at arbitrary 3D positions on top of running VR applications. ([source](https://github.com/ValveSoftware/openvr/wiki/API-Documentation))
- [VR Skeletal Input Pipelines](https://awesome-repositories.com/f/graphics-multimedia/media-production-suites/animation-tools/keyframe-skeletal-systems/skeletal-animation-systems/vr-skeletal-input-pipelines.md) — Delivers hand and body skeletal animation data from tracking devices through a dedicated input pipeline. ([source](https://github.com/ValveSoftware/openvr/wiki/Driver-Documentation))
- [VR Skeletal Input Systems](https://awesome-repositories.com/f/graphics-multimedia/media-production-suites/animation-tools/keyframe-skeletal-systems/skeletal-animation-systems/vr-skeletal-input-systems.md) — Delivers hand or body animation data through the Skeletal Input system for VR tracking devices.
- [VR Skeletal Input Pipelines](https://awesome-repositories.com/f/graphics-multimedia/mesh-processing-apis/skeletal-animation/vr-skeletal-input-pipelines.md) — Delivers hand and body animation data through a dedicated API for VR skeletal tracking devices.
- [VR Chaperone Boundary Visualizations](https://awesome-repositories.com/f/graphics-multimedia/room-area-creation/vr-chaperone-boundary-visualizations.md) — Visualizes room-scale play area boundaries as a chaperone mesh to help users avoid collisions. ([source](https://steamvr.com/))
- [VR Chaperone Meshes](https://awesome-repositories.com/f/graphics-multimedia/room-area-creation/vr-chaperone-meshes.md) — Defines and visualizes physical play area boundaries as a 3D chaperone mesh for VR safety.
- [VR Play Area Boundaries](https://awesome-repositories.com/f/graphics-multimedia/room-area-creation/vr-play-area-boundaries.md) — Defines and visualizes room-scale physical boundaries to stay aware of real-world space while immersed.
- [Room Area Definition](https://awesome-repositories.com/f/graphics-multimedia/room-area-definition.md) — Defines and manages room-scale physical play area boundaries for spatial awareness in VR. ([source](http://steamvr.com))

### Software Engineering & Architecture

- [VR Application Runtimes](https://awesome-repositories.com/f/software-engineering-architecture/browser-platforms/vr-platforms/vr-application-runtimes.md) — Runs VR applications under SteamVR to launch and interact with supported hardware through a common platform. ([source](https://cdn.jsdelivr.net/gh/valvesoftware/openvr@master/README.md))
- [VR Dashboard Overlays](https://awesome-repositories.com/f/software-engineering-architecture/overlay-rendering-architectures/desktop-overlays/vr-dashboard-overlays.md) — Opens a dashboard overlay to switch games, browse the store, and interact with the desktop in VR. ([source](http://steamvr.com))
- [VR Overlay Renderers](https://awesome-repositories.com/f/software-engineering-architecture/overlay-rendering-architectures/vr-overlay-renderers.md) — Draws persistent 2D images at arbitrary 3D positions on top of running VR applications.

### User Interface & Experience

- [VR Action Bindings](https://awesome-repositories.com/f/user-interface-experience/state-update-logic/state-action-value-updates/instance-scoped-action-dispatchers/action-dispatch-abstractions/vr-action-bindings.md) — Provides configurable bindings that map abstract application actions to physical VR controller inputs.

### Game Development

- [VR Input Binding Configurators](https://awesome-repositories.com/f/game-development/vr-input-handling/vr-input-binding-configurators.md) — Defines action-to-device mappings so any controller works with any VR application.

### Operating Systems & Systems Programming

- [VR Action-to-Device Mappings](https://awesome-repositories.com/f/operating-systems-systems-programming/hardware-input-bindings/vr-action-to-device-mappings.md) — Creates and shares configurable action-to-device mappings so any controller works with any VR application. ([source](https://github.com/ValveSoftware/openvr/wiki/API-Documentation))
- [VR Session Launchers](https://awesome-repositories.com/f/operating-systems-systems-programming/steam-library-integration/vr-session-launchers.md) — Launches and manages VR sessions through Steam's dashboard overlay and community features.
