Skip to content
adderekPublic

About

VR for any 3d game

Resources

Stars

10 stars

Watchers

1 watching

Forks

Repository files navigation

vrdual

Play ordinary 3D games in a VR headset with real stereo 3D: each eye gets its own rendered view. The games don't need to know about it: no mods, no VR support needed. Linux, Vulkan, OpenGL (via Zink) and Proton/DXVK games.

One graphics card is enough, any vendor (AMD, NVIDIA, Intel via Mesa). The eyes are then rendered on alternate frames, so each eye gets half the game's frame rate. A second, identical GPU is optional: it renders the other eye in parallel, so each eye gets the full frame rate.

Status: early, but games run in the headset (game list). Headset: Quest 3/3S via WiVRn tested; any OpenXR runtime should work.

Pictures

Hospital tycoon Assassin's Creed Origins Hospital tycoon Lego Harry Potter 1-4 Mafia I Hogwarts Legacy Hogwarts Legacy LEGO Marvel Super Heroes LEGO Marvel Super Heroes LEGO Marvel Super Heroes LEGO Marvel Super Heroes Fable Anniversary Fable Anniversary Mirror's Edge Alan Wake's American Nightmare Duke Nukem Forever Civilization V Magicka The Witcher 3

Video: The Witcher 3, 5 s side-by-side (3840x1080, made with vrdual record; play it in a VR video player as SBS).

Install

INSTALL.md: packages, then

git clone --recursive https://github.com/adderek/vrdual
cd vrdual
./vrdual install   # builds, prints the launch option: .../vrdual/run %command%
./vrdual xr        # starts WiVRn, game into the headset

Optional: ./vrdual view shows both eyes side by side on the monitor. Releases: vrdual-<version>.tar.gz from Releases (0.x are pre-releases; GitHub's own "Source code" archives lack the Vulkan headers submodule and do not build).

With one GPU the game window on the monitor flickers (it shows left and right frames alternately); the headset is fine.

Try it without a game

./_                  # menu
./vrdual demo        # test scene in stereo (window, side by side)
./vrdual calib       # IPD setup: arrows = IPD, W = save
./vrdual selftest    # does everything work? (exit 0 = yes)
./vrdual gpus        # what GPUs vrdual sees

Settings: ~/.config/vrdual/vrdual.conf (./vrdual config init).

Two GPUs (optional)

Both cards must be the same model and driver. Note: in most PCs the second card sits behind the chipset with a slower link (e.g. PCIe Gen3 x4 instead of Gen4 x16); check with ./vrdual gpus.

Tested

Hardware:

  • 1x NVIDIA RTX 5070 Ti (single GPU)
  • 2x AMD RX 7900 XTX

Games — per-game status: game list (one / two GPUs, search, other VR routes); settings and tuning: docs/GAMES.md. Works in the headset: Zen Bound 2, Alice: Madness Returns, Portal 2, LEGO Harry Potter 1-4, Tomb Raider III, Psychonauts, Mirror's Edge, Hospital Tycoon. Broken: Portal (Zink bug), Tomb Raider I (DOSBox, 2D).

Support

vrdual is developed in spare time. If it lets you play something in VR, consider supporting it: GitHub Sponsors, Liberapay or Ko-fi. Donations are a gift: no perks in return, everything is published for everyone.

When reporting a problem, include the output of ./vrdual version (it also shows whether Steam still loads an older layer) and the game's log. ./vrdual report --open opens a game report prefilled with the last game you played and your system; ./vrdual request "Game" --open asks for a game in Discussions. vrdual sends nothing itself: you see the form and submit it.

Hardware helps too: the only headset here is a Meta Quest 3S, so other headsets (and their OpenXR runtimes) are untested. If you can lend or donate one, please open an issue.

License

Apache License 2.0. Use, modify and redistribute freely, also commercially; copies and derivative works must keep the copyright and the NOTICE file, which names this project as the origin.

More: docs/ARCHITECTURE.md · plan: TODO.md · for AI agents: AGENTS.md

About

VR for any 3d game

Resources

Stars

10 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages