Repository navigation
Tags: oneup03/VRto3D
Tags
Add ghost reduction and LeiaSR anti-crosstalk controls Every stereo display leaks some of each eye into the other, and how visible that is depends on the brightness difference between the eyes. Two global levers go at the top of the Shader tab, applied last in the display-correction pass, in linear light via a plain 2.2 power: - Contrast (1.0 = off) squeezes toward mid-grey, shrinking |L - R| directly. - Black Lift (0.0 = off) raises the black floor. Displays that cancel crosstalk themselves (LeiaSR) pre-subtract the opposite eye, which drives dark pixels below black; the clamped part is what survives as a ghost, and lift gives it room. Where nothing cancels it does nothing. Both are global on purpose: a correction applied to one eye and not the other is itself new inter-eye difference, which ghosts in turn. Both defaults are exact no-ops the shader branches on, so existing profiles render identically, and screenshots are taken before the pass. The Vulkan repack shader gets the same step (push-constant block 96 -> 112 bytes, SPIR-V regenerated). On LeiaSR the panel's own cancellation can now be tuned as well, through SR-lib's new anti-crosstalk controls on our raw SDK weaver: mode (Display Default / Off / Static / Dynamic), strength (0-300% of the panel's measured factors) and the weaver's contrast (50-100%, which squeezes the image much like our Contrast lever). Good first values from testing: SR Anti-Crosstalk 130%, SR Contrast 97%, Contrast 0.95. Raising strength cancels more but clips more, which is what Black Lift is for, so the two sit together at the top of the section. They show only while LeiaSR is the output, and only if the installed SR runtime offers the interface. They are display settings rather than part of our shader pass, so they apply whether or not the correction shader is enabled. The presenter reads the panel's defaults from each new weaver, logs them, and calls into SR on the render thread only when a value changes. Submodules: - VRto3DLib: the five new keys (shader_ghost_contrast, shader_ghost_lift, sr_crosstalk_mode, sr_crosstalk_strength, sr_weaver_contrast), global and per-game. - SR-lib: moves to the api_expansion branch for SR.hpp's anti-crosstalk controls; vrto3d.vcxproj adds the SR-lib root to the include path. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Merge pull request #26 from oneup03/direct_experiment # VRto3D — Direct Mode Release The big one: VRto3D now renders and presents stereo 3D **natively/in direct mode**, instead of relying on ReShade + external tools. This unlocks a full menu of output formats, an in-3D settings UI, auto-depth, proper screenshots, and native **Linux support**. ## 🎬 Native 3D output modes All modes are produced directly by the driver (no ReShade required): - **Side-by-Side** and **Top-and-Bottom** - **Row Interlaced** / **Column Interlaced** - **Checkerboard** - **All Anaglyph flavors** (Red/Cyan, Green/Magenta, Blue/Amber, + Dubois/deghosted/half-color variants) - **Dual Display / Dual Display Flip** — for dual-projector or dual-monitor setups - **Frame-Packed** modes — switches the display into a frame-packed HDMI mode - **LeiaSR** — autostereoscopic weaving with tracking built in (Midlife Crisis / Eff's tracking incorporated — **no separate app needed**) - **NvidiaDX9** — 3D Vision output, rebuilt on top of the new **NV3D-Lib** - **WibbleWobble** — frame-sequential output (installer fetches the required WibbleWobble beta automatically) - **VirtualDesktop** mode (replaces the old `vd_fsbs_hack`) - **Mono** mode ## 🐧 Linux support (new) - Full Linux port with **Wayland and X11** presenters and a **Vulkan** rendering path - **evdev**-based input and OSD on Linux - Frame-packed modeline wiring on X11; WibbleWobble streaming to `wwserver` - Linux install script + CI build workflow - Not extensively tested ## 🖥️ On-Screen Display (OSD) - **ImGUI-based in-headset menu** to edit **every** VRto3D setting — no more hand-editing config files (**Ctrl+Home** or **Start + D-Pad Down**) - **Gamepad navigation** for the OSD - **Download the latest game profiles** directly from the OSD - **Display-correction shader**: a final-pass color correction applied to the composited image — per-channel **Lift / Gamma / Gain** plus an adjustable contrast curve — to tame ghosting/crosstalk and match brightness on displays that need it - Buttons to take a screenshot, open the profile/screenshot folders, and reset to factory defaults - **Stereo cursor**: optional per-eye software cursor drawn at adjustable **depth and size**, plus **hide-cursor** and **lock/confine-cursor** options — all saved per profile - **Auto Exit SteamVR**: optionally shut SteamVR down automatically when the game closes ## 🔎 Auto-Depth - **Auto-Depth** feature that works in any game (behaves like auto-convergence, depth-buffer driven) - Comfort-target and smoothing controls, plus optional sample logging for tuning ## 🎯 Head tracking - **LeiaSR built-in head tracking** — sensitivity, deadzone, per-axis limits, One-Euro filter smoothing, and the track mode (Yaw/Pitch up to Full 6DOF) are all tunable, so no separate tracking app is required - **OpenTrack tuning** — position deadzone, zoom smoothing, and max-zoom controls for XInput/OpenTrack head tracking; you can also disable the built-in SR tracking to feed the OpenTrack port from an external source (OpenTrack, VertoXR, …) ## 📸 Screenshots - Captures a **normal** and a **cross-view** image each time - Trigger from the OSD (**Misc → Take Screenshot**) or the **Ctrl+F12** hotkey - Fixed black/blank screenshots ## ⌨️ Hotkeys & profiles - Reworked user hotkeys; **"Toggle" mode now supports multiple presets** - **Start + D-Pad Up** now mirrors the **Ctrl + F8** focus hotkey - Hotkey changes apply live without a restart - **All shipped game profiles migrated to portable key names** (cross-platform) ## 📦 Installer - New Windows installer (Inno Setup): picks release / pre-release / local build, detects SteamVR, optional cleanup of legacy ReShade and third-party drivers, optional WibbleWobble + LeiaSR setup ## 🛠️ Fixes & polish - Overhauled focus / always-on-top handling (unified `ComputeWantOnTop` focus policy; fixes overlay stuck-on-top after game exit; consistent auto-focus) - Numerous DX9 stability, color, and freeze fixes - Fixed screen tearing, multi-layer sizing, UEVR rendering/stutter, RealVR reconnect, recenter reliability, DPI-scaling bug - sRGB present chain fixes for correct (non-dark) output
PreviousNext