Releases: satyaloka93/cyberpunk-vr-port
Release list
CyberpunkVR Port 0.1.1-psvr2.3.1
CyberpunkVR Port 0.1.1-psvr2.3.1
PS VR2 community-fork patch release
A patch on top of 0.1.1-psvr2.3. For what the port does (stereo rendering, controls,
adaptive triggers, melee haptics) see the 0.1.1-psvr2.3 notes -- they still apply. Use
the install steps below, not the ones in those notes.
WHAT CHANGED
- Fixed a crash when loading a save from the main menu (NULL argument buffer passed to
the ExecuteIndirect hook after a VRCAM re-bind). The hook now skips that call and guards
the rest. - HUDitor set up for VR: editor moved from F7 (F7 is HMD recenter here) to DELETE, its
"won't open until unlock_car_hud_dpad" gate removed, and a VR HUD layout included. The
layout is a starting point -- press Delete in game and drag anything; changes save and
persist. The installer patches HUDitor's own files in place, so nothing of theirs is
redistributed. - Packaging fixes: the installer script is now actually inside the release zip (it never
was before), its manifest points at this version, and the Hands plugin ships as Release
(~450 KB smaller, same behaviour).
INSTALL
One download: CyberpunkVRPort-0.1.1-psvr2.3.1.zip. The installer is inside it.
Option 1 -- installer script (recommended)
-
Download these four Nexus mods by hand into one folder (any filenames -- the installer
matches them by hash). Nexus can't be automated and its terms forbid redistribution.Visual Holsters https://www.nexusmods.com/cyberpunk2077/mods/21936
Visible Bullets https://www.nexusmods.com/cyberpunk2077/mods/22251
Nova Optics https://www.nexusmods.com/cyberpunk2077/mods/29190
HUDitor https://www.nexusmods.com/cyberpunk2077/mods/3315 -
Extract the zip anywhere (NOT into the game folder for this route).
-
Run scripts\Install-CyberpunkVRPort.cmd -- double-click it, or drag the folder from
step 1 onto it. Point it at your downloads with -DownloadDir if needed:pwsh scripts\Install-CyberpunkVRPort.ps1 -DownloadDir "D:\my downloads"
Add -WhatIf to preview without changing anything.
The eight prerequisites (RED4ext, CET, redscript, ArchiveXL, TweakXL, Codeware, Input
Loader, Equipment-EX) are fetched and hash-verified automatically. The port's own files
are already beside the script and copied straight in.
Option 2 -- by hand
Extract the zip directly into your Cyberpunk 2077 folder, over an existing 0.1.1-psvr2.3
install. (scripts\ and wabbajack\ land there too; harmless, delete if you like.) For a
first-time install, the full prerequisite list and order is in the 0.1.1-psvr2.3 notes.
UPGRADING FROM 0.1.1-psvr2.3
Install over the top. No settings are touched -- F10 page, VRIK calibration, HUD layout
and vrport.ini all carry over, and no bridge update is needed.
If you've arranged your own HUD, back up
bin\x64\plugins\cyber_engine_tweaks\mods\HUDitor\persistency.json first -- this release
overwrites it. Put it back afterward to restore your layout.
REPORTING PROBLEMS
pwsh scripts\Collect-VRPortReport.ps1 -Hmd "your headset"
For a crash, also attach bin\x64\cyberpunkvrport.log, the archived
cyberpunkvrport-.log for the crashed session, and the newest folder under
%LOCALAPPDATA%\REDEngine\ReportQueue. A "[EI-DIAG] skipped ExecuteIndirect..." line is
this fix working -- please include it.
CyberpunkVR Port 0.1.1-psvr2.3
CyberpunkVR Port 0.1.1-psvr2.3
PS VR2 community-fork release based on upstream 0.1.1
This release fixes the GPU hangs that 0.1.1-psvr2.2's overlay pacing introduced, stops
forward movement breaking crouch, adds melee swing and impact haptics, and adds a direct
installer so the mod stack can be installed without Mod Organizer.
If you are on 0.1.1-psvr2.2 and have seen the game die with "Gpu Crash for unknown
reasons", this is the release you want.
Highlights
Overlay GPU hangs fixed
0.1.1-psvr2.2 removed the overlay's per-frame GPU drain to recover frame rate. That change
was validated against a single clean run, and it was not safe: it went on to produce eight
DXGI_ERROR_DEVICE_HUNG (0x887A0006) faults, every one stalling at the same barrier-flush
marker, and most of them at a save load.
An A/B on matched fresh boots settled the cause. The old drain ran clean for 6 minutes and
4 loads; the new pacing hung after 87 seconds and 1 load. Two other suspects were tested
and cleared: concurrent Present workers corrupting backbuffer barriers (instrumented -- the
game serialises Present itself despite presenting from 16 threads), and a DLSS
super-resolution/frame-generation version mismatch (reverting to a coherent stock set still
hung).
- The overlay now keeps middle-ground pacing during normal rendering and restores the full
drain for a bounded 5-second window whenever the game churns render resources. Each such
event refreshes the window, so a long transition stays covered. - Windows are opened by save loads, swapchain invalidation, VRCAM component re-binds, and
sight PSO substitution. Those triggers were chosen by measuring how often candidate
signals actually fire in captured logs, not by guessing which sounded load-like. - The drain is bounded at 1000 ms rather than waiting forever, so a genuinely dead GPU
cannot wedge a Present worker.
Frame rate is not the price. Measured medians: 43.8 FPS on the old always-drain build,
62.2 FPS on unguarded pacing, and 70.3 FPS with the guard -- the guard build is the fastest
of the three, because the drain now costs only loading-screen frames. The guard occupies
under 10% of runtime.
Verified with an 8.8-minute session across 8 loads with zero fence timeouts, and a later
20-minute session across 5 loads. Startup logs report
mode=previous-overlay-fence+load-guard.
Crouch no longer breaks when you move
Sprint was derived from how far the stick was pushed, and asserted continuously. On PS VR2
Sense sticks full deflection is trivially easy to reach, so ordinary forward movement
asserted sprint and stood a crouched player up.
- Full stick tilt now means "as fast as this stance allows" and never changes the stance.
Crouched, you creep at full crouch speed. Upright, you sprint as before. Partial
deflection still walks. - Added "Crouch-sprint perk owned" to the F10 DLSS/Debug page, persisted as
xr_crouch_sprint_perk, default off. Tick it once you own the perk and full tilt will
crouch-sprint instead of holding the slower crouch pace.
The perk is declared rather than detected: reading it from the game's tweak database would
fail silently and indistinguishably from a bug if the record name were wrong, and the
default behaviour is the stance-preserving one either way.
Melee swing and impact haptics (needs the bridge, see below)
Physical melee swings and impacts now produce haptics in the weapon hand. Confirmed on
katana and machete. Swing strength scales with how fast you actually swing; impact is
stronger and longer, so contact is distinguishable from the whoosh.
Game audio cannot supply this. The melee whoosh sits outside the bridge's 28-320 Hz tactile
band and is inaudible to it even at high gain, and because that layer is derived from stereo
output it drives both grips rather than the hand holding the weapon.
REQUIRES an updated PSVR2Toolkit Cyberpunk DSX bridge. The plugin publishes the events; a
bridge without the VR motion watcher has nothing consuming them and you will feel nothing.
Bridge release cyberpunk-dsx-bridge-v0.2.0 and earlier do NOT have it.
Adaptive triggers: use the stock weapon effects
Earlier releases recommended a Sense weapon-category override profile (Very Soft handguns,
Soft revolvers, Choppy automatics, Medium rifles, Hard heavy weapons). THAT ADVICE IS
WITHDRAWN.
It was measured while Enhanced DualSense Support's own UDP client was autostarting alongside
the bridge, so two clients were driving the controller-effect path at once. The inconsistent,
partly missing trigger effects the presets appeared to fix were caused by that conflict.
Retested with only the bridge running, the overrides break haptics and make triggers
inconsistent, while the stock effects behave correctly.
- Set every weapon category back to Default if you applied the old profile.
- The mod's UDP autostart defaults to ON, so its "reset to defaults" button silently
restores the conflict.run_bridge.ps1now turns it off on every launch, which also
survives updating the mod from Nexus. - Nothing except the bridge may drive the Sense actuators. An OpenXR vibration action inside
the VR plugin was tried and cost most of the game's gun haptics -- recoil and
automatic-fire rhythms went quiet and a sniper shot arrived in the wrong hand -- even
though every pulse was accepted by the runtime. That action ships disabled.
Installing
Two ways. The script is the recommended path; manual is the fallback and is what the script
falls back to for files it cannot fetch.
Either way, close Cyberpunk 2077, Mod Organizer 2 and REDlauncher first -- the files are
locked while they run.
Option 1: the installer script (recommended)
-
Download the four Nexus mods by hand and put them in one folder, any filenames:
Visual Holsters https://www.nexusmods.com/cyberpunk2077/mods/21936
Visible Bullets https://www.nexusmods.com/cyberpunk2077/mods/22251
Nova Optics https://www.nexusmods.com/cyberpunk2077/mods/29190
HUDitor https://www.nexusmods.com/cyberpunk2077/mods/3315Nexus cannot be automated: it issues direct download links only to premium accounts, and
its terms forbid redistributing the files. Filenames do not matter -- the installer
identifies them by SHA-256 and verifies each one. -
Double-click
scripts\Install-CyberpunkVRPort.cmd, or drag the folder from step 1 onto
it to use that folder for downloads.From a shell instead:
pwsh scripts\Install-CyberpunkVRPort.ps1 -DownloadDir "D:\my downloads"Add
-WhatIffirst if you want to see exactly what it would do without changing
anything. -
Everything else is downloaded and hash-verified automatically, then extracted into the
game folder. Launch Cyberpunk normally from Steam.
The installer resolves every source before writing a single file, so a missing download
cannot leave a half-installed game. It rejects archive entries that try to escape the game
folder, checks archive layout against the expected Cyberpunk directories, and discards any
download whose hash does not match.
Downloads use curl.exe (shipped with Windows 10 1803 and later) and fall back to
PowerShell. If your machine blocks PowerShell from making outbound connections -- a common
hardening rule -- curl still works, and the installer names the blocking firewall rule if
neither can connect. If curl is missing, install it with:
winget install curl.cURL (or https://curl.se/windows/)
If a download cannot be made at all, the installer lists every missing file with its URL and
SHA-256 and installs nothing. Fetch them in a browser, drop them in the same folder, and run
it again.
Option 2: manual install
Extract each archive into the Cyberpunk 2077 folder, in this order. Every one of these is
packaged to extract at the game root -- you should end up merging into bin\, r6\,
red4ext\, archive\ and engine\, not creating a subfolder.
- RED4ext 1.30.0
- Cyber Engine Tweaks 1.37.1
- redscript 0.5.31
- ArchiveXL 1.27.1
- TweakXL 1.11.4
- Codeware 1.20.3
- Input Loader 0.2.3
- Equipment-EX 1.2.9
- Visual Holsters 1.2 (Nexus)
- Visible Bullets 2.31 (Nexus)
- Nova Optics 1.3.1 (Nexus)
- HUDitor 1.1.0 (Nexus)
- This release's zip
Exact versions, URLs and SHA-256 hashes for all of them are in wabbajack\manifest.json.
Verify a download with:
Get-FileHash .\file.zip -Algorithm SHA256
Mod Organizer 2 is NOT used or needed. Do not install this through MO2 unless you intend to
launch the game through MO2 as well -- MO2's virtual filesystem is what makes CET and RED4ext
visible to the game, so a stack installed that way is invisible when the game is launched
from Steam.
Optional: adaptive triggers and grip haptics
Only needed if you want Sense adaptive triggers, grip haptics, or the new melee swing and
impact haptics. See docs\PSVR2-ADAPTIVE-TRIGGERS.md for the full procedure. In short:
- Install Enhanced DualSense Support and Native Settings UI.
- Leave every weapon category at Default.
- Install the PSVR2Toolkit Cyberpunk DSX bridge and start it with
run_bridge.cmdAFTER
SteamVR and BEFORE the game. It printsVR motion haptics watcher enabledwhen the melee
path is present. - Do not run DSX, the mod's bundled UDPClient.exe, or two bridges at once.
Tune with -AudioHapticsGain 0..3 for the game-audio layer and -VRMotionGain 0..3 for
melee pulses; -VRMotionGain 0 disables melee haptics.
Upgrading from 0.1.1-psvr2.2
- Install over the top -- the installer replaces files in place, or extract this...
CyberpunkVR Port 0.1.1 — PS VR2 Tweaks 2
CyberpunkVR Port 0.1.1-psvr2.2
PS VR2 community-fork release based on upstream 0.1.1
This release replaces the overlay's per-frame GPU drain with the validated middle-ground
pacing policy, expands the VR HUD controls, and documents HUDitor as the standard-widget
alignment layer used by the tested PS VR2 layout.
Highlights
Overlay performance and stability
- Replaced the old current-frame full GPU drain with overlay Mode 2: exact per-backbuffer
allocator fences, a separate Dear ImGui upload-ring fence, and a previous-overlay fence. - The next overlay submission waits for the immediately previous overlay submission instead
of draining all current game work. Resize, device replacement, and teardown retain the full
lifetime-transition drain. - Streamline Present workers are serialized around overlay recording and submission so they
cannot race the shared command list or bypass the one-overlay runahead boundary. - No DXGI frame-latency value or waitable-object wait is injected. Passive diagnostics report
injectedDxgiWait=0 mode=previous-overlay-fence. - A 100 ms fence timeout skips the overlay frame instead of reusing GPU-owned resources.
- Added an F10 performance-overlay toggle showing Present, OpenXR, VRCAM, previous-overlay
wait, and resource-slot wait metrics. Present may include DLSS-generated frames; VRCAM is
the useful native stereo cadence measurement.
The validated PS VR2 run reached 96% observed GPU utilization. Its 98 active VRCAM samples
averaged 69.27 FPS, with a stable segment around 82 FPS. Previous-overlay waits averaged
5.99 ms; allocator/upload-slot waits remained 0.00 ms. More than 37,800 OpenXR cycles
completed without a fence timeout, device removal, DRED fault, or GPU crash.
Rejected experiments are documented, not shipped as active pacing. Injected DXGI latency 1
held gameplay around 38-45 FPS. Injected DXGI latency 2 reproduced
DXGI_ERROR_DEVICE_HUNG (0x887A0006). Per-resource fencing without the previous-overlay
boundary also reproduced a load-transition GPU hang.
HUD layout
- Expanded F10 HUD placement to 37 persisted X, Y, and Size values covering the named VR
regions and center overlays. - Added safe one-shot redscript wrappers for the complete scanner/quickhack details panel,
phone contacts and message popups, generic notifications, and tutorial cards. - Removed the ineffective shifted-D-pad HUD-panning experiment. Triangle-touch/L3 plus the
right stick still emits D-pad input, suppresses turning, and preserves bare R3 crouch. - Added HUDitor v1.1.0 and Input Loader as requirements for reproducing the tested
standard-widget VR layout. HUDitor remains a separate third-party download and is not
bundled in this archive. - Added HUDITOR-VR-SETUP.md with installation paths, keyboard/mouse controls, vehicle-widget
editing, reset behavior, F7 conflict resolution, troubleshooting, and backup instructions. - HUDitor defaults to F7, which this port reserves for HMD recenter. Rebind HUDitor to an
unused keyboard key before arranging widgets. Mod Settings is recommended for its UI.
Preserve both user-owned layout files when updating:
bin\x64\plugins\cyber_engine_tweaks\mods\HUDitor\persistency.json
bin\x64\plugins\cyber_engine_tweaks\mods\CyberpunkVRPort_HUD\hud_layout.ini
Credits
- HUDitor provides the standard-widget move/resize workflow used by the tested VR layout:
https://www.nexusmods.com/cyberpunk2077/mods/3315 - nben/Cyberpunk-UI-mods-for-VR informed the quickhack/scanner controller and widget
identification that led this port to target the complete scannerDetailsGameController panel:
https://github.com/nben/Cyberpunk-UI-mods-for-VR
Documentation and diagnostics
- Added detailed OKF records for overlay pacing, rejected DXGI experiments, ray-tracing stereo
limitations, HUDitor operation, HUD ownership, and repository-safe OKF maintenance. - Added deterministic OKF link checking and repaired document-relative GitHub navigation.
- Added passive swapchain/Present-thread pacing diagnostics and documented authoritative log
interpretation. fpsVR may observe a different Present boundary and report implausible
1-2 ms frame times for this injected stereo path.
Requirements
- Cyberpunk 2077 2.31
- SteamVR as the active OpenXR runtime for PS VR2
- PS VR2 PC adapter and PlayStation VR2 Sense controllers
- RED4ext, Cyber Engine Tweaks 1.37.1, redscript, TweakXL, ArchiveXL, and Codeware
- HUDitor v1.1.0 and Input Loader for the tested HUD layout
- Mod Settings is recommended for HUDitor configuration
Known limitations
- Exact 3400 x 3468 PS VR2 rendering still requires authored VRCAM assets and a repacked
cyberpunkvrport.archive. Use one of the supplied square presets; 3072 x 3072 is the tested
starting point. - Ray-traced Lighting and Ray-traced Reflections are not stereo-safe because Cyberpunk shares
or omits eye-specific temporal resources. Keep both disabled. RT Shadows may be tested
separately. - SteamVR may omit Create/Menu while converting the Oculus Touch profile to Sense. Bind left
Create manually toSystemButton, or use Triangle-touch + R3. - HUD placement remains resolution- and preference-specific. Back up both layout files before
updates and test contacts, messages, notifications, tutorials, health, stamina, minimap,
ammo, and vehicle widgets in their actual gameplay states.
Update safety
Back up saves and existing mod configuration before installation. In addition to the two HUD
files above, preserve:
red4ext\plugins\CyberpunkVR_Stereo\vrik_calibration.ini
Install HUDitor separately, read HUDITOR-VR-SETUP.md and PSVR2-CONTROLS.txt, start SteamVR
first, and launch the unmodified bin\x64\Cyberpunk2077.exe.
CyberpunkVR Port 0.1.1 — PS VR2 Tweaks 1
CyberpunkVR Port 0.1.1-psvr2.1
PS VR2 community-fork release based on upstream 0.1.1
This release adds the tested PlayStation VR2 path through the PS VR2 PC adapter,
SteamVR, and SteamVR's OpenXR runtime.
Highlights
- PlayStation VR2 launcher preset using the square VRCAM assets that are actually
present in the bundled archive: 1920, 2048, 2560, 3072, 3584, and 4096. - PS VR2 runtime/profile detection and one-time controller diagnostics.
- Sense controls through SteamVR's Oculus Touch compatibility profile.
- UEVR-style D-pad shifting: touch Triangle without clicking and move the right stick.
- UEVR-style SystemButton timing: quick release emits XInput Start; hold for at least
500 ms emits XInput Back once and suppresses Start on release. - Triangle-touch + R3 provides the same menu timing when SteamVR omits Create/Menu.
Bare R3 remains crouch. - Correct XInput packet numbering for stick-only and held-input changes, and early
XInputGetState hook installation for Cyberpunk 2077 2.31. - Compatibility fix for CET 1.37.1 hotkey registration.
- Documentation for SteamVR's manual left-Create binding and controller troubleshooting.
Read PSVR2-CONTROLS.txt in the release archive for setup and the complete control map.
Known limitations
- SteamVR commonly recommends approximately 3400 x 3468 per eye for PS VR2. The
upstream archive does not contain an authored VRCAM component and dynamic texture at
that exact resolution, so this release offers the nearest safe square assets instead. - SteamVR's automatic Oculus-to-Sense conversion can omit Menu/System. Assign physical
left Create manually to the application's “Sense Create / Options” (SystemButton)
action, or use Triangle-touch + R3. - The application SystemButton controls Cyberpunk menus. SteamVR's dashboard is reserved
by SteamVR and cannot be exposed as an application action. - Sense tracking/contact loss visible in SteamVR Home is outside the mod's input path.
Compatibility
- Cyberpunk 2077 2.31
- Cyber Engine Tweaks 1.37.1 tested
- SteamVR as the active OpenXR runtime
- PS VR2 PC adapter and PlayStation VR2 Sense controllers
The release remains experimental. Back up saves and existing mod configuration before
installing. Existing vrik_calibration.ini files should be preserved when updating.
Optional Sense adaptive triggers and grip haptics
Enhanced DualSense Support gameplay profiles can now drive PS VR2 Sense through the
PSVR2Toolkit Cyberpunk DSX Bridge. This optional add-on requires Enhanced DualSense
Support, Native Settings UI, and the matching Sense-tuned Toolkit driver/bridge package; DSX and
UDPClient.exe are not used. Version 0.2.0 adds stereo audio-derived haptics for the
whole game plus explicit same-mode shotgun recoil detection.
For adaptive-trigger nuance, select an override for each Enhanced DualSense Support
weapon category instead of leaving all families at Default. The release guide provides a
conservative Very Soft / Soft / Choppy / Medium / Hard baseline; these are starting points
and users should modify every category to taste. Installation and compatibility instructions: