Skip to main content Link Search Menu Expand Document (external link)

Table of contents

  1. Introduction
    1. What OpenComposite does
    2. Headset compatibility
    3. How is it different from OpenXR Toolkit?
  2. Game compatibility
    1. Third party software compatibility
  3. Step-by-step
  4. Alternative: the per-game install
  5. Tips for using OpenComposite
    1. Understand the difference between Steam and SteamVR
    2. OpenComposite “pretends” to be SteamVR
    3. Be sure to grab the OpenXR version of OpenComposite
    4. Don’t use the legacy OpenComposite-ACC, aka v0.6.3
    5. Don’t install/use the Windows Mixed Reality (WMR) Portal and/or Tools if you don’t have a WMR device
    6. Always make sure you are running the latest version
    7. Your SteamVR settings won’t matter anymore!
    8. Don’t set up everything at once!
    9. Disable OpenComposite for incompatible applications
    10. The game will not start with error -35
    11. The game will not start with error -13
    12. The game will not start with error -32
    13. The game will not start with error -2
    14. The game will crash at startup with a Vulkan error
    15. The game will not start with error “unknown config option”
    16. The image and/or OpenXR Toolkit menu is upside down
    17. If all else fails…
    18. More OpenXR Toolkit troubleshooting

Introduction

What OpenComposite does

The goal of OpenComposite is to run applications built on the legacy OpenVR (predecessor of OpenXR), which typically require SteamVR, to use OpenXR instead.

The diagram below show how games developed for OpenXR and OpenVR typically operate. This is before the introduction of OpenComposite.

Ecosystem before OpenComposite
Ecosystem before OpenComposite

The diagram below show how OpenComposite enables applications built for OpenVR to bypass SteamVR and to take advantage of OpenXR.

Ecosystem with OpenComposite
Ecosystem with OpenComposite

Headset compatibility

Headset brandHas native OpenXR support?Can leverage OpenComposite?OpenXR supports 32-bit apps?
Windows Mixed Reality (HP Reverb, Samsung Odyssey…)YesYesYes
Oculus (Rift, Quest, Quest 2, Quest Pro…)YesYesYes
Oculus (via Virtual Desktop)No [1]No [1] [4]No
Varjo (Aero, VR-3…)YesYesNo
Pimax (5K, 8K…)Yes [2]YesYes
HTC Tier 1 (Vive original, Vive Pro)No [3]No [4]No
HTC Tier 2 (Vive Cosmos, Vive Focus)Yes [3]YesNo
Valve IndexNoNo [4]No
Pico (Neo 3, Neo 4)NoNo [4]No

[1] Oculus Quest headsets run either with “Link” (cable or AirLink) and Virtual Desktop. When using Virtual Desktop, you must not use OpenComposite “system-wide” install, and perform the per-game install instead.

[2] Pimax support requires to use the unofficial PimaxXR OpenXR runtime.

[3] HTC headsets with outside-in tracking (Lighthouse) only work through SteamVR. HTC headsets with inside-out tracking have native OpenXR support (enabled through the VIVE Console software).

[4] While headsets without native OpenXR support will not see benefits from OpenComposite, you can still use OpenComposite to enable OpenXR Toolkit and leverage its features. Alternatively, you may look into vrperfkit for an OpenVR-only experience.

How is it different from OpenXR Toolkit?

OpenComposite is a separate software from OpenXR Toolkit, developed and maintained by a different team.

The goal of OpenXR Toolkit is to add functionality to OpenXR applications. However, not all applications are written for OpenXR, and therefore OpenXR Toolkit cannot be used with these applications, unless they can use OpenComposite to use OpenXR.

OpenXR Toolkit is not necessary in order to take advantage of OpenComposite to bypass SteamVR. OpenXR Toolkit can be optionally installed to add additional tweaks and performance-improvement features to the games using OpenXR directly or OpenComposite.

OpenXR Toolkit with OpenComposite
OpenXR Toolkit with OpenComposite

For more details on OpenVR, OpenXR, OpenComposite, you may read An Overview of VR Software Components.

Game compatibility

Both OpenComposite and OpenXR Tookit are limited in the applications that they support. Sometimes, combinations of OpenComposite plus OpenXR Toolkit are also not working. The table below tracks known games to work with OpenComposite and whether they also work with OpenXR Toolkit.

Do not use any version of OpenXR Toolkit older than 1.1.4 with OpenComposite. Older versions are not compatible.

There is an official compatibility for OpenComposite, and you can also refer to the table below for compatibility with OpenXR Toolkit.

GameOpenCompositeOpenXR Toolkit
American Truck Simulator 2YesYes
Assetto CorsaYesYes
Assetto Corsa CompetizioneYesYes [1]
Automobilista 2YesYes
Digital Combat SimulatorYesYes
Dirt Rally 2Yes [2]Yes [2]
Elite DangerousYesYes
Euro Truck Simulator 2YesYes
IL-2 SturmovikYesYes [3]
iRacingYesNo [4]
F1 2022YesYes
Pavlov VRYesYes
Project Cars 2YesYes
Project Cars 3YesYes
rFactor 2YesYes
SubnauticaYesYes
X-Plane 11Yes [5]No
X-Plane 12Yes [5]No

[1] Supports Eye-tracked Foveated Rendering.

[2] Dirt Rally 2 with the eye accomodation fix requires dr2vrfix-openxr.

[3] Does not support Fixed Foveated Rendering.

[4] iRacing now has official support for OpenXR, and OpenXR Toolkit is only compatible in that mode, and not with OpenComposite.

[5] On Windows Mixed Reality, X-Plane requires the use of OpenXR-Vk-D3D12.

Do you have a game working but it’s not in the list? Please file an Issue to let us know!

Third party software compatibility

A lot of mods don’t play well together. This includes ReShade, vrperfkit, openvr_fsr…

Before installing OpenComposite, be sure to disable them. You may run a repair of the game from Steam to do that and restore your original game DLLs.

Step-by-step

1) Make sure OpenXR is properly configured on your system.

How to do it on Windows Mixed Reality...

Use either one of the methods below.

From the Mixed Reality Portal:

Toggle OpenXR runtime

From the OpenXR Tools for Windows Mixed Reality:

Toggle OpenXR runtime
How to do it on Oculus...

Use either one of the methods below.

Toggle OpenXR runtime Toggle OpenXR runtime
How to do it on Varjo...

From the Varjo Base:

Toggle OpenXR runtime
How to do it on Pimax...

You must download PimaxXR.

From the PimaxXR Control Center:

Toggle OpenXR runtime
How to do it on HTC Vive Cosmos and Focus...

Open the VIVE Console for SteamVR:

Toggle OpenXR runtime

Use either one of the methods below.

Toggle OpenXR runtime Toggle OpenXR runtime

2) Download the OpenComposite Launcher and extract it to the installation locatio of your choice.

3) Turn OpenComposite on.

Open the OpenComposite.exe application:

OpenComposite application

Click “Switch to OpenComposite”:

OpenComposite application

4) If you ever want to undo these changes and revert back to SteamVR, simple use “Switch to SteamVR”:

OpenComposite application

Alternative: the per-game install

You should prefer using the OpenComposite Switcher “system-wide” install. However, in some cases, you might need to perform a per-game install.

1) Follow step 1) of the step-by-step guide above to properly setup OpenXR.

2) Make sure OpenComposite is not installed system-wide. If you ever used the OpenComposite switcher (OpenComposite.exe), make sure to use the switcher to “Switch to SteamVR”:

OpenComposite application

3) Locate your game’s installation folder.

4) Locate all copies of the openvr_api.dll file within the game’s installation folder: some games might have more than one copy!

OpenComposite per-game install

5) Download the replacement DLL and copy it to all locations identified in step 3). You may make a backup copy if needed.

6) If you ever want to undo these changes and revert back to SteamVR, most games have “repair” options that will restore the original files, or you restore your own backup made in step 4), or reinstall the game entirely.

Tips for using OpenComposite

Understand the difference between Steam and SteamVR

When using OpenComposite, you will bypass the SteamVR platform that enables your VR content to run. But you will still need to use Steam, the application store. Just because you will start a game from Steam doesn’t mean that it will use SteamVR (unless OpenComposite is not correctly set up for this game).

OpenComposite “pretends” to be SteamVR

OpenComposite replaces the SteamVR implementation of the OpenVR library. Therefore, OpenComposite replaces and pretends to be SteamVR. When starting an application, choose to use SteamVR! OpenComposite will intercept the intent to use SteamVR, and will redirect the application to OpenXR instead.

Start as SteamVR

For some applications that you cannot start from Steam, you might need to update the command-line options when starting the game to force use of SteamVR (and therefore OpenComposite). For example, with DCS, you must pass the extra command-line argument --force_steam_VR, which can be done by creating a shortcut to the dcs.exe application:

Start as SteamVR

Be sure to grab the OpenXR version of OpenComposite

OpenComposite was originally developed for Oculus. When looking up OpenComposite, you may end up on the GitLab page for the project, which defaults to the “main” branch, which is for Oculus only. Be sure to pick the “openxr” branch.

As shown in the link below, the URL ends with /tree/openxr.

https://gitlab.com/znixian/OpenOVR/-/tree/openxr

To confirm that you landed on the right place, you may look for “openxr” in the list box on the left, as shown below.

OpenComposite for OpenXR branch

If you mistakenly pick the incorrect version, you will get the following error at start up, referring to “LibOVR”:

OpenComposite OVR error

Don’t use the legacy OpenComposite-ACC, aka v0.6.3

Before being officially included in the OpenComposite project, support for OpenXR was implemented in a separate project by developer Jabbah. The name of the project was OpenComposite-ACC.

This project is now defunct and superseded by the official OpenComposite. If you get an error message containing the path to a file in a user “Jabbah” folder, then you are using the deprecated version, and you must immediately switch to the newer, official OpenComposite.

OpenComposite deprecated version

Don’t install/use the Windows Mixed Reality (WMR) Portal and/or Tools if you don’t have a WMR device

Many tutorials out there focus on setting up OpenComposite for Windows Mixed Reality (WMR). This is a specific category of headsets, like HP Reverb brand.

If your headset is of Oculus, Varjo, or Pimax branch, don’t bother with the WMR stuff!

Always make sure you are running the latest version

Before starting troubleshooting, always make sure you are running the latest version of the following:

  • Latest version of your OpenXR runtime. This is typically updated or installed via the Windows store (for Windows Mixed Reality) or the vendor’s software (for Oculus, Varjo). Sometimes, you will need to manually check the vendor’s website (for Pimax unofficial runtime for example).

  • Latest version of OpenComposite. If using the OpenComposite launcher, look for the update button.

OpenComposite update

  • Latest version of OpenXR Toolkit (if applicable), downloadable from the front page of this website.

Your SteamVR settings won’t matter anymore!

Any setting you used to change via SteamVR will be ignored with OpenComposite. You are bypassing SteamVR, therefore things like custom render scale (application resolution) will no longer be honored. This can lead to the impression that OpenComposite made your performance worse, however in most cases this is only because you previously had a lower render scale set in SteamVR.

SteamVR settings

You must now use the equivalent OpenXR or platform settings to achieve the same results (of changing render scale for example).

How to do it on Windows Mixed Reality...

From the OpenXR Tools for Windows Mixed Reality:

Set render scale
How to do it on Oculus...

Use either one of the methods below.

Set render scale Set render scale
How to do it on Varjo...

From the Varjo Base:

Set render scale
How to do it on Pimax...

From Pitool or the Pimax Client:

Set render scale

You can also do it universally from OpenXR Toolkit:

Override resolution OpenXR Toolkit

Don’t set up everything at once!

Before even considering the use of OpenXR Toolkit, test the application with just OpenComposite. If the application does not work with OpenComposite only, there is no point in adding OpenXR Toolkit in the mix. You must first get the application to work with OpenComposite, then try to enable OpenXR Toolkit.

You may use the OpenXR Toolkit Companion app (found on the desktop or Start menu) to disable the OpenXR Toolkit system-wide (1st checkbox near the top) or just for that application. Note that an application will only show up in the list after it is run at least once.

Disable OpenXR Toolkit

If you have other OpenXR API layers (“mods”), you should also try disabling them one at a time. Open the registry and navigate to HKEY_LOCAL_MACHINE\Software\Khronos\OpenXR\1\ApiLayers\Implicit. You will see a list of files, corresponding to all the OpenXR API layers installed:

API layers

You may disable an API layer by changing its value from 0 (enabled) to 1 (disabled). You can re-enable it later by reverting that change.

Disable OpenComposite for incompatible applications

If an application does not work with OpenComposite, you can disable OpenComposite through the OpenComposite Launcher by clicking “Switch to SteamVR”:

OpenComposite application

The game will not start with error -35

If your headset is not properly connected, powered on, or detected you will get the following error:

OpenComposite error message

Make sure to connect and power on your headset prior to starting your game.

If the issue persists, it is likely that you have not correctly set up your OpenXR runtime, and it is looking for the wrong headset (and cannot find it!). Read the next section about error -13 right below.

The game will not start with error -13

If no OpenXR runtime is currently set, you will get the following error:

OpenComposite error message

Follow the step-by-step guide further above to properly set up your OpenXR runtime.

If your OpenXR runtime is properly set, a registry key named ActiveRuntime will be created under HKEY_LOCAL_MACHINE\Software\Khronos\OpenXR\1.

ActiveRuntime

If the issue persists, check whether your application/game is 32-bit or 64-bit. See the Headset compatibility for list of headsets not supporting 32-bit applications with OpenXR.

The game will not start with error -32

If you get the following error:

OpenComposite error message

You are likely missing some system DLL files. The most common missing DLL is the Visual C++ Redistributables.

The game will not start with error -2

If you get the following error, and you are using Virtual Desktop:

OpenComposite error message

You must either:

  1. (Quest uses) Avoid using Virtual Desktop. Virtual Desktop forces you to run through SteamVR, which greatly reduces the benefits of using OpenComposite. Instead, use Air Link or Link cable, and follow the step-by-step guide further above to properly set up Oculus as your OpenXR runtime.

  2. Use the per-game install of OpenComposite rather then the OpenComposite Switcher.

The game will crash at startup with a Vulkan error

Create an opencomposite.ini file in the folder of the game, and add the following line to it:

initUsingVulkan=false

Make sure that the file extension is .ini and not .ini.txt!

If you are not sure where to create the file, check the OpenComposite log file: it will list the path where the file is searched.

The game will not start with error “unknown config option”

Don’t use a stale opencomposite.ini configuration file (from an older version of OpenComposite for example).

OpenComposite unknown config option

There are several tutorials online referencing the older OpenComposite-ACC project (see above), which supported different options than the newer OpenComposite. If you are getting errors mentioning unknown config options, try deleting the opencomposite.ini file in the application folder.

The image and/or OpenXR Toolkit menu is upside down

This can happen with certain buggy versions of OpenXR Toolkit or certain OpenXR runtimes.

Create an opencomposite.ini file in the folder of the game, and add the following line to it:

invertUsingShaders=true

Make sure that the file extension is .ini and not .ini.txt!

If you are not sure where to create the file, check the OpenComposite log file: it will list the path where the file is searched.

If all else fails…

Head to the OpenComposite Discord for support. Before posting, be sure to gather the OpenComposite log file from %LocalAppData%\OpenComposite\logs (just copy/paste this path into your Start menu or file explorer):

OpenComposite logs

When posting a message for support, always include the following information:

  • What game/application you are trying to use.
  • What headset you are using.
  • Always provide the log file.
  • Be very clear when you describe your issue.

More OpenXR Toolkit troubleshooting

See Troubleshooting for more details about OpenXR Toolkit troubleshooting.