Skip to content

Far-field sharing produces severe compositing artifacts in VR #43

Description

@philpax

Problem

With far_field.enabled + Share mode (the default until 0d90744), the shared far field produces massive visual artifacts in VR. This may not be new breakage: earlier sessions possibly ran with the share not actually kicking in, and recent changes (release builds, the OpenXR loader being found again) may have activated the full path for the first time in a while.

far_field.enabled now defaults off (0d90744) until this is resolved; re-enable it in the Render tab (mode Share) to reproduce.

Leads

  • Resolution mismatch: the VR native-resolution resize (e.g. 1141x1405 -> 2015x2240) happens after bring-up via the deferred engine resize. If the share pipeline's captured far G-buffer targets are not recreated at the new size, the composite samples a missized capture — consistent with "massive artifacts" rather than subtle ghosting.
  • Session state: the artifact session reused a persisted OpenXR instance after a crash; worth reproducing from a clean launch to rule out stale share-pipeline COM state (far_field::share::teardown runs on uninject, but the crash path may have skipped it).
  • Profiling context (Add profiler trace capture for VR performance analysis #34 captures): the far G-buffer render is ~2.7 ms of GPU per frame and resolution-independent — geometry-bound, dominated by terrain-patch tessellation at the 4x budget from Terrain walls and cave ceilings render black at grazing angles in VR #40 — so the fix direction for cost and the fix for correctness likely share a redesign.

Relationship to frame pipelining

The planned far-field temporal reuse (render the far field every N frames) and the frame-tail/pipelining work both restructure when the far G-buffer is produced versus consumed. The artifact fix should be designed together with those rather than patched in place — a re-captured, correctly-sized, explicitly-lifetimed far G-buffer is a prerequisite for all three.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingrenderingRendering pipeline

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions