Maintained by ClarkCheekyKent, based on PureDark's AFW branch and praydog's nightly 01143 compatibility changes. Upstream credits and license remain below.
This build allows moving cockpit pixels to use AFW history, compensates nearby
history color/depth together for camera translation, preserves the ACR N-2 car
transform repair, and carries the UE5.6/5.7 stereo-layout/color-scale fix.
The AFW shader corrections are available in other games as opt-in profile settings.
They activate only for exactly matching AFW shader bytecode. The native car-history
and mono hooks remain restricted to the supported Rally build
(PE timestamp 050dbf19, image size 0c143000).
The runtime AFW plugin binary is unchanged.
Start a fresh game session and inject using this build. Keep
AFWHistoryShaders.bin next to UEVRBackend.dll. Use AFW CombinedWarping and
Ghosting Fix. Under Unreal > Alternate Frame Warping > AFW motion compensation,
enable Allow moving-object history and Compensate camera movement.
Both default ON for supported Rally and OFF for other games; existing profile
values are preserved. Compensation is fixed at 1; cutoff choices are
0.5, 1, 2, 5, 10 metres, default 2. Increase the cutoff to include farther
cockpit surfaces. This correction applies to all covered surfaces within that
depth, including head translation; leaning parallax can be reduced.
Other games require testing: independently moving nearby objects may be corrected
incorrectly. These options do not perform Rally's native car-history repair elsewhere.
For Rally, add Engine_r.OneFrameThreadLag=0 to the profile's cvars_data.txt.
This is required by the tested setup to prevent cross-eyed rendering. The tested
Rally profile also keeps Fix Object Motion Vector OFF. These Rally settings
are not automatically forced in other games.
The working ACR mono/single-view compatibility guard (v0.3) is built into the backend.
It guards ten native callers while preserving the shared stereo predicates.
It checks the executable version and native code before installing. When the
built-in hook is installed, the plugin loader skips existing
ACR_AFWSingleViewCrashFix.dll and ACR_MonoCompatibility.dll files to avoid
duplicate hooks; the files are not removed. ACR Camera Bridge and
CheekyFoveatedDLSS remain separate plugins with their existing settings.
Follow COMPILING.md with authenticated upstream UESDK access.
The SDK is pinned to upstream; CMake applies patches/UESDK-ACR-compatibility.patch
idempotently so this repository does not need a private SDK commit or SDK mirror.
Use cmake --build build --config Release --target uevr --parallel 1.
Concurrent compiler jobs default OFF to limit RAM. The five-cutoff shader data is copied
beside the backend automatically; it is not embedded in shared C++ headers.
The prior uncleaned package was confirmed working in the headset. This cleaned candidate must be verified in-game before making this repository public.
This is a fork of praydog's UEVR that adds an embedded RenderDoc capture system. You can grab a real GPU frame (flat or stereo VR) from almost any Unreal Engine game and open it in RenderDoc — no game source, no headset required.
👉 New here? Read the RenderDoc Capture Guide — it walks you through everything step by step.
Just want to capture? Download the latest release, unzip, and run:
.\UEVRRenderDocLauncher.exe --exe "C:\Path\To\YourGame-Win64-Shipping.exe" --wait .\Capture-RenderDoc.ps1Deeper design notes live in docs/RENDERDOC_EMBEDDED_PORT.md. All UEVR credit goes to praydog; this fork only adds the capture plumbing + docs.
If you build UEVRBackend.dll yourself instead of using the release, two pieces
are required so your build behaves like the shipped one:
-
The UESDK crash-fix is applied for you at configure time. The
UESDKsubmodule stays on upstreampraydog/UESDK(praydog's gated SDK — you need access to build at all, same as upstream UEVR). Because that repo is private and can't be forked publicly, the CMake configure step instead appliespatches/UESDK-StereoStuff-renderdoc.patchto your own checkout (seecmake/ApplyUESDKPatch.cmake) — idempotent, warns-not-fails on drift — so a normal recursive clone + build just works. Without this fix, injecting under embedded RenderDoc crashes during stereo setup (theGetNativeResourcevtable probe rejects the RenderDoc-wrapped resource). -
Use the bundled
renderdoc.dll— not a stock RenderDoc install. The shipped DLL is a custom RenderDoc fork (elliotttate/renderdoc) with a D3D12 driver fix: at the tier-3 descriptor-heap max it reserves RenderDoc's patch descriptors from within the heap instead of writing past its end. Stock RenderDoc lacks this, so large UE5 titles can corrupt the heap and the swapchain backbuffer freezes. The custom DLL is shipped prebuilt in every release; rebuild it from the fork only if you want to.
Universal Unreal Engine VR Mod (4/5)
4.8 - 5.4
- Full 6DOF support out of the box (HMD movement)
- Full stereoscopic 3D out of the box
- Native UE4/UE5 stereo rendering system
- Frontend GUI for easy process injection
- Supports OpenVR and OpenXR runtimes
- 3 rendering modes: Native Stereo, Synchronized Sequential, and Alternating/AFR
- Automatic handling of most in-game UI so it is projected into 3D space
- Optional 3DOF motion controls out of the box in many games, essentially emulating a semi-native VR experience
- Optional roomscale movement in many games, moving the player character itself in 3D space along with the headset
- User-authored UI-based system for adding motion controls and first person to games that don't support them
- In-game menu with shortcuts for adjusting settings
- Access to various CVars for fixing broken shaders/effects/performance issues
- Optional depth buffer integration for improved latency on some headsets
- Per-game configurations
- C++ Plugin system and Blueprint support for modders to add additional features like motion controls
There are two ways to use this build. Pick the one that matches what you want.
Use the bundled UEVRRenderDocLauncher.exe — it injects renderdoc.dll and
UEVRBackend.dll for you, so there is no UEVRInjector.exe and no .NET
required. Full walkthrough in the
RenderDoc Capture Guide:
Easiest: drag your game's real exe onto Launch-Capture.bat (or edit the
GAME_EXE line in it and double-click), then run Capture-RenderDoc.ps1.
Or from PowerShell:
.\UEVRRenderDocLauncher.exe --exe "C:\Path\To\YourGame-Win64-Shipping.exe" --wait
.\Capture-RenderDoc.ps1Download the latest release of this fork (not praydog's) — it contains the launcher, backend, RenderDoc runtime, VR loaders, and capture scripts. The release does not include
UEVRInjector.exe.
For plain VR without capture, use praydog's upstream injector. Install the .NET 6.0 SDK (download — x64 under Installers), grab the latest release from the praydog/UEVR Releases page, then:
- Launch UEVRInjector.exe
- Launch the target game
- Locate the game in the process dropdown list
- Select your desired runtime (OpenVR/OpenXR)
- Toggle existing VR plugin nullification (if necessary)
- Configure pre-injection settings
- Inject
- Disable HDR (it will still work without it, but the game will be darker than usual if it is)
- Start as administrator if the game is not visible in the list
- Pass
-nohmdto the game's command line and/or delete VR plugins from the game directory if the game contains any existing VR plugins - Disable any overlays that may conflict and cause crashes (Rivatuner, ASUS software, Razer software, Overwolf, etc...)
- Disable graphical options in-game that may cause crashes or severe issues like DLSS Frame Generation
- Consider disabling
Hardware Accelerated GPU Schedulingin your WindowsGraphics settings
Press the Insert key or L3+R3 on an XInput based controller to access the in-game menu, which opens by default at startup. With the menu open, hold RT for various shortcuts:
- RT + Left Stick: Move the camera left/right/forward/back
- RT + Right Stick: Move the camera up/down
- RT + B: Reset camera offset
- RT + Y: Recenter view
- RT + X: Reset standing origin
When it works, it looks the best, performs the best (usually). Can cause crashes or graphical bugs if the game does not play well with it.
Temporal effects like TAA are fully intact. DLSS/FSR2 usually work completely fine with no ghosting in this mode.
Fully synchronized eye rendering. Works with the majority of games. Uses the actual stereo rendering pipeline in the Unreal Engine to achieve a stereoscopic image.
A form of AFR. Can fix many rendering bugs that are introduced with Native Stereo. Renders two frames sequentially in a synchronized fashion on the same engine tick.
Fully synchronized eye rendering. Game world does not advance time between frames.
Looks normal but temporal effects like TAA will have ghosting/doubling effect. Motion blur will need to be turned off.
This is the first alternative option that should be used if Native Stereo is not working as expected or you are encountering graphical bugs.
Skip Draw skips the viewport draw on the next engine tick. Usually works the best but sometimes particle effects may not play at the correct speed.
Skip Tick skips the next engine tick entirely. Usually buggy but does fix particle effects and sometimes brings higher performance.
Alternated Frame Rendering. Renders each eye on separate frames in an alternating fashion, with the game world advancing time in between frames. Causes eye desyncs and usually nausea along with it.
Not synchronized. Generally should not be used unless the other two are unusable in some way.