SteamVR

SteamVR

koujaku Jun 11, 2020 @ 11:15am
OpenXR registry key
Heyas! Thanks for shipping this, I've been super excited to see Valve hop into OpenXR as well :)

I'm currently working on StereoKit (https://stereokit.net) and I've got it running on WMR and Oculus Desktop's OpenXR implementations. Unfortunately when I installed the SteamVR beta update, OpenXR didn't seem to switch over to the SteamVR runtime automatically. I checked the OpenXR/ActiveRuntime registry key, and I'm still on a previous runtime.

Is there an additional button or step I need to follow to activate SteamVR's runtime? Additionally, I hunted a bit for the correct json file for OpenXR to point to, but couldn't find it either! For development, I switch between different OpenXR runtimes by swapping out the registry key value using a powershell script.

edit: For anyone still stumbling across this, I've published a tool called OpenXR Explorer that includes functionality for switching OpenXR runtimes via a single GUI location. https://github.com/maluoi/openxr-explorer
Last edited by koujaku; Apr 5, 2022 @ 10:00am
< >
Showing 1-15 of 17 comments
runeberg Jun 11, 2020 @ 11:20am 
Originally posted by koujaku:
Heyas! Thanks for shipping this, I've been super excited to see Valve hop into OpenXR as well :)

I'm currently working on StereoKit (https://stereokit.net) and I've got it running on WMR and Oculus Desktop's OpenXR implementations. Unfortunately when I installed the SteamVR beta update, OpenXR didn't seem to switch over to the SteamVR runtime automatically. I checked the OpenXR/ActiveRuntime registry key, and I'm still on a previous runtime.

Is there an additional button or step I need to follow to activate SteamVR's runtime? Additionally, I hunted a bit for the correct json file for OpenXR to point to, but couldn't find it either! For development, I switch between different OpenXR runtimes by swapping out the registry key value using a powershell script.

Hi Koujaku - SteamVR should've showed a prompt asking if you want to change your default openxr runtime. You can also manually edit the value of this registry entry:

Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenXR\1\ActiveRuntime

to:

{drive}:\Program Files (x86)\Steam\steamapps\common\SteamVR\steamxr_win64.json

I hope that helps!
Last edited by runeberg; Jun 11, 2020 @ 11:30am
koujaku Jun 11, 2020 @ 11:27am 
Awesome! Thank you, that worked :) I've updated my powershell script here for anyone else that might be interested: ( https://github.com/maluoi/StereoKit/blob/develop/Tools/Set-OXR-Runtime.ps1 )

I didn't see a prompt for switching, not sure where that would have popped up!

edit: For anyone still stumbling across this, I've published a tool called OpenXR Explorer that includes functionality for switching OpenXR runtimes via a single GUI location. https://github.com/maluoi/openxr-explorer
Last edited by koujaku; Apr 5, 2022 @ 9:59am
Programmer Joe  [developer] Jun 11, 2020 @ 11:38am 
The prompt should have shown up when SteamVR started. I'll take a look at making that more aggressive.
koujaku Jun 11, 2020 @ 11:58am 
I did just spot the prompt! It showed up right after the update release notes prompt. My bad, I skip clicking those far too often.
hrydgard Jun 12, 2020 @ 2:36am 
Awesome to see this ship!

I would suggest that if no OpenXR runtime is currently set, just immediately set it to SteamVR without prompting. That will make for a smoother experience for the majority of people, even if it's just a small thing.
Toji Jun 12, 2020 @ 2:12pm 
For the record, I had previously experimented with the Oculus OpenXR runtime and as a result did see this message, and it did appear to update my registry key appropriately.

However, I had ALSO set (and forgotten) the XR_RUNTIME_JSON user environment variable to point at the Oculus runtime, and as a result that took precedence. That caused a good hour or so of debugging on my part, so I'm mentioning it here to help anyone else that happens to stumble across the same issue.

Don't know if SteamVR can/should take additional action to fix scenarios like mine, as it seems potentially intentional and entirely self-inflicted.
Ybalrid Jun 14, 2020 @ 8:39am 
For anybody that would want to set this registry key by hand without any hassle; Here's an export from regedit (you can paste this in a `.reg` file with notepad, then click on it to "install" (merge) it)

Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenXR\1] "ActiveRuntime"="C:\\Program Files (x86)\\Steam\\steamapps\\common\\SteamVR\\steamxr_win64.json"

( Assuming default installation path of Steam and SteamVR :2019smile: )
Oet Jun 15, 2020 @ 4:00pm 
I thought I saw a popup that let me choose between OpenXR and SteamVR. Now I don't see it anymore. My regedit currently points to steamxr_win64.json like mentioned above... How can I change it to a different openxr runtime?
Ybalrid Jun 15, 2020 @ 4:12pm 
Originally posted by Oet:
I thought I saw a popup that let me choose between OpenXR and SteamVR. Now I don't see it anymore. My regedit currently points to steamxr_win64.json like mentioned above... How can I change it to a different openxr runtime?

The popup do not let you "choose" between OpenXR and SteamVR, it ask you if you want SteamVR to be set as the currently active OpenXR runtime.

To switch back to another runtime (eg: Oculus) you should see how to set that specific runtime as the currently default one.

You could also just find the path to the OpenXR manifest file (a .json file somewhere in the runtime installation folder) and set the path directly via regedit.

If that can be of any help for you, the Oculus Runtime manifest path is
C:\Program Files\Oculus\Support\oculus-runtime\oculus_openxr_64.json
(still assuming it's installed on the default (C:\) drive)
Oet Jun 16, 2020 @ 3:16pm 
Thanks. That makes it more clear. What other OpenXR runtimes are applicable for a Valve Index besides SteamVR?
Ybalrid Jun 16, 2020 @ 3:49pm 
Originally posted by Oet:
Thanks. That makes it more clear. What other OpenXR runtimes are applicable for a Valve Index besides SteamVR?

None other than SteamVR. The cross-platformness of OpenXR works the other way around. 😉

Oculus has an OpenXR runtime (in beta IIRC) but you need an Oculus Headset (Rift, Rift S or Quest+Link cable).

WMR headset have OpenXR too.

On Linux, the Monado OpenXR runtime is more or less compatible with some hardware, but it's pretty early in development.

Technically now *Any* OpenXR application will work on your Valve Index through SteamVR, even if it wasn't developed for any SteamVR compatible headset originally. Application developers can just target the OpenXR API.

The "goal" is to be in the same situation we have with GPUs today. Any OpenGL/Vulkan/DirectX application can work on any GPU if it uses (correctly!) one of those APIs and the rest of the software platform (OS and drivers) supports it.

Think of OpenXR as "A Vulkan for VR headset" and as SteamVR (or any other OpenXR runtime) as "that Nvidia driver I had to install to use anything with it".

Today... As a end user, today, OpenXR is not really useful. Blender 2.83 is the only application on top of my head that you will want to go out of your way to use OpenXR to access. But in the long run, it should kill-off this silly situation of "game being exclusive to Oculus". If the developer (or game engine developer) choose to use OpenXR, it will work on a lot of different hardware from today and the future.
Dendy Jun 16, 2020 @ 9:44pm 
Originally posted by Oet:
Thanks. That makes it more clear. What other OpenXR runtimes are applicable for a Valve Index besides SteamVR?

You can find some runtimes to download on the front page: https://www.khronos.org/openxr/

On the same page you also can find that

Originally posted by liv::ybalrid:
Think of OpenXR as "A Vulkan for VR headset" and as SteamVR (or any other OpenXR runtime) as "that Nvidia driver I had to install to use anything with it".

is only a half true. OpenXR also aims compatibility between devices by specifying driver API. This will make able in the future to use any device with any runtime. I hope that such drivers will be open and available an all platforms without vendor lock.
Oet Jun 17, 2020 @ 3:04pm 
Originally posted by liv::ybalrid:
On Linux, the Monado OpenXR runtime is more or less compatible with some hardware, but it's pretty early in development.
Suppose I install Monado, could I just point the active_runtime.json to Monado instead of SteamVR in order for it to work?
~/.config/openxr/1/active_runtime.json -> ~/.local/share/Steam/steamapps/common/SteamVR/steamxr_linux64_patch.json
Ybalrid Jun 17, 2020 @ 3:12pm 
I think so yes. There also an environnement variable XR_RUNTIME_JSON that you can set to instruct the XR loader library where’s the runtime manifest to use. This is probably simpler than changing a registry key or symlink if you intend to switch runtime temporarely
ㄥoㄥıʞɐꞱ Apr 21, 2022 @ 4:47am 
I've written an easy to use tool for switching:
https://github.com/WaGi-Coding/OpenXR-Runtime-Switcher
< >
Showing 1-15 of 17 comments
Per page: 1530 50