Rectus / openxr-steamvr-passthrough

OpenXR API Layer for SteamVR camera passthrough
MIT License
125 stars 5 forks source link

OpenXR SteamVR Passthrough API Layer

This OpenXR API layer adds camera passthrough support to the SteamVR OpenXR runtime. It allows OpenXR applications that use the OpenXR passthrough feature to enable it when using the SteamVR runtime.

The SteamVR runtime itself does not currently support any OpenXR passthrough features, but provides access to the camera video feeds and projection data through the proprietary OpenVR interface. This layer acts as a compositor in-between the application and runtime, retrieves the passthrough data from OpenVR, and renders it on the frames submitted by the application before passing them on to the runtime.

Please report any issues! Any comments and suggestions are also appreciated.

DISCLAIMER

This is an experimental release. Please be careful when using the passthrough.

This software is distributed as-is, without any warranties or conditions of any kind. Use at your own risk!

Using the 3D stereo mode may induce heavy flickering on the display. Exercise caution if you are photosensitive.

Features

Limitations

Supported Headsets

The SteamVR settings UI will misconfigure the original HTC Vive camera if the frame rate is not set the right way. To correctly set it, click the right end of the slider instead of dragging it. The USB drivers may need to be reset if the camera is incorrectly configured.

The Valve Index camera poses may be poorly calibrated from the factory. The options menu allows adjusting the distance between cameras for better depth-perception when using the custom projection modes.

Installation

  1. Download and install the Visual Studio C++ Redistributable (64 bit)
  2. Download the API layer release from the GitHub Releases page, and extract the files to the location you want to keep them in.
  3. Run the passthrough-setup.exe utility, and select the Install option to install the API layer. Note that if you want to move the files, you will need to run the utility again.
  4. If you want to disable or uninstall the API layer, run the passthrough-setup.exe utility and select the Uninstall option.

Usage

Starting an OpenXR application will automatically start the API layer. If the application natively supports passthrough, the API layer will by default notify the application that additional environment blend modes are available. If the application does not support the OpenXR passthrough features, it is still possible to enable limited passthrough modes (see below).

While an application is running, the SteamVR dashboard will have an additional button in the bottom left, pressing it will open the settings overlay.

Settings menu

The options under the OpenXR Core allow setting what passthrough modes are available for the application to use, as well as what mode it should prefer. Some applications may automatically switch to the preferred mode even though they don't support passthrough.

The options under Overrides allow forcing the passthrough mode regardless of whether the application has support for passthrough. Note that the Alpha Blend mode will show nothing unless the application submits alpha channels to the compositor.

The Additive mode will blend the passthrough on top of the view.

The Opaque mode will replace the application view with the passthrough.

The Masked mode allows setting a chroma key color that gets replaced with the passthrough view, as well as range for how similar colors get replaced, and a smoothness of the transition.

The settings can also be edited from %APPDATA%\OpenXR SteamVR Passthrough\config.ini

See the project Wiki for more information.

Building from source

The following are required:

Possible improvements

Notes

Based on OpenXR-Layer-Template