Skip to content

About

Assetto Corsa Rally cockpit stabilization for UEVR AFW. Based on PureDark AFW and praydog nightly compatibility.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Latest commit

 

History

1,485 Commits

Folders and files

Repository files navigation

UEVR ACR AFW cockpit fix

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.

Use

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.

Build

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.


UEVR + 🎬 Embedded RenderDoc Capture

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.ps1

Deeper design notes live in docs/RENDERDOC_EMBEDDED_PORT.md. All UEVR credit goes to praydog; this fork only adds the capture plumbing + docs.


🔨 Building from source (two reproducibility notes)

If you build UEVRBackend.dll yourself instead of using the release, two pieces are required so your build behaves like the shipped one:

  1. The UESDK crash-fix is applied for you at configure time. The UESDK submodule stays on upstream praydog/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 applies patches/UESDK-StereoStuff-renderdoc.patch to your own checkout (see cmake/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 (the GetNativeResource vtable probe rejects the RenderDoc-wrapped resource).

  2. 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.


build

Universal Unreal Engine VR Mod (4/5)

Supported Engine Versions

4.8 - 5.4

Links

Features

  • 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

Getting Started

There are two ways to use this build. Pick the one that matches what you want.

A) Capture a GPU frame (this fork's reason to exist)

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.ps1

Download 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.

B) Standard VR injection (upstream UEVR)

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:

  1. Launch UEVRInjector.exe
  2. Launch the target game
  3. Locate the game in the process dropdown list
  4. Select your desired runtime (OpenVR/OpenXR)
  5. Toggle existing VR plugin nullification (if necessary)
  6. Configure pre-injection settings
  7. Inject

To-dos before injection

  1. Disable HDR (it will still work without it, but the game will be darker than usual if it is)
  2. Start as administrator if the game is not visible in the list
  3. Pass -nohmd to the game's command line and/or delete VR plugins from the game directory if the game contains any existing VR plugins
  4. Disable any overlays that may conflict and cause crashes (Rivatuner, ASUS software, Razer software, Overwolf, etc...)
  5. Disable graphical options in-game that may cause crashes or severe issues like DLSS Frame Generation
  6. Consider disabling Hardware Accelerated GPU Scheduling in your Windows Graphics settings

In-Game Menu

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

Quick overview of rendering methods

Native Stereo

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.

Synchronized Sequential

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.

AFR

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.

About

Assetto Corsa Rally cockpit stabilization for UEVR AFW. Based on PureDark AFW and praydog nightly compatibility.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages