0.1.8
New
- Asymmetric per-eye projection: each eye renders exactly its headset's lens window, at full pixel density and with square pixels, instead of a symmetric frustum. On by default; STEREO VIEW > "Asymmetric projection" (xr_asym_projection, live). Frustum culling, occlusion, light lists and sun cascades follow each eye's window, and the cascades are fitted to the union of both windows.
- Screen-space effects made correct for the asymmetric windows with shader twins: volumetric fog, screen-space and planar (water) reflections, cone AO, sun contact shadows, auto-exposure, particles that face the eye instead of the screen, and screens/holograms that use the pixel's own view ray instead of the camera's forward axis. The two eyes' SSR, planar reflections, AO and contact shadows are merged as one wide display at each eye's inner edge.
- Per-headset resolution ladders shaped to each headset's measured eye window, every entry at the cost of the one it replaces: Quest 2 / 3 / 3S, Pico 4 / 4 Ultra, Pimax Crystal OG / Light / Super / Ultra Wide, Valve Index, Dream Air, PSVR2, Bigscreen Beyond 2 / 2e, Steam Frame, and HP Reverb G2 on its own ladder. A saved resolution that is no longer in its headset's ladder moves to the nearest-cost entry. New headset: MeganeX superlight 8K, with its own ladder and second-eye camera assets.
- Native NVIDIA DLSS Frame Generation through NGX, using the game's own nvngx_dlssg.dll without Streamline; it is the new default generator. FidelityFX frame interpolation can run without optical flow (the new default, ~1.3-1.5 ms for both eyes). Frame generation takes depth and motion from the TAA, FSR 2, FSR 3, FSR 4 and XeSS nodes, so it no longer depends on DLSS; NVIDIA optical flow falls back to FidelityFX on non-NVIDIA GPUs.
- FSR 3, FSR 3.1/4 and XeSS keep a separate context per eye: each eye no longer accumulates the other eye's history (blur and an IPD-wide ghost).
- Fixed foveated DLSS: the game's DLSS/DLAA quality in the centre, independent peripheral quality, region size and offsets (off by default; region 70% x 65%, -10% vertical offset).
- Fixed peripheral VRS and a hidden-area mask (both off by default), and shared sun shadow cascades for both eyes with a native fallback.
- CAS sharpening, applied before frame generation (strength 0 by default, bypassed automatically with the game's DLAA).
- Per-eye depth is submitted to the OpenXR runtime with each frame (XR_KHR_composition_layer_depth), matched to the frame it belongs to, for better runtime reprojection. Generated frames carry no depth. xr_depth_submit, on by default.
- Physical scope optics: low-magnification scopes are real lenses in the headset instead of the flat ADS overlay; sniper rifles look through a render-to-texture scope camera bound to the weapon; collimator reticles are collimated along the bore; shots leave the sight line so the mark is hit at every range. New CyberpunkVRPort_Optics CET and redscript modules.
- VR cyberware combat: physical mantis blades, gorilla arms, monowire and projectile launcher, with their posing, equipment transitions and launcher aiming, enhanced melee, and free-hand gestures driven by the controllers. The monowire leaves the forearm housing along the game's own route, and the line moves with the body instead of being dragged by running and falling.
- Physical melee throws: hold the left trigger with a throwable melee weapon, squeeze the right grip, throw and open the grip. The knife flies close to a straight line (10-45 m/s from the hand's speed), aimed mostly where you looked just before the throw rather than along the hand's falling release. Aim assistance takes the enemy nearest that gaze (within 20 degrees), otherwise one around the throw or the stroke (15 degrees), and the flight curves on to it as in the flat game. While a throw is armed the holster leaves the right grip alone.
- Physical crouch (on by default, 45 cm depth); the VR camera stays stable across weapon changes.
- Controller haptics: a vibration per shot shaped by weapon class (handgun, rifle/SMG/LMG, shotgun, sniper/precision), melee block and parry, bullet block and deflect, a tick when a hand reaches a tactical-belt element and a snap when a grenade pin comes out. A two-handed grip vibrates both hands. CONTROLS > "Controller vibration" and "Vibration strength" (xr_haptics, xr_haptic_scale).
- Pressing Reload plays the game's own reload: both arms and fingers ease onto its animation and back to the controllers 0.15 s before it ends.
- Grapple and takedown, picking up, dropping, throwing and hiding a body, and finishers with a paired animation hand the body to the animation; roomscale stays as it is. While carrying a body the left arm follows the animation and the right hand keeps aiming.
- Physical turns rotate the native body independently of the VR view.
- Longer car steering travel, and the cabin steering wheel animated over it in more vehicles.
- Hit and kill markers on their own head-locked HUD window.
- Every gameplay player replacer (Aguilar, Theo, Kurt, the android, the netrunner and others) gets the second-eye cameras, as Johnny's replacer already had.
- Stage replay (MAIN replays the second eye's recorded render stages) is available as xr_stage_replay; it is off by default.
Fixed
- Auto-exposure no longer swings when the head turns: it is metered from the environment around the player instead of from the view.
- The sun shadow cascade boundary no longer sweeps across the ground with head turns.
- Popups (phone, dialer, vehicle list, radio, messages, shards, car colour pick) no longer double the picture.
- NPC quest markers stay on their chevron and at the same height in both eyes; the second quest marker on a looted body no longer doubles; the second eye's HUD no longer jumps a frame ahead in head turns.
- The scanner is centred on the gaze and sits at infinity in both eyes. The persistent dot, the scanner panel and head-gaze targeting follow the vertical centre of the asymmetric views.
- Scanner gesture and controls: the ear gesture reads coherent grip poses, scanner navigation waits for the game's Vision state, and a rejected request is released, so movement and weapon switching can no longer stay captured.
- The tutorial popup video sits in its place in both eyes instead of covering the button under it.
- The radio port and the vehicle list open lower, inside the view.
- Screen effects (damage, Edgerunner, Sandevistan and other on-screen effects) keep their look, but no longer move the picture differently in each eye.
- At the new-game mirror (character creation) the second eye no longer flashes solid yellow, green and magenta.
- Missing Take/Equip prompts (for example the suit duffle in q303 and Jackie's ofrenda items): the legacy shot-finding hooks that wrote the VR muzzle into the game's targeting origin are gone.
- Manual reload no longer spends the ammo twice; pressing the game's Reload while a hand is on the slide or a magazine is out no longer causes an endless reload or a crash.
- Grabbing a grenade with a weapon in hand puts the weapon away first instead of leaving the hand stuck in the grip; the holster and the belt no longer react to the same squeeze; the held grenade is no longer drawn over the hand.
- A thrown grenade falls past a ledge or a kerb onto the ground below instead of lying on the air.
- The two-hand grip steers relative to where the left hand was when the grip closed, so the weapon no longer jumps on grab and release; it lets go when the hand is pulled 60 cm off the weapon. New keys xr_two_hand_aim, xr_two_hand_break, xr_two_hand_aim_release_ms.
- A slightly canted pistol can still be racked by the slide.
- Projectiles launch from the muzzle; hitscan shots use the cast ray's own position and direction.
- Periodic GameThread hitches caused by the CET Lua garbage collector (in the city the 1% low went from 23-29 to about 45 FPS).
- A crash when pausing: the second view's UI composition is now held with a reference while the game rebuilds the UI.
- Some launches started with the world drained of colour (grey-silver materials): async compute passes are back on the async queue and the grading lend is back to how it was.
- Frame generation with DLAA and with the game's native TAA.
- VR frame timing: rendered frames are published before frame-generation pacing, selected frame timestamps are kept, head prediction is fitted to real presentations with a bounded horizon, and shared or stale stereo depth is rejected. Shader replacements live exactly as long as the game's original pipeline; a swapchain wait timeout no longer releases an image that was never waited for.
- The LOD threshold is also patched at the engine's two other camera-descriptor builders (xr_fix_lod).
- The second view's G-buffer partition lift applies to VRCAM only; every other view keeps the engine's single partition.
- The first eye's render resolution could stay at 1024x768 instead of the selected one.
- The desktop window shows the whole frame at the render's aspect, on its own monitor and never upscaled; cursor and clicks are mapped through the same crop. Eyes use the runtime's sRGB swapchain format where it exists, otherwise they are decoded correctly.
- The settings panel is carried rigidly by the grip (the wrist swings it, the stick pushes and pulls it), and the FPS overlay no longer draws over it.
Changed
- New installs start with stage replay, the submission chain, deferred Present and game-thread render-queue skipping off, and with shared sun cascades and HUD stereo depth on. Values already in your vrport.ini are kept.
- The first-launch preset no longer touches brightness, gamma or the HDR levels (paper white, maximum monitor brightness, tonemapping midpoint): they are kept as the player's own, like language and audio. The preset's HUD crosshair is off, ray-traced lighting is Ultra and the field-of-view maximum is 100 degrees.
- Weapons: the camera recoil kick is removed and hand recoil is 30% lower (xr_recoil_scale); sniper rifles keep their own fire cadence under the VR semi-auto trigger; the Kappa's seated magazine comes out on the button only. Trigger cadence is tuned and muzzle flashes and tracers are reduced.
- Hand smoothing stays on under frame generation at 1.5x the rate (xr_hand_lerp_framegen_scale; 0 switches it off there as before).
- The tuned VRIK wrist rotations are the new base and read as 0 in the overlay; vrik_calibration.ini version 4 stores offsets, and a version 3 file loads as before.
- Hand-gesture calibration is built in; thumbs-up is right-hand only.
- Interaction and loot panels are head-locked by default (cones 0, interaction distance 2 m, FOV 75); a zero free-look cone is accepted everywhere.
- Every packed asset now ships in one cyberpunkvrport.archive with one ArchiveXL manifest.
- vrcam_cpu_tweaks.ini is reduced to the streaming distances and culling settings.
- Lower port overhead: about 1 ms less render-job CPU per frame in RenderElements and scene passes, and empty HUD windows are no longer drawn (about 0.19 ms less GPU).
- Submission chain, deferred Present and render-queue skipping are ini switches for A/B testing (xr_submit_chain, xr_defer_present, xr_gt_skip_render_queue).
- New modules: CET CyberpunkVRPort_Optics and CyberpunkVRPort_PhysicalCrouch; redscript CyberpunkVRPort_BodyCarry, _Cyberware, _Finisher, _Haptics, _Optics and _PopupVisualState.
Upgrading from 0.1.7
- Delete archive\pc\mod\VRCigarette.archive.xl, archive\pc\mod\vrport_basketball.archive and archive\pc\mod\vrport_mag.archive. Their assets are inside cyberpunkvrport.archive now.