diag(render): Phase U.4c — ACDREAM_PROBE_FLAP per-frame convergence probe
Per-frame (not cell-change-throttled, so it catches the flicker at a stable root): [flap] line from the builder — root cell's per-portal side-test D + traverse/cull + NDC projection, plus OutsideView poly count + visible-cell count; localEye exposes when the eye has crossed an interior portal plane. Paired [flap-cam] line from the draw site — FindCameraCell resolution branch (CameraCellResolution enum, new), eyeInRoot AABB flag (stale-root signal), eye + player worldpos, and the frame's TerrainMode/OutdoorVisible outcome. Disambiguates side-cull vs empty-projection vs stale-root. Inert when off (gated). Throwaway apparatus to converge the flap fix. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
8941d1e6e5
commit
1d47ede007
4 changed files with 118 additions and 0 deletions
|
|
@ -96,6 +96,24 @@ public static class RenderingDiagnostics
|
|||
public static bool ProbeVisibilityEnabled { get; set; } =
|
||||
Environment.GetEnvironmentVariable("ACDREAM_PROBE_VIS") == "1";
|
||||
|
||||
/// <summary>
|
||||
/// Phase U.4c (2026-05-31) flap-convergence probe. When true, the portal
|
||||
/// visibility pass emits, EVERY frame the camera root is an indoor cell, a
|
||||
/// <c>[flap]</c> line (root cell's per-portal side-test D + traverse/cull +
|
||||
/// projection, plus the frame's OutsideView/visible counts) and the call site
|
||||
/// emits a paired <c>[flap-cam]</c> line (FindCameraCell resolution reason,
|
||||
/// camera EYE worldpos, player worldpos, eye-in-root-AABB flag). Unlike the
|
||||
/// cell-change-throttled <see cref="ProbeVisibilityEnabled"/> probe, this fires
|
||||
/// per-frame so it captures the flicker (the exit cell dropping in/out at a
|
||||
/// STABLE root). Pinpoints WHY the exit cell drops: side-test cull (eye past an
|
||||
/// interior portal plane), empty projection, or a stale root (eye outside the
|
||||
/// cell while FindCameraCell still reports it via cache/grace). Throwaway
|
||||
/// apparatus — strip once the flap mechanism is confirmed.
|
||||
/// Initial state from <c>ACDREAM_PROBE_FLAP=1</c>.
|
||||
/// </summary>
|
||||
public static bool ProbeFlapEnabled { get; set; } =
|
||||
Environment.GetEnvironmentVariable("ACDREAM_PROBE_FLAP") == "1";
|
||||
|
||||
// Cell-change gate for EmitVis. The probe fires once per distinct root cell
|
||||
// so launch.log stays readable under motion (the per-frame call is a no-op
|
||||
// when the root is unchanged). Sentinel 0 = "no root yet" — the first real
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue