RT mirrors: replace the planar hero-mirror render with ray-traced reflections on RT hardware #860

Closed
opened 2026-10-19 02:35:38 +00:00 by sky_line · 1 comment
Owner

Follow-up to #859 (hybrid RT reflections).

Goal

On RT-capable hardware, render surfaces flagged as mirrors (SL "hero probe" / mirror objects) with ray-traced reflections instead of the per-frame planar/hero re-render of the whole scene.

Why

  • The hero mirror re-renders the full scene from the mirrored viewpoint every frame: a large fixed cost, paid whether the mirror covers 2% or 100% of the screen.
  • RT cost scales with the mirror's on-screen pixels only; a small mirror across the room becomes nearly free.

Depends on

The #859 hybrid fallback is not sufficient: its cheap hit shading (no local/projector lights, no second bounce, half-res option, RT scene lacks particles/some alpha) is acceptable on glossy floors but obvious on a perfect mirror. This needs the later full-RT reflection mode (RenderVKRTReflections = 2) with proper hit lighting:

  • local + projector lights at the hit (clustered light lookup or ReSTIR-style sampling)
  • full material evaluation at the hit
  • at least one extra bounce, or probe fallback for secondary reflections
  • a plan for content missing from the TLAS (particles, alpha-blended faces, water, sky)

Scope

  • Keep honouring the mirror flag set by content creators; only the drawing method changes.
  • Mirror pixels: forced roughness 0, full resolution, no SSR-miss gating (trace every mirror pixel, or SSR first if quality-equivalent).
  • The planar/hero mirror path stays as the fallback for non-RT cards and when RT stands down under VRAM pressure.
  • Setting to choose planar vs RT mirrors on RT hardware, for A/B comparison.
  • GPU timers on both paths; A/B against the planar mirror at a fixed camera (small mirror far away, full-screen mirror up close).

Acceptance

  • Visual parity with the planar mirror (lit rooms, avatars, alpha, particles) or documented, accepted gaps.
  • Lower GPU time than the planar mirror in typical scenes.
Follow-up to #859 (hybrid RT reflections). ## Goal On RT-capable hardware, render surfaces flagged as mirrors (SL "hero probe" / mirror objects) with ray-traced reflections instead of the per-frame planar/hero re-render of the whole scene. ## Why - The hero mirror re-renders the full scene from the mirrored viewpoint every frame: a large fixed cost, paid whether the mirror covers 2% or 100% of the screen. - RT cost scales with the mirror's on-screen pixels only; a small mirror across the room becomes nearly free. ## Depends on The #859 hybrid fallback is **not** sufficient: its cheap hit shading (no local/projector lights, no second bounce, half-res option, RT scene lacks particles/some alpha) is acceptable on glossy floors but obvious on a perfect mirror. This needs the later full-RT reflection mode (`RenderVKRTReflections` = 2) with proper hit lighting: - local + projector lights at the hit (clustered light lookup or ReSTIR-style sampling) - full material evaluation at the hit - at least one extra bounce, or probe fallback for secondary reflections - a plan for content missing from the TLAS (particles, alpha-blended faces, water, sky) ## Scope - Keep honouring the mirror flag set by content creators; only the drawing method changes. - Mirror pixels: forced roughness 0, full resolution, no SSR-miss gating (trace every mirror pixel, or SSR first if quality-equivalent). - The planar/hero mirror path stays as the fallback for non-RT cards and when RT stands down under VRAM pressure. - Setting to choose planar vs RT mirrors on RT hardware, for A/B comparison. - GPU timers on both paths; A/B against the planar mirror at a fixed camera (small mirror far away, full-screen mirror up close). ## Acceptance - Visual parity with the planar mirror (lit rooms, avatars, alpha, particles) or documented, accepted gaps. - Lower GPU time than the planar mirror in typical scenes.
sky_line added this to the Slipstream project 2026-10-19 02:35:38 +00:00
Author
Owner

Fixed in 1.5.0 Beta 1 (8db7d5c283). Reopen if you still see it.

Fixed in 1.5.0 Beta 1 (8db7d5c283). Reopen if you still see it.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
sky_line/Slipstream#860
No description provided.