feat(render) Campaign FW1: doorway-still conformant - deg_mul is dynamic
Render::deg_mul is auto-tuned by frame load and SWUNG between oracle captures: doorway-still ran right after the heavy terrace-edge capture with the multiplier depressed (mul <= 0 puts thresholds at/below ideal, so 001e/0026/002f select the portless level 1 - retail's zero look-in floods, reproduced exactly at mul = 0), while every other fixture pins ~ +0.99 (thresholds at max). The recon session's "-0.99" live dump was real - taken under the same cdb load. RetailFrameWalk now exposes the multiplier; the doorway test pins 0, the rest use the default. foundry-entry: frames 1-66 reproduce exactly; the F67-F79 standing segment diverges ONLY in building 0036's intra-building DC order (retail 116,118,11d vs replay 11d,116,118). The BSP-traversal microscope pins the flip to 0036's ROOT plane (N=(0,0,-1) D=2.8): replay eye z 2.33 (d=+0.47, NEG-first) vs retail behaving as d<0 (POS-first) - a structural ~0.5 m frame question (positionPush(2)/part-scale), only adjudicable live. Turnkey probe: tools/walk-oracle/fw1-f67-viewpoint-probe.cdb. Fixture status: nine of ten fully conformant; foundry-entry exact through F66 with the 13-frame order segment parked on the probe. Suites: Walk 127/1 skip; hermetic 6,687/0. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
c1a029edf9
commit
77f5342b62
4 changed files with 148 additions and 25 deletions
|
|
@ -59,6 +59,15 @@ public sealed class RetailFrameWalk
|
|||
/// regardless of per-cell visibility.</summary>
|
||||
public bool AlwaysDrawObjects = true;
|
||||
|
||||
/// <summary>Retail global <c>Render::deg_mul</c> — DYNAMIC: the
|
||||
/// auto-tuner (<c>auto_update_deg_mul</c>) swings it with frame load
|
||||
/// (positive ⇒ degrade thresholds slide toward each level's max;
|
||||
/// negative ⇒ toward its min). The oracle captures pin ≈+0.99 for every
|
||||
/// fixture except doorway-still, whose capture ran under cdb load with
|
||||
/// the multiplier depressed (the recon session's live dump read −0.99
|
||||
/// under the same conditions).</summary>
|
||||
public float DegradeMultiplier = WalkBuilding.DefaultDegradeMultiplier;
|
||||
|
||||
/// <summary>The per-frame root (<c>SmartBox::RenderNormalMode</c>).
|
||||
/// <paramref name="cameraCell"/> may be null only when the camera is
|
||||
/// outdoors.</summary>
|
||||
|
|
@ -153,7 +162,9 @@ public sealed class RetailFrameWalk
|
|||
// Retail walks the CURRENT degrade level's drawing BSP
|
||||
// (part->gfxobj[deg_level]); a degraded-out slot skips everything
|
||||
// after publishing the portal list.
|
||||
WalkBspNode? bsp = building.SelectDrawingBsp(ctx.ViewerDistanceTo(building));
|
||||
WalkBspNode? bsp = building.SelectDrawingBsp(
|
||||
ctx.ViewerDistanceTo(building),
|
||||
degradeMultiplier: DegradeMultiplier);
|
||||
if (bsp is null) return;
|
||||
|
||||
int viewCount = Math.Max(activeViews.ViewCount, 0);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue