Skip to content

About

Experimental native D3D11/OpenXR VR mod for Metro Exodus with paired stereo rendering.

Resources

Stars

3 stars

Watchers

1 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

Repository files navigation

MetroExodusVR

Experimental native D3D11/OpenXR VR mod for Metro Exodus. Version 0.82.0.

Status

  • Automatic same-frame paired eye rendering; no alternating-eye rendering (AER).
  • Head tracking and runtime per-eye projection. Most recent testing used an Oculus Rift CV1.
  • Gameplay HUD and pause-menu alignment confirmed in 0.80.
  • 0.82 adds a conservative native sphere-culling override to investigate disappearing world objects. It passed local tests, but its in-game improvement is not yet confirmed.
  • Main-menu alignment, shadows, screen-space effects and gas-mask overlays remain unfinished. Stability is still under investigation.

This is a development checkpoint, not a finished VR conversion. The broad culling override can increase rendering cost and affect other visibility consumers.

Supported game

Windows x64, Direct3D 11, audited GOG Metro Exodus 1.0.7.7 executable:

1A13595A4581E6F254B7C418E3B822242E3B8D0C3DA0BD1A5153686F35BE0EC4

Other executable versions and the Enhanced Edition are not validated. A functioning OpenXR runtime and headset are required.

Install

Download the 0.82 release archive and extract it. Close Metro Exodus before deployment.

deploy.bat targets E:\Metro Exodus by default. For another location, run deploy.ps1 -GamePath "your game folder" in PowerShell. Deployment verifies the game executable and package hashes and preserves the previous files in an installation-backup directory.

Start MetroVRLauncher.exe from the game directory. Stereo is automatic. F7 requests a diagnostic capture; it does not toggle stereo. F8 belongs to the game's camera menu.

To undo deployment, use restore.ps1 with the backup path as described by that script's parameters.

Build

Requires Visual Studio 2022 C++ build tools, Windows SDK, CMake 3.24 or newer, and Python 3 for dependency configuration. Run build.bat. CMake downloads pinned OpenXR SDK 1.1.62 and MinHook 1.3.4 source dependencies. Build output is placed in dist.

Validation

Configure with -DMETROVR_CAPTURE_TEST=ON to build the test programs.

  • MetroCaptureTest exercises paired GPU image routing, shader capture, UI correction constants, and native scratch handling. Set METROVR_TRACE_OUTPUT to an absolute output directory, then run tools/analyze_capture.py <directory> --verify-test.
  • MetroUIHookTest requires a local game shader capture containing the documented crosshair/menu shader IDs. Captured game shaders are not distributed.
  • MetroNativeVisibilityTest requires a local fixture extracted from the audited executable. It tested all sixteen native sphere routines with real detours, including original acceptance/rejection and active/inactive override behavior. Extracted game code is not distributed.
  • MetroFaultTest verifies that fault breadcrumbs preserve normal exception handling. Supply an output file path.

Local tests do not establish headset appearance or long-term game stability.

0.82 culling investigation

The preceding GPU-occlusion override did not trigger in the reported scene. 0.82 instead intercepts sixteen signature-checked native sphere-versus-plane routines. Original results are preserved until VR projection is observed; thereafter rejection is overridden. The original tests still run so sphere_tests and sphere_rejections_bypassed in status.json record the intervention. Other visibility paths may still reject geometry.

No game executable, extracted game shaders, native-code fixtures, crash dumps, or user captures are included in this repository.

About

Experimental native D3D11/OpenXR VR mod for Metro Exodus with paired stereo rendering.

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages