Skip to content

Releases: satyaloka93/cyberpunk-vr-port

CyberpunkVR Port 0.1.1-psvr2.3.1

Choose a tag to compare

@satyaloka93 satyaloka93 released this 16 Aug 00:57

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)

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

  2. Extract the zip anywhere (NOT into the game folder for this route).

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

Choose a tag to compare

@satyaloka93 satyaloka93 released this 11 Aug 10:27

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

  1. 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/3315

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

  2. 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 -WhatIf first if you want to see exactly what it would do without changing
    anything.

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

  1. RED4ext 1.30.0
  2. Cyber Engine Tweaks 1.37.1
  3. redscript 0.5.31
  4. ArchiveXL 1.27.1
  5. TweakXL 1.11.4
  6. Codeware 1.20.3
  7. Input Loader 0.2.3
  8. Equipment-EX 1.2.9
  9. Visual Holsters 1.2 (Nexus)
  10. Visible Bullets 2.31 (Nexus)
  11. Nova Optics 1.3.1 (Nexus)
  12. HUDitor 1.1.0 (Nexus)
  13. 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.cmd AFTER
    SteamVR and BEFORE the game. It prints VR motion haptics watcher enabled when 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...
Read more

CyberpunkVR Port 0.1.1 — PS VR2 Tweaks 2

Choose a tag to compare

@satyaloka93 satyaloka93 released this 10 Aug 00:22

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

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 to SystemButton, 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

Choose a tag to compare

@satyaloka93 satyaloka93 released this 09 Aug 03:42

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: