Skip to content

Releases: DR-89/fear-vr

F.E.A.R. VR 1.0.0-beta.4

Pre-release

Choose a tag to compare

@DR-89 DR-89 released this 27 Jul 19:12

F.E.A.R. VR 1.0.0-beta.3

Pre-release

Choose a tag to compare

@DR-89 DR-89 released this 27 Jul 17:20

F.E.A.R. VR 1.0.0-beta.2

Pre-release

Choose a tag to compare

@DR-89 DR-89 released this 26 Jul 13:47

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

Pre-release

Choose a tag to compare

@DR-89 DR-89 released this 25 Jul 12:32

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

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