Virtual reality: Difference between revisions

From ArchWiki
No edit summary
(→‎ALVR: Remove dead package link and sentence with it)
 
(59 intermediate revisions by 18 users not shown)
Line 1: Line 1:
[[Category:Graphics]]
[[Category:Graphics]]
[[ja:バーチャルリアリティ]]
[[ja:バーチャルリアリティ]]
[[zh-hans:虚拟现实]]
[[zh-hans:Virtual reality]]
{{Out of date|Many packages have been deleted.[https://lists.archlinux.org/archives/list/aur-requests@lists.archlinux.org/thread/3RB6RNSZSGLK6FIOMBLHBIWMTBP67YFN/][https://lists.archlinux.org/archives/list/aur-requests@lists.archlinux.org/thread/JPCVDYENJLEXSYTRVBLJMLOJEYZT3QPL/][https://lists.archlinux.org/archives/list/aur-requests@lists.archlinux.org/thread/OLFAQMQ6HSF6NG4IS3DPA3A4OBM3OWZ4/]}}
 
[[Wikipedia:Virtual reality|Virtual reality]] is the process of simulating an environment for a user, using a variety of peripherals, head mounted displays or [[Wikipedia:Cave automatic virtual environment|CAVEs]], and trackers. Instead of showing you a static viewpoint from a screen, it renders your viewpoint relative to where you are standing, on a head-attached or projected surface, to give an effect identical to your own eyes.
[[Wikipedia:Virtual reality|Virtual reality]] is the process of simulating an environment for a user, using a variety of peripherals, head mounted displays or [[Wikipedia:Cave automatic virtual environment|CAVEs]], and trackers. Instead of showing you a static viewpoint from a screen, it renders your viewpoint relative to where you are standing, on a head-attached or projected surface, to give an effect identical to your own eyes.


A number of peripherals have been released or are about to be released recently which have brought affordable, extremely immersive virtual reality to everyone. Most of these peripherals have full or partial Linux support, and many have [[AUR]] packages.
A number of peripherals have been released or are about to be released recently which have brought affordable, extremely immersive virtual reality to everyone. Most of these peripherals have full or partial Linux support, and many have [[AUR]] packages.


==Compatibility matrix==
== Compatibility matrix ==
 
{{Style|Use [[Template:Yes]] and question marks.}}
 
'''Legend:'''
 
* Green: natively supported
* Yellow: support via toolkit or partial support
* Red: broken support
* Uncolored: unknown/unfinished/planned support


{| class="wikitable"
{| class="wikitable"
Line 26: Line 19:
|-
|-
!Dolphin (original VR fork)
!Dolphin (original VR fork)
| {{G|}}
| {{Yes}}
|
| {{C|?}}
| {{Y|Partially complete}}
| {{Y|Partially complete}}
|
| {{C|?}}
| {{G|}}
| {{Yes}}
|-
|-
!Dolphin (official OSVR support)
!Dolphin (official OSVR support)
| {{Y|Via OSVR}}
| {{Y|Via OSVR}}
| {{G|}}
| {{Yes}}
|
| {{C|?}}
| {{Y|Via OSVR}}
| {{Y|Via OSVR}}
| {{Y|Via OSVR}}
| {{Y|Via OSVR}}
|-
|-
!Minecrift (Minecraft VR)
!Minecrift (Minecraft VR)
| {{G|}}
| {{Yes}}
|(Planned) Via OSVR-SteamVR
| {{C|(Planned) Via OSVR-SteamVR}}
|(Planned)
| {{C|(Planned)}}
|(Planned) Via OSVR
| {{C|(Planned) Via OSVR}}
| {{G|}}
| {{Yes}}
|-
|-
!Janus VR
!Janus VR
| {{G|}}
| {{Yes}}
| {{G|}}
| {{Yes}}
| {{G|}}
| {{Yes}}
| {{G|}}
| {{Yes}}
| {{Y|Via OSVR}}
| {{Y|Via OSVR}}
|-
!Vircadia
| {{Y|Via SteamVR-OpenHMD}}
| {{C|Unknown if working via SteamVR-OSVR}}
| {{Y|Legacy input}}
| {{C|Not in Linux build and unknown if still supported}}
| {{C|?}}
|-
|-
!Team Fortress 2
!Team Fortress 2
Line 68: Line 68:
|-
|-
!VRUI VR Toolkit and demos
!VRUI VR Toolkit and demos
| {{G|}}
| {{Yes}}
|
| {{C|?}}
|
| {{C|?}}
| {{G|}}
| {{Yes}}
| {{G|}}
| {{Yes}}
|-
|-
!4089: The Ghost Within
!4089: The Ghost Within
Line 82: Line 82:
|-
|-
!Games/Programs in Wine
!Games/Programs in Wine
| {{Y|1=On OVRSDK versions <=0.5.0.0, with {{Aur|oculus-wine-wrapper-git}} and {{Aur|wine-unity3d-git}}}}
| {{Y|1=On OVRSDK versions <=0.5.0.0, with {{Aur|oculus-wine-wrapper-git}}{{Broken package link|package not found}} and {{Aur|wine-unity3d-git}}{{Broken package link|package not found}}}}
| {{Y|Trackers work perfectly. Unity demos without Render Manager 'work' but are buggy, ones using the Render Manager display a white or black screen.}}
| {{Y|Trackers work perfectly. Unity demos without Render Manager 'work' but are buggy, ones using the Render Manager display a white or black screen.}}
|
| {{C|?}}
|
| {{C|?}}
|
| {{C|?}}
|}
|}


==Supported peripherals and toolkits==
== Supported peripherals and toolkits ==
 
=== OpenXR ===


===OpenXR===
[https://www.khronos.org/openxr/ OpenXR] is an open, royalty-free standard for access to virtual reality and augmented reality platforms and devices. It is maintained by the Khronos Group and adopted by most of the industry. Most runtimes support OpenXR.


OpenXR is an open, royalty-free standard for access to virtual reality and augmented reality platforms and devices. It is maintained by the Khronos Group and adopted by most of the industry. Most runtimes support OpenXR.
=== Monado ===


===Monado===
[https://monado.dev/ Monado] is an open source OpenXR runtime developed by Collabora. It is under heavy development and aims to provide a common runtime supporting most headsets. Current progress can be found here: https://monado.freedesktop.org/


Monado is an open source OpenXR runtime developed by Collabora. It is under heavy development and aims to provide a common runtime supporting most headsets. Current progress can be found here: https://monado.freedesktop.org/
Install using {{AUR|monado}}.


===OpenVR / SteamVR===
=== OpenVR / SteamVR ===


OpenVR is an effort by Valve to create an open API for VR development. Unfortunately, while the API is open, the actual default implementation (SteamVR) is not. It provides an OpenXR runtime
OpenVR is an effort by Valve to create an open API for VR development. Unfortunately, while the API is open, the actual default implementation (SteamVR) is not. It provides an OpenXR runtime


====Setting up====
==== Setting up ====
 
[[Install]] [[Vulkan]] and [[Steam]]. If using [[NVIDIA]] drivers, you may need to set the [[Vulkan#NVIDIA - vulkan is not working and can not initialize|VK_DRIVER_FILES]] environment variable. Required dependencies for 32-bit packages are: {{Pkg|lib32-gtk2}}, {{Pkg|lib32-libva}}, {{Pkg|lib32-libvdpau}}.


Install [[Steam]], and from it install SteamVR from the tools menu.  
From steam, install SteamVR from the tools menu.


====Troubleshooting====
==== Troubleshooting ====


=====Configuration or startup errors=====
===== Configuration or startup errors =====


SteamVR/OpenVR create a config directory ~/.openvr that can get misconfigured over the various versions. Delete that directory and completely uninstall/reinstall SteamVR.
SteamVR/OpenVR creates a directory {{ic|~/.openvr}} that can get misconfigured over the various versions. Delete that directory and completely uninstall/reinstall SteamVR.


It can also apparently have trouble accessing the Rift under some configurations. An alternative is to use the OSVR-SteamVR driver and the OSVR-Oculus-Rift plugin.
It can also apparently have trouble accessing the Rift under some configurations. An alternative is to use the OSVR-SteamVR driver and the OSVR-Oculus-Rift plugin.


==== ALVR ====
ALVR is a SteamVR driver which allows game streaming to standalone headsets like the Meta/Oculus Quest. It is available in the {{aur|alvr}} and {{aur|alvr-git}} packages.


=== OpenHMD ===
=== OpenHMD ===
Line 130: Line 136:
==== SteamVR support ====
==== SteamVR support ====


It is possible to use OpenHMD with SteamVR. To do that, you need to install {{aur|steamvr-openhmd-git}} and create symlink that points to the OpenHMD SteamVR driver inside your SteamVR drivers directory, e.g.:
It is possible to use OpenHMD with SteamVR. To do that, you need to install {{AUR|steamvr-openhmd-git}} and create symlink that points to the OpenHMD SteamVR driver inside your SteamVR drivers directory, for example:


  ln -s /usr/lib/steamvr/openhmd ~/.steam/steam/steamapps/common/SteamVR/drivers/openhmd
$ ln -s /usr/lib/steamvr/openhmd ~/.steam/steam/steamapps/common/SteamVR/drivers/openhmd


==Deprecated peripherals and toolkits==
== Deprecated peripherals and toolkits ==


===OSVR===
=== OSVR ===


OSVR is a joint effort by Sensics, Inc (a long standing VR company) and Razer to create a completely or nearly completely open software API for VR, in which end developers only need to hook their individual headsets into a few functions in order to get first-rate support. It supports the widest variety of peripherals, as well as having extremely flexible config via the JSON config files.
OSVR is a joint effort by Sensics, Inc (a long standing VR company) and Razer to create a completely or nearly completely open software API for VR, in which end developers only need to hook their individual headsets into a few functions in order to get first-rate support. It supports the widest variety of peripherals, as well as having extremely flexible configuration via JSON files.


It also provides a plugin which allows it to act as an OpenVR implementation, letting you use it to play OpenVR/SteamVR games with any peripherals it supports.
It also provides a plugin which allows it to act as an OpenVR implementation, letting you use it to play OpenVR/SteamVR games with any peripherals it supports.


====Setting up====
==== Setting up ====


Install {{Aur|osvr-core-git}}, and whatever plugins are neccesary to support your individual device. Currently available external plugins include:
Install {{Aur|osvr-core-git}}, and whatever plugins are necessary to support your individual device. Currently available external plugins include:


{{aur|osvr-oculus-rift-git}}
{{aur|osvr-oculus-rift-git}}{{Broken package link|package not found}}


{{aur|osvr-leap-motion-git}}
{{aur|osvr-leap-motion-git}}{{Broken package link|package not found}}


If wish to use OSVR with SteamVR/OpenVR games and applications, install {{Aur|osvr-steamvr-git}} and symlink the driver to your SteamVR installation.
If wish to use OSVR with SteamVR/OpenVR games and applications, install {{Aur|osvr-steamvr-git}} and symlink the driver to your SteamVR installation.
Line 160: Line 166:
To test that your installation is working and your trackers are available, install {{aur|osvr-tracker-viewer-git}} and run {{ic|OSVRTrackerView}}. You should see a set of axis for each tracker OSVR can pick up. If you do not, run {{ic|osvr_print_tree}} to see what trackers are available or if there is a configuration issue.
To test that your installation is working and your trackers are available, install {{aur|osvr-tracker-viewer-git}} and run {{ic|OSVRTrackerView}}. You should see a set of axis for each tracker OSVR can pick up. If you do not, run {{ic|osvr_print_tree}} to see what trackers are available or if there is a configuration issue.


===Oculus Rift===
=== Oculus Rift ===


Oculus stopped supporting Linux.
Oculus stopped supporting Linux.
Line 166: Line 172:
See [[Oculus Rift]].
See [[Oculus Rift]].


===Leap Motion===
=== Leap Motion ===


The Leap Motion is an incredibly affordable hand tracker which can easily be mounted on the faceplate of an HMD to allow you to interact with virtual objects. Unfortunately, the latest Orion software is not available for Linux while it is awaiting porting, so the currently available tracking is functional but excessively buggy. As such, it is only really suitable on Linux for social interaction, but seeing as it costs less than 1/10th what an HMD or equivalent tracking system, it is still a fairly useful device.
The Leap Motion is an incredibly affordable hand tracker which can easily be mounted on the faceplate of an HMD to allow you to interact with virtual objects. Unfortunately, the latest Orion software is not available for Linux while it is awaiting porting, so the currently available tracking is functional but excessively buggy. As such, it is only really suitable on Linux for social interaction, but seeing as it costs less than 1/10th what an HMD or equivalent tracking system, it is still a fairly useful device.


====Setting up====
==== Setting up ====


Install {{aur|leap-motion-driver}}, {{aur|osvr-leap-motion-git}} and optionally {{aur|leap-motion-sdk}}.  
Install {{aur|leap-motion-driver}}{{Broken package link|package not found}}, {{aur|osvr-leap-motion-git}}{{Broken package link|package not found}} and optionally {{aur|leap-motion-sdk}}{{Broken package link|package not found}}.  


To configure, enable and start {{ic|leapd.service}} and run {{ic|LeapControlPanel}}. To test that tracking works, run the {{ic|Playground}} demo included with the installation.
To configure, enable and start {{ic|leapd.service}} and run {{ic|LeapControlPanel}}. To test that tracking works, run the {{ic|Playground}} demo included with the installation.


==Supported software==
== Supported software ==


Currently there are a handful of apps which work well on the Rift and Linux, with several of them being in the AUR.
Currently there are a handful of applications which work well on the Rift and Linux, with several of them being in the AUR.


===Dolphin (original VR fork)===
=== Dolphin (original VR fork) ===


{{Aur|dolphin-emu-vr-git}} is an emulator for Gamecube, with patches to allow it to have full headtracking stereoscopic rendering, as well as a number of customizations to make games work well out of the box in VR (for example, disabling culling functions to let you view the entire world).  
{{Aur|dolphin-emu-vr-git}}{{Broken package link|package not found}} is an emulator for Gamecube, with patches to allow it to have full headtracking stereoscopic rendering, as well as a number of customizations to make games work well out of the box in VR (for example, disabling culling functions to let you view the entire world).  


Support has for the most part been discontinued, in light of the Dolphin project beginning to officially support OSVR upstream.
Support has for the most part been discontinued, in light of the Dolphin project beginning to officially support OSVR upstream.
Line 188: Line 194:
{{Note|When using this application with the Rift, it works correctly with Portrait (Direct) Mode, and should be run with the Rift un-rotated to minimize latency.}}
{{Note|When using this application with the Rift, it works correctly with Portrait (Direct) Mode, and should be run with the Rift un-rotated to minimize latency.}}


===Dolphin (official OSVR support)===
=== Dolphin (official OSVR support) ===


The Dolphin project has begun to work on adding support for VR officially using OSVR, available through the package {{aur|dolphin-emu-osvr-git}}. It can even use OSVR's path tree inputs as controller inputs, such that you can use a pinch or sixaxis controller input as a wiimote input. Support is limited in places however, as the fork is not as far along as the original Oculus-only fork was.
The Dolphin project has begun to work on adding support for VR officially using OSVR, available through the package {{aur|dolphin-emu-osvr-git}}{{Broken package link|package not found}}. It can even use OSVR's path tree inputs as controller inputs, such that you can use a pinch or sixaxis controller input as a wiimote input. Support is limited in places however, as the fork is not as far along as the original Oculus-only fork was.


===Games/Programs in Wine===
=== Games/Programs in Wine ===


A number of applications have some level of compatibility when using Wine, but often require some level of tweaks to make them function as expected.
A number of applications have some level of compatibility when using Wine, but often require some level of tweaks to make them function as expected.


{{Aur|oculus-wine-wrapper-git}} is a utility to patch up the differences between the Linux and Windows versions of the Oculus SDK when running Wine. It creates a shared memory context for the Wine application to use, letting the app access the native Oculus SDK. No installation of the SDK to the wineprefix appears to be necessary.
{{Aur|oculus-wine-wrapper-git}}{{Broken package link|package not found}} is a utility to patch up the differences between the Linux and Windows versions of the Oculus SDK when running Wine. It creates a shared memory context for the Wine application to use, letting the app access the native Oculus SDK. No installation of the SDK to the wineprefix appears to be necessary.


====Unity games====
==== Unity games ====


To get the best performance in Unity based games, ideally you should force them into OpenGL mode with the {{ic|-force-opengl}}. However this is not currently possible with an unpatched wine, as the WGL context it tries to force has some differences from a typical GLX context, [http://wiki.unity3d.com/index.php/Running_Unity_on_Linux_through_Wine#.22-force-opengl.22_option_crashing_Unity_.28Experimental_fix.29 as described here]. Using the {{Aur|wine-unity3d-git}} package will allow you to run these games with native OpenGL, allowing you to play them with decent performance on your machine. Unfortunately they often try to change the video mode or mess with other settings, so supplying default screen settings may be neccesary. Additionally, since it is using native OpenGL, nvidia's __GL_THREADED_OPTIMIZATIONS may give a significant performance gain. Overall, the command should look something like this:
{{Out of date|Linked AUR packages were dropped, see https://lists.archlinux.org/archives/list/aur-requests@lists.archlinux.org/message/OLFAQMQ6HSF6NG4IS3DPA3A4OBM3OWZ4/ and https://lists.archlinux.org/archives/list/aur-requests@lists.archlinux.org/message/JPCVDYENJLEXSYTRVBLJMLOJEYZT3QPL/. The advice about wine seems outdated too: it has been unchanged since the page creation in 2016.}}
 
To get the best performance in Unity based games, ideally you should force them into OpenGL mode with the {{ic|-force-opengl}}. However this is not currently possible with an unpatched wine, as the WGL context it tries to force has some differences from a typical GLX context, [https://web.archive.org/web/20200219064538/https://wiki.unity3d.com/index.php/Running_Unity_on_Linux_through_Wine#.22-force-opengl.22_option_crashing_Unity_.28Experimental_fix.29 as described here]. Using the {{Aur|wine-unity3d-git}}{{Broken package link|package not found}} package will allow you to run these games with native OpenGL, allowing you to play them with decent performance on your machine. Unfortunately they often try to change the video mode or mess with other settings, so supplying default screen settings may be neccesary. Additionally, since it is using native OpenGL, nvidia's __GL_THREADED_OPTIMIZATIONS may give a significant performance gain. Overall, the command should look something like this:


     env __GL_THREADED_OPTIMIZATIONS=1 wine UnityGame.exe -screen-height 1080 -screen-width 1920 -popupwindow -force-opengl
     env __GL_THREADED_OPTIMIZATIONS=1 wine UnityGame.exe -screen-height 1080 -screen-width 1920 -popupwindow -force-opengl


Or when using {{Aur|oculus-wine-wrapper-git}}:
Or when using {{Aur|oculus-wine-wrapper-git}}{{Broken package link|package not found}}:


     env __GL_THREADED_OPTIMIZATIONS=1 oculus-wine-wrapper UnityGame.exe -screen-height 1080 -screen-width 1920 -popupwindow -force-opengl
     env __GL_THREADED_OPTIMIZATIONS=1 oculus-wine-wrapper UnityGame.exe -screen-height 1080 -screen-width 1920 -popupwindow -force-opengl


===Minecrift (Minecraft VR)===
=== Minecrift (Minecraft VR) ===


A guide is available [https://www.reddit.com/r/oculus_linux/comments/2shnbk/minecrift_linuxmac_support_coming_soon_steps_to/ here] to run an existing Minecrift version with the very latest JRift (native java rift runtime) build. You will likely want to install an older version when using the Rift, as JRift has been updated continuously to match the Oculus SDK.
A guide is available [https://www.reddit.com/r/oculus_linux/comments/2shnbk/minecrift_linuxmac_support_coming_soon_steps_to/ here] to run an existing Minecrift version with the very latest JRift (native java rift runtime) build. You will likely want to install an older version when using the Rift, as JRift has been updated continuously to match the Oculus SDK.
Line 216: Line 224:
{{Note|When using the Rift, this application works correctly with Portrait (Direct) Mode, and should be run with the Rift un-rotated. Unfortunately, as of 5/12/15 the ingame GUI will display as an elongated 9:16 rectangle, as opposed to staying at the screen ratio. This is usable but not ideal.}}
{{Note|When using the Rift, this application works correctly with Portrait (Direct) Mode, and should be run with the Rift un-rotated. Unfortunately, as of 5/12/15 the ingame GUI will display as an elongated 9:16 rectangle, as opposed to staying at the screen ratio. This is usable but not ideal.}}


===JanusVR===
=== JanusVR ===


"janusVR: an immersive, collaborative, multi-dimensional internet." JanusVR is an application that lets you explore 3D websites in a multiplayer experience. An AUR package is available: {{AUR|janusvr}}
"janusVR: an immersive, collaborative, multi-dimensional internet." JanusVR is an application that lets you explore 3D websites in a multiplayer experience. An AUR package is available: {{AUR|janusvr}}
Line 224: Line 232:
{{Note|This application works correctly with Portrait (Direct) Mode (as of 42.3), and should be run with the Rift un-rotated.}}
{{Note|This application works correctly with Portrait (Direct) Mode (as of 42.3), and should be run with the Rift un-rotated.}}


====Leap Motion support====
==== Leap Motion support ====


The Leap Motion allows you to be more expressive with gesture input, seen by other people within the world. You will want to mount your Leap to the front of your HMD and ensure that you are using the default avatar.
The Leap Motion allows you to be more expressive with gesture input, seen by other people within the world. You will want to mount your Leap to the front of your HMD and ensure that you are using the default avatar.


==Other notes==
=== linux-vr-player-or-something video player ===
 
A (very) simple VR video player using OpenHMD for motion tracking and libmpv for playback. Should behave like normal mpv (same keyboard shortcuts etc.), so just launch with {{ic|ohmdplayer some-vr-video.mp4}}. Does not use the aberration shaders to correct for color bleeding, some of the eye distance stuff etc. so things might not look optimal, but it is better than nothing.
 
Available as {{AUR|linux-vr-player-or-something-git}}.
 
=== vr-video-player ===
 
A simple tool to view any [[X11]] window inside your VR headset. vr-video-player supports stereoscopic/180°/360° videos/games. vr-video-player also lets you view regular videos/games/windows inside VR as a flat screen.
 
Available as {{AUR|vr-video-player-git}}.
 
==== xr-video-player ====
 
A fork of vr-video-player for OpenXR and wayland that uses pipewire to capture a window or screen/s.
 
Available as {{AUR|xr-video-player-git}}.
 
=== SideQuest ===
 
SideQuest can be used to install [[Wikipedia:APK file|APK file]]s to your Oculus Quest. It is available as {{AUR|sidequest-bin}}.
 
See https://sidequestvr.com/setup-howto for installation steps:
 
# Create an Oculus developer account.
# Turn on Quest in developer mode (e.g., with your phone) and connect your Quest via cable.
# Press ''Allow USB debugging'' inside Quest.
 
See the [https://sidequestvr.com SideQuest website] for more information.
 
=== xrdesktop ===
 
[https://gitlab.freedesktop.org/xrdesktop/xrdesktop xrdesktop] is a library for XR interaction with classical desktop compositors.
 
Install {{AUR|xrdesktop}}, which requires {{AUR|gulkan}} and {{AUR|gxr}}.
 
Note that if using KDE, currently {{AUR|xrdesktop-git}}, {{AUR|gxr-git}}, {{AUR|gulkan-git}} are required instead (See below).
 
==== KDE Integration ====
 
Follow the [https://gitlab.freedesktop.org/xrdesktop/xrdesktop/-/wikis/howto#kde-1 official guide], installing {{AUR|kdeplasma-applets-xrdesktop}}{{Broken package link|package not found}}, which currently requires {{AUR|kwin-effect-xrdesktop-git}}, {{AUR|libinputsynth-git}}, and {{AUR|xrdesktop-git}}.
 
==== Picom integration ====
 
Use [https://github.com/yshui/picom-xrdesktop-companion picom-xrdesktop-companion], which requires {{AUR|xrdesktop0.15}}.
 
== Other notes ==


===Enable OpenAL's binaural sound support===
=== Enable OpenAL's binaural sound support ===


See [[Gaming#Binaural Audio with OpenAL]].
See [[Gaming#Binaural audio with OpenAL]].

Latest revision as of 10:45, 28 November 2023

This article or section is out of date.

Reason: Many packages have been deleted.[1][2][3] (Discuss in Talk:Virtual reality)

Virtual reality is the process of simulating an environment for a user, using a variety of peripherals, head mounted displays or CAVEs, and trackers. Instead of showing you a static viewpoint from a screen, it renders your viewpoint relative to where you are standing, on a head-attached or projected surface, to give an effect identical to your own eyes.

A number of peripherals have been released or are about to be released recently which have brought affordable, extremely immersive virtual reality to everyone. Most of these peripherals have full or partial Linux support, and many have AUR packages.

Compatibility matrix

Oculus Rift OSVR OpenVR Leap Motion Razer Hydra
Dolphin (original VR fork) Yes ? Partially complete ? Yes
Dolphin (official OSVR support) Via OSVR Yes ? Via OSVR Via OSVR
Minecrift (Minecraft VR) Yes (Planned) Via OSVR-SteamVR (Planned) (Planned) Via OSVR Yes
Janus VR Yes Yes Yes Yes Via OSVR
Vircadia Via SteamVR-OpenHMD Unknown if working via SteamVR-OSVR Legacy input Not in Linux build and unknown if still supported ?
Team Fortress 2 Via OpenVR Via OSVR-SteamVR Support broken and fixed seemingly at random Via OSVR Via OSVR
Half Life 2 Displays one black eye, one solid color eye Via OSVR-SteamVR Displays one black eye, one solid color eye Via OSVR Via OSVR
VRUI VR Toolkit and demos Yes ? ? Yes Yes
4089: The Ghost Within Via OpenVR Via OSVR-SteamVR Broken until Valve fixes the compositor on Linux Via OSVR Via OSVR
Games/Programs in Wine On OVRSDK versions <=0.5.0.0, with oculus-wine-wrapper-gitAUR[broken link: package not found] and wine-unity3d-gitAUR[broken link: package not found] Trackers work perfectly. Unity demos without Render Manager 'work' but are buggy, ones using the Render Manager display a white or black screen. ? ? ?

Supported peripherals and toolkits

OpenXR

OpenXR is an open, royalty-free standard for access to virtual reality and augmented reality platforms and devices. It is maintained by the Khronos Group and adopted by most of the industry. Most runtimes support OpenXR.

Monado

Monado is an open source OpenXR runtime developed by Collabora. It is under heavy development and aims to provide a common runtime supporting most headsets. Current progress can be found here: https://monado.freedesktop.org/

Install using monadoAUR.

OpenVR / SteamVR

OpenVR is an effort by Valve to create an open API for VR development. Unfortunately, while the API is open, the actual default implementation (SteamVR) is not. It provides an OpenXR runtime

Setting up

Install Vulkan and Steam. If using NVIDIA drivers, you may need to set the VK_DRIVER_FILES environment variable. Required dependencies for 32-bit packages are: lib32-gtk2, lib32-libva, lib32-libvdpau.

From steam, install SteamVR from the tools menu.

Troubleshooting

Configuration or startup errors

SteamVR/OpenVR creates a directory ~/.openvr that can get misconfigured over the various versions. Delete that directory and completely uninstall/reinstall SteamVR.

It can also apparently have trouble accessing the Rift under some configurations. An alternative is to use the OSVR-SteamVR driver and the OSVR-Oculus-Rift plugin.

ALVR

ALVR is a SteamVR driver which allows game streaming to standalone headsets like the Meta/Oculus Quest. It is available in the alvrAUR and alvr-gitAUR packages.

OpenHMD

OpenHMD aims to provide a Free and Open Source API and drivers for immersive technology, such as head mounted displays with built in head tracking. The aim is to implement support for as many devices as possible in a portable, cross-platform package.

OpenHMD supports a wide range of devices such as Oculus Rift, HTC Vive, Sony PSVR, Deepoon E2 and others.

Bindings for .NET, Java, Perl, Python and Rust are available from third-parties.

Installation

Install openhmd-gitAUR.

SteamVR support

It is possible to use OpenHMD with SteamVR. To do that, you need to install steamvr-openhmd-gitAUR and create symlink that points to the OpenHMD SteamVR driver inside your SteamVR drivers directory, for example:

$ ln -s /usr/lib/steamvr/openhmd ~/.steam/steam/steamapps/common/SteamVR/drivers/openhmd

Deprecated peripherals and toolkits

OSVR

OSVR is a joint effort by Sensics, Inc (a long standing VR company) and Razer to create a completely or nearly completely open software API for VR, in which end developers only need to hook their individual headsets into a few functions in order to get first-rate support. It supports the widest variety of peripherals, as well as having extremely flexible configuration via JSON files.

It also provides a plugin which allows it to act as an OpenVR implementation, letting you use it to play OpenVR/SteamVR games with any peripherals it supports.

Setting up

Install osvr-core-gitAUR, and whatever plugins are necessary to support your individual device. Currently available external plugins include:

osvr-oculus-rift-gitAUR[broken link: package not found]

osvr-leap-motion-gitAUR[broken link: package not found]

If wish to use OSVR with SteamVR/OpenVR games and applications, install osvr-steamvr-gitAUR and symlink the driver to your SteamVR installation.

Run the OSVR server and leave it running in the background, by calling it with

   osvr_server /usr/share/osvrcore/sample-configs/your_device_config.json

You may wish to customize the configuration to suit your individual needs.

To test that your installation is working and your trackers are available, install osvr-tracker-viewer-gitAUR and run OSVRTrackerView. You should see a set of axis for each tracker OSVR can pick up. If you do not, run osvr_print_tree to see what trackers are available or if there is a configuration issue.

Oculus Rift

Oculus stopped supporting Linux.

See Oculus Rift.

Leap Motion

The Leap Motion is an incredibly affordable hand tracker which can easily be mounted on the faceplate of an HMD to allow you to interact with virtual objects. Unfortunately, the latest Orion software is not available for Linux while it is awaiting porting, so the currently available tracking is functional but excessively buggy. As such, it is only really suitable on Linux for social interaction, but seeing as it costs less than 1/10th what an HMD or equivalent tracking system, it is still a fairly useful device.

Setting up

Install leap-motion-driverAUR[broken link: package not found], osvr-leap-motion-gitAUR[broken link: package not found] and optionally leap-motion-sdkAUR[broken link: package not found].

To configure, enable and start leapd.service and run LeapControlPanel. To test that tracking works, run the Playground demo included with the installation.

Supported software

Currently there are a handful of applications which work well on the Rift and Linux, with several of them being in the AUR.

Dolphin (original VR fork)

dolphin-emu-vr-gitAUR[broken link: package not found] is an emulator for Gamecube, with patches to allow it to have full headtracking stereoscopic rendering, as well as a number of customizations to make games work well out of the box in VR (for example, disabling culling functions to let you view the entire world).

Support has for the most part been discontinued, in light of the Dolphin project beginning to officially support OSVR upstream.

Note: When using this application with the Rift, it works correctly with Portrait (Direct) Mode, and should be run with the Rift un-rotated to minimize latency.

Dolphin (official OSVR support)

The Dolphin project has begun to work on adding support for VR officially using OSVR, available through the package dolphin-emu-osvr-gitAUR[broken link: package not found]. It can even use OSVR's path tree inputs as controller inputs, such that you can use a pinch or sixaxis controller input as a wiimote input. Support is limited in places however, as the fork is not as far along as the original Oculus-only fork was.

Games/Programs in Wine

A number of applications have some level of compatibility when using Wine, but often require some level of tweaks to make them function as expected.

oculus-wine-wrapper-gitAUR[broken link: package not found] is a utility to patch up the differences between the Linux and Windows versions of the Oculus SDK when running Wine. It creates a shared memory context for the Wine application to use, letting the app access the native Oculus SDK. No installation of the SDK to the wineprefix appears to be necessary.

Unity games

This article or section is out of date.

To get the best performance in Unity based games, ideally you should force them into OpenGL mode with the -force-opengl. However this is not currently possible with an unpatched wine, as the WGL context it tries to force has some differences from a typical GLX context, as described here. Using the wine-unity3d-gitAUR[broken link: package not found] package will allow you to run these games with native OpenGL, allowing you to play them with decent performance on your machine. Unfortunately they often try to change the video mode or mess with other settings, so supplying default screen settings may be neccesary. Additionally, since it is using native OpenGL, nvidia's __GL_THREADED_OPTIMIZATIONS may give a significant performance gain. Overall, the command should look something like this:

   env __GL_THREADED_OPTIMIZATIONS=1 wine UnityGame.exe -screen-height 1080 -screen-width 1920 -popupwindow -force-opengl

Or when using oculus-wine-wrapper-gitAUR[broken link: package not found]:

   env __GL_THREADED_OPTIMIZATIONS=1 oculus-wine-wrapper UnityGame.exe -screen-height 1080 -screen-width 1920 -popupwindow -force-opengl

Minecrift (Minecraft VR)

A guide is available here to run an existing Minecrift version with the very latest JRift (native java rift runtime) build. You will likely want to install an older version when using the Rift, as JRift has been updated continuously to match the Oculus SDK.

Additionally, many users have reported much better performance with JRE8, rather than JRE7.

Note: When using the Rift, this application works correctly with Portrait (Direct) Mode, and should be run with the Rift un-rotated. Unfortunately, as of 5/12/15 the ingame GUI will display as an elongated 9:16 rectangle, as opposed to staying at the screen ratio. This is usable but not ideal.

JanusVR

"janusVR: an immersive, collaborative, multi-dimensional internet." JanusVR is an application that lets you explore 3D websites in a multiplayer experience. An AUR package is available: janusvrAUR

The AUR package does not automatically update when JanusVR does, but the application will tell you when a new version is available. Simply re-build the package when this happens.

Note: This application works correctly with Portrait (Direct) Mode (as of 42.3), and should be run with the Rift un-rotated.

Leap Motion support

The Leap Motion allows you to be more expressive with gesture input, seen by other people within the world. You will want to mount your Leap to the front of your HMD and ensure that you are using the default avatar.

linux-vr-player-or-something video player

A (very) simple VR video player using OpenHMD for motion tracking and libmpv for playback. Should behave like normal mpv (same keyboard shortcuts etc.), so just launch with ohmdplayer some-vr-video.mp4. Does not use the aberration shaders to correct for color bleeding, some of the eye distance stuff etc. so things might not look optimal, but it is better than nothing.

Available as linux-vr-player-or-something-gitAUR.

vr-video-player

A simple tool to view any X11 window inside your VR headset. vr-video-player supports stereoscopic/180°/360° videos/games. vr-video-player also lets you view regular videos/games/windows inside VR as a flat screen.

Available as vr-video-player-gitAUR.

xr-video-player

A fork of vr-video-player for OpenXR and wayland that uses pipewire to capture a window or screen/s.

Available as xr-video-player-gitAUR.

SideQuest

SideQuest can be used to install APK files to your Oculus Quest. It is available as sidequest-binAUR.

See https://sidequestvr.com/setup-howto for installation steps:

  1. Create an Oculus developer account.
  2. Turn on Quest in developer mode (e.g., with your phone) and connect your Quest via cable.
  3. Press Allow USB debugging inside Quest.

See the SideQuest website for more information.

xrdesktop

xrdesktop is a library for XR interaction with classical desktop compositors.

Install xrdesktopAUR, which requires gulkanAUR and gxrAUR.

Note that if using KDE, currently xrdesktop-gitAUR, gxr-gitAUR, gulkan-gitAUR are required instead (See below).

KDE Integration

Follow the official guide, installing kdeplasma-applets-xrdesktopAUR[broken link: package not found], which currently requires kwin-effect-xrdesktop-gitAUR, libinputsynth-gitAUR, and xrdesktop-gitAUR.

Picom integration

Use picom-xrdesktop-companion, which requires xrdesktop0.15AUR.

Other notes

Enable OpenAL's binaural sound support

See Gaming#Binaural audio with OpenAL.