F.E.A.R. VR 1.0.0-beta.2
Pre-releaseSecond 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.