Releases: DR-89/fear-vr
Release list
F.E.A.R. VR 1.0.0-beta.4
F.E.A.R. VR 1.0.0-beta.3
F.E.A.R. VR 1.0.0-beta.2
Second beta. Two-handed weapon handling, a left-handed control layout, a medkit
button — and the stereo HUD compositor moved from the CPU to the GPU, which
roughly doubled the in-game frame rate.
All four changes were confirmed in the game on Quest 3 with VirtualDesktopXR.
Hold the weapon with both hands
Press the left grab button with that hand where a fore-end would be, and the
off-hand carries the weapon: the line between both hands steers the aim,
weighted by weapon length. A pistol stays with the trigger hand alone, a rifle
is visibly led by both.
The design came out of play-testing:
- The grab is a latch. The hand geometry decides once, on the button press,
and the grip holds until release. Re-checking every frame made the grip
flicker at the zone border, and with it the lean suppression, so the view slid
sideways. - Nothing snaps. The angular offset between hand line and weapon axis is
recorded at grab time, so grabbing leaves the weapon exactly where it is. - The hand sticks to the weapon. The grab point is recorded in weapon space,
so hand, forearm and flashlight stay on the weapon even as the controller
drifts, and the light points down the barrel.
Sprint and leaning rest while the grab is held — both live on the same hand.
Left-handed controls
Controls: LEFT-HANDED in the VR settings page mirrors the entire layout:
weapon, fire, use and weapon switch to the left hand; movement, flashlight,
leaning, slow-mo and pause to the right. The swap happens once, on the incoming
input state, so every downstream feature mirrors with it.
Note: the visible hand on the weapon stays a right hand, because Retail carries
the weapon in the RightHand socket.
Medkit
Left stick click uses a medkit — the one input that was still free. It mirrors
to the right stick click in left-handed mode.
Stereo HUD on the GPU
The HUD compositor compared the presented frame against the right eye pixel by
pixel on the CPU: three full readbacks and three passes over every pixel, every
frame. A ps_2_0 shader now makes the same decision on the GPU, and the
coverage heuristic reads a few kilobytes one frame late instead of a full frame.
Measured in-game, stereo active:
| before | after | |
|---|---|---|
| game fps | 35–50 | 87–90 |
| reused frames per 300 | 156–183 | 28–37 |
The game now keeps up with the 90 Hz headset. The CPU compositor remains as an
automatic fallback, and -NoGpuHud forces it.
The classic D3D9 path still needs one readback per eye; that is the game's plain
IDirect3DDevice9 and would require a D3D9Ex device wrapper to remove. See
docs/ARCHITECTURE.md.
Also
tools/install-echopatch.ps1 installs EchoPatch
reproducibly. It is not shipped enabled: its crash handler is a vectored
exception handler and killed the game on startup, because this mod deliberately
probes retail internals behind __try/__except. Full reasoning in
docs/ECHOPATCH.md.
Requires a legally purchased F.E.A.R. 1.08 and its Public Tools; the package
contains no retail files. Install with install.ps1, see README.md.
F.E.A.R. VR 1.0.0-beta.1
First public beta of the F.E.A.R. VR mod: a locally buildable OpenXR VR mod for
the single-player base version of F.E.A.R. 1.08 (LithTech Jupiter EX, D3D9).
Confirmed in-game on Quest 3 with SteamVR and VirtualDesktopXR.
Highlights
- Native stereo world rendering — the LithTech camera renders twice per
frame with its own per-eye matrix, not a duplicated mono image. - Relative headtracking with recenter, optional HMD translation (opt-in).
- Full motion controls — move, turn, jump, crouch, sprint, weapon switch,
reload, grenade, slow-mo, use, aim, fire and pause; leaning via left-hand tilt. - Weapon follows the right hand, with fire vectors taken from the muzzle
transform and a red aim laser. Activate and pick-up follow that same ray. - Stereo HUD lifted into both eyes, plus a world-locked flat panel for
menus, loading screens, movies and the mission briefing. - Hand flashlight in the left hand, haptics on every shot, and a native
"VR SETTINGS" page in the ESC menu.
Requirements
- F.E.A.R. 1.08.282.0 (Ultimate Shooter Edition), legally installed
- The official Public Tools 1.08 installed locally — the installer copies the
five proprietary modules from there - An OpenXR runtime and headset (SteamVR and VirtualDesktopXR confirmed)
Install
Unpack the archive and run:
powershell -ExecutionPolicy Bypass -File tools\install.ps1This creates an isolated stage in %USERPROFILE%\FearVR plus a desktop
shortcut. Your retail installation is never written to — the installer
verifies the SHA-256 of FEAR.exe before and after, so a Steam file check
stays clean. Uninstall with tools\uninstall.ps1 -Apply.
Known limitations
- The classic D3D9 path needs one CPU readback per frame, as does the stereo
HUD compositor. Both are marked as a proof of concept, not a performance path. - HMD translation has no world collision and stays opt-in (
-Translation). - Hooks are bound to F.E.A.R. 1.08.282.0. On a different hash or byte
signature they stay disabled and the game simply runs flat. - The left system/menu button cannot be bound; SteamVR intercepts it.
Contents
The archive contains only our own MIT-licensed binaries and scripts. It ships
no retail files, no proprietary SDK sources and no extracted assets.
Note: this project was built with heavy AI assistance — see the README. Bug
reports and PRs are welcome.