54 Commits
Author SHA1 Message Date
Jeremy Bowers 64cc2b2e13 When Immersive VR is used, lock certain settings in place that are necessary for it.
This fixes #5.
2026-10-18 19:21:47 -04:00
Jeremy Bowers fbeefedb2a Updates to the Readme.md and compiling scripts. 2026-10-05 17:06:08 -04:00
Jeremy Bowers 9dd817d864 OpenXR: add independent stereo separation control
Immersive VR previously used the full runtime-reported left/right view
positions, with Units per Meter scaling both world geometry and the
per-eye offsets. That left no direct way to soften strong near-field
pop-out without also changing the apparent world scale.

Add Graphics.VR.StereoSeparation as a 0-200 percent setting, defaulting
to 100 percent. Scale each eye's positional offset around the average
eye center independently of shared head translation. At 100 percent the
projection is unchanged, 0 percent brings the virtual view positions
together toward mono, and values above 100 percent amplify stereo depth.
Units per Meter continues to set world scale and head-motion mapping.

Expose the setting in the global VR pane and per-game VR configuration,
include it in game VR override application/reset, and refresh cached
projection rows when it changes. Help text explains the scale/depth
tradeoff, possible near-field comfort benefit, and that Stereo 3D Screen
continues to use the existing Stereoscopic Depth control.
2026-10-05 00:21:28 -04:00
Jeremy Bowers 4465c932fb Steam Frame: decouple XR heartbeat from game timing 2026-10-04 20:54:26 -04:00
Jeremy Bowers 22f6884ca0 Checkpoint. This has a number of things including defaulting eager_heartbeat to true. 2026-10-04 14:41:52 -04:00
Jeremy Bowers 3ec01541fd OpenXR: add configurable presentation modes 2026-10-03 20:06:38 -04:00
Jeremy Bowers 7726dbe5a5 OpenXR: add requested display refresh rate
Add GFX_VR_REQUESTED_REFRESH_RATE setting (Auto/60/72/90/120 Hz). When a
non-zero rate is configured, call xrRequestDisplayRefreshRateFB after the
session begins so the runtime can switch the headset panel to a rate that
matches the game's frame rate (e.g. 60 Hz or 120 Hz for 60 fps Wii games,
instead of the default 72 Hz).

This should reduce judder caused by the compositor showing 60 fps content on
a 72 Hz display. The runtime may clamp the request to the nearest supported
rate; the result is logged.

UI exposed in VRPane and VRConfigWidget.
2026-10-03 10:12:22 -04:00
Jeremy Bowers 64878c16c4 Polish stereoscopic virtual screen mode
- Make Flat Screen and Stereo Screen checkboxes mutually exclusive in VRPane.
- Fix Vulkan Android stereo-screen submission to end the render pass and
  submit the command buffer once before releasing both eye images, instead of
  once per eye.
2026-10-03 01:36:00 -04:00
Jeremy Bowers fb2e70a608 OpenXR: implement stereoscopic virtual screen mode
- Add IOpenXRSwapchain::GetEyeSwapchainHandle() and SubmitStereoFlatFrame(),
  with per-backend overrides for Vulkan, D3D11, D3D12, and OGL.
- Add OpenXRManager::SubmitStereoQuadFrame() which builds two world-locked
  XrCompositionLayerQuad layers with XR_EYE_VISIBILITY_LEFT/RIGHT and publishes
  them through the pacing thread (or EndFrame on the legacy path).
- Extend PublishedXRFrame and FrameThreadLoop to submit the stereo quad pair.
- Add UI checkbox for Stereo Screen in VRPane and VRConfigWidget.

The game renders with classic SBS stereoscopy; left/right XFB layers are blit
into the corresponding OpenXR eye swapchains and shown as a 3D floating screen.
2026-10-03 01:29:02 -04:00
iChris4 3ddf87e56e Updated VRPane UI & Settings 2026-07-25 18:53:44 +02:00
iChris4 0b3f728999 Removed Debug Logs 2026-07-24 16:56:48 +02:00
iChris4 1d807900ff Moved "Debug Log Draws" to the VR Pane 2026-07-24 16:50:43 +02:00
iChris4 39b0718a3c Updated UI 2026-07-24 16:35:55 +02:00
iChris4 d85e292b12 Presentation-stage fix & Added screen_pane type override 2026-07-23 17:45:43 +02:00
iChris4 b4796daa35 Added Frame Size from XFB Copy, Small 3D Viewports and Detect Render-to-Texture Viewports 2026-07-23 00:14:58 +02:00
iChris4 8a6747efdd Updated VRPane layout 2026-07-22 03:23:59 +02:00
iChris4 1793f16d6d Removed Element Depth 2026-07-22 02:52:37 +02:00
iChris4 5f651538d3 Removed depreciated Auto Layer and Layer Offset 2026-07-21 21:01:36 +02:00
iChris4 e7662f3c8b Removed "LockHeadPosePerFrame " and "AutoImmediateXFB "in VR Hacks 2026-07-21 17:06:40 +02:00
iChris4 d94a5a0cfe Updated "Configure in VR" Wii Remote OpenXR controller bindings 2026-07-20 02:53:55 +02:00
iChris4 2aa5f3b2ca Added "Controller Anchor" type to the group elements override 2026-07-19 17:56:55 +02:00
iChris4 b44ac1f850 Added "Camera Anchor" type to Group Element Override 2026-07-19 04:51:48 +02:00
iChris4 405f30d211 Added "Auto-Exclude EFB Effects" to 2D Virtual Screen 2026-07-19 01:29:05 +02:00
iChris4 e77555d766 XFB pose stamps & EFB clear moved off the present path 2026-07-18 23:24:17 +02:00
iChris4 4825e49442 Added "Exact Screen Depth" mode 2026-07-18 16:47:07 +02:00
iChris4 a4a4eec869 Defer eye blit to submit time 2026-07-16 15:38:48 +02:00
iChris4 3bfa9ad3ec Improved passthrough & Added XRPacingThread 2026-07-12 01:32:52 +02:00
iChris4 490695d83f Added foveated rendering 2026-07-11 04:16:02 +02:00
iChris4 f97441c943 UPM Max raised to 2000 & Exponential slider scale 2026-07-08 03:26:39 +02:00
iChris4 b5c0d83c96 Removed the running-game restriction for Reset VR Settings 2026-07-08 02:15:55 +02:00
iChris4 d9565464a9 Added 2D "cinema" mode 2026-07-07 05:37:17 +02:00
iChris4 bc7a7dbe67 Updated Passthrough Mode 2026-07-07 04:11:24 +02:00
iChris4 ec0211452b Merged Metroid Palette Fix Toggles 2026-06-21 06:33:33 +02:00
iChris4 e911bec8b3 Fix Metroid Prime 3D VR HUD 2026-06-13 22:26:22 +02:00
iChris4 3de35df672 Detect Skybox feature added 2026-06-09 04:01:12 +02:00
iChris4 b6eb5a946a Add D3D11 Metroid thermal palette fix 2026-06-04 19:12:42 +02:00
iChris4 ace44a8a1b Add Metroid Prime Vulkan visor fixes 2026-06-04 03:04:32 +02:00
iChris4 04113519b6 Opcode Replay Added 72,90,120hz 2026-05-15 02:15:13 +02:00
iChris4 da596b84ed Default VR Position Selection 2026-05-14 20:42:16 +02:00
iChris4 2bedfe31bd Linux Debian VR Building Option 2026-05-14 18:56:58 +02:00
iChris4 f933865451 Ortho Scissor Fix Toggle 2026-05-11 01:48:33 +02:00
iChris4andClaude Sonnet 4.6 df936c2976 VR Pane: add Reset Settings button for the General tab
Restores all General-tab VR settings (camera, virtual screen, frame
rate, rendering) to their compiled defaults in one click. Disabled
while emulation is running so resets can't race the active session.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-10 17:38:25 +02:00
iChris4andClaude Sonnet 4.6 148957b981 VR Pane: auto-enable camera Forward/Height when adjusting their slider
Both sliders now flip their respective Enable toggle to true the moment
the user drags them, so the value isn't silently ignored.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-10 17:37:21 +02:00
iChris4andClaude Sonnet 4.6 6442017d78 Add VR Forced VBI Frequency setting (Auto/72/90/120 Hz)
Replaces the boolean "Force VBI to 90 Hz" override with an explicit
choice across Off / Auto / 72 / 90 / 120 Hz. Auto samples the headset
refresh rate at OpenXR session startup (via XR_FB_display_refresh_rate)
and rounds to the closest supported value. Migrates the legacy
AutoVBIFromHMD setting on first load. Per-game profile editor and the
HK_VR_TOGGLE_FORCE_VBI hotkey are updated to cycle Off <-> Auto.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-10 17:36:55 +02:00
iChris4 5ee1008ed5 Quest Performance Toggle & Controller Profiles 2026-05-05 16:01:31 +02:00
iChris4 c80961c437 Quest Vulkan Multiview fixes & Performances 2026-05-02 15:58:54 +02:00
iChris4 adaeeaf3d4 Fix for Vulkan 2026-04-24 16:15:01 +02:00
iChris4 2929ead841 Initial Support for Quest 2026-04-24 13:40:27 +02:00
iChris4 19ba9b05fa Opcode Replay Fix & Lock Head Pose Per Frame Fix 2026-04-23 16:43:59 +02:00
iChris4 49febf2cbe WII Controller Config Screen Overlay for OpenXR & Quest 3 Controller Fix 2026-04-12 02:08:02 +02:00