VR M2: layered stereo -- N-view rendering (multiview raster, compute over view layers, shared once-per-frame work) #1075
Labels
No labels
amd
avatars
bug
builder
cannot-reproduce
crash
epic
feature
from-viewer
gl-removal
known-limitation
monitoring
parity
perf
platform
priority
critical
priority
high
priority
low
priority
medium
provenance
rendering
rt
status
in-progress
status
testing
status
up-next
triage
ui
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Blocks
#1072 [Epic] VR support (OpenXR) -- headline feature for 1.6
sky_line/Slipstream
Reference
sky_line/Slipstream#1075
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Hard rule: the non-VR path must not lose quality or FPS; desktop runs the same shaders at 1 view/layer and every step is gated by a desktop frame-hash + timer A/B.
Revised 2026-10-26 (owner): no serial "render the frame twice" mode. Design directly for the end state:
This absorbs the old M4 (#1077) multiview / shared-pass work. VR preset initially: RT-capable GPUs, RT shadows on, RT reflections optional (replacing planar mirrors), GI / volumetric fog & clouds / particle fog / god rays / lens flare off until their per-view histories land.
Design: VR_LAYERED_STEREO_DESIGN.md (team research repo, in progress), built on the view-state inventory in VR_PER_VIEW_REFACTOR.md. Measured: ~7.5 ms fixed per view + 0.66 ms/MP -- sharing per-view fixed cost is the point.
Part of #1072.
VR M2: true stereo rendering with per-eye stateto VR M2: layered stereo -- N-view rendering (multiview raster, compute over view layers, shared once-per-frame work)End-state design decided (design doc: research repo
vr/VR_LAYERED_STEREO_DESIGN.md).Approach: the world is recorded once per frame for both eyes. Screen targets become image arrays (one layer per eye), raster passes use Vulkan multiview, screen-space compute dispatches z = N, hit-list kernels (GI hits, #1039 queue) tag records with the view and keep one walk. Shared once per frame: union cull, probe capture, shadow maps, history validity. Per eye: only the DLSS / FSR instances.
Decisions:
Also: desktop window shows the left eye with the normal UI overlaid; VR snapshots copy the left eye; name tags / hover text become world-space billboards (M3); cluster mesh path falls back to its vertex tier without multiview mesh-shader support.
Migration: 17 steps, each gated on desktop frame hash + timers + sync validation. Steps 1-7 change no image types (timestamp guard, feature bit + spec plumbing, per-view data arrays), then targets convert to arrays one family per commit, then a desktop two-view debug mode (IPD 0: both layers must equal the single-view hash), then union cull, per-eye upscalers, view-tagged records, XR array swapchain.