docs(render): ARCHITECTURE RESET — indoor render is a 3-gate patchwork; handoff + unified-PView target
A week on the indoor render (Phase U.4 → U.4c → 2026-05-31) fixed the flap but
produced NO shippable progress: walls/ceiling don't seal, outdoor terrain is
visible from inside (#78), the enclosure reads grey/transparent. Root cause is
ARCHITECTURAL, not a bug.
Evidence this session (direct, via the new [shell] probe + screenshots) RULED OUT
every subsystem except the gating architecture: the interior cell shells render
fine (geometry/texture/opaque/depth all correct, zh=0 tr=0); the visibility
traversal computes correct sets + non-empty portal clips; cull mode is fine; the
camera/eye thread was a detour. The residual is that OUTDOOR geometry is not gated
to portal openings when indoors, and acdream enforces visibility THREE inconsistent
ways (TerrainClipMode / per-cell shell clip / entity ParentCellId filter with an
outdoor-stab bypass) instead of retail's ONE PView gate.
This commit is the reset handoff + documentation, not a code fix:
- docs/research/2026-05-31-render-architecture-reset-handoff.md — canonical: honest
state, evidence ledger (ruled-out / do-not-repeat), the mapped 3-gate patchwork,
the retail PView target (one traversal → one gate for ALL geometry), the reset
mission, and a copy-paste pickup prompt.
- docs/architecture/acdream-architecture.md — new "Render Pipeline" SSOT section
(current divergence + unified-PView target + the one rule: compute visibility
once, enforce it once). (Doc has pre-existing corruption below this section —
flagged for separate cleanup.)
- Apparatus: ACDREAM_PROBE_SHELL → [shell] (EnvCellRenderer per-cell prepared/drawn
geometry + flags) added to RenderingDiagnostics + EnvCellRenderer. Throwaway.
- docs/superpowers/specs/2026-05-31-camera-collision-indoor-engagement-design.md —
spec for e099b4c (camera collision; now parked as orthogonal to the seam).
Next session: STOP point-fixing; do the architecture reset to a single PView gate.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
e099b4c4a3
commit
0013819fa1
4 changed files with 417 additions and 0 deletions
|
|
@ -933,6 +933,48 @@ public sealed unsafe class EnvCellRenderer : IDisposable
|
|||
_lastFrameStats.TrianglesDrawn += (dc.renderData.Batches.Count > 0
|
||||
? dc.renderData.Batches[0].IndexCount / 3
|
||||
: 0) * dc.count;
|
||||
|
||||
// Issue #78 (2026-05-31) [shell] probe (ACDREAM_PROBE_SHELL) — THROWAWAY.
|
||||
// Per opaque-pass call: totals + per visible (filtered) cell whether it is
|
||||
// present in the prepared snapshot, and its geometry/flags. Answers why the
|
||||
// interior walls/ceiling don't appear: NOSNAP / gfx=0 ⇒ no shell geometry
|
||||
// prepared for the cell; idx>0 + zh>0 ⇒ prepared but missing bindless texture
|
||||
// (invisible); idx>0 + zh=0 + tr=0 ⇒ opaque geometry drawn (fault is depth/
|
||||
// occlusion or the geometry isn't the wall). Opaque pass only (halves noise).
|
||||
if (renderPass == WbRenderPass.Opaque
|
||||
&& AcDream.Core.Rendering.RenderingDiagnostics.ProbeShellEnabled)
|
||||
{
|
||||
var sb = new System.Text.StringBuilder(256);
|
||||
sb.Append("[shell] filter=").Append(filter?.Count ?? -1)
|
||||
.Append(" drawCalls=").Append(drawCalls.Count)
|
||||
.Append(" inst=").Append(allInstances.Count)
|
||||
.Append(" tris=").Append(_lastFrameStats.TrianglesDrawn);
|
||||
if (filter != null)
|
||||
{
|
||||
foreach (var cellId in filter)
|
||||
{
|
||||
if (!snapshot.BatchedByCell.TryGetValue(cellId, out var gfxDict))
|
||||
{
|
||||
sb.Append(" [0x").Append(cellId.ToString("X8")).Append(":NOSNAP]");
|
||||
continue;
|
||||
}
|
||||
int gfxN = 0, tf = 0, batch = 0, idx = 0, tr = 0, zh = 0;
|
||||
foreach (var (gfxObjId, transforms) in gfxDict)
|
||||
{
|
||||
gfxN++; tf += transforms.Count;
|
||||
var rd = _meshManager.TryGetRenderData(gfxObjId);
|
||||
if (rd != null)
|
||||
foreach (var b in rd.Batches)
|
||||
{ batch++; idx += b.IndexCount; if (b.IsTransparent) tr++; if (b.BindlessTextureHandle == 0) zh++; }
|
||||
}
|
||||
sb.Append(" [0x").Append(cellId.ToString("X8"))
|
||||
.Append(":gfx=").Append(gfxN).Append(" tf=").Append(tf)
|
||||
.Append(" batch=").Append(batch).Append(" idx=").Append(idx)
|
||||
.Append(" tr=").Append(tr).Append(" zh=").Append(zh).Append(']');
|
||||
}
|
||||
}
|
||||
System.Console.WriteLine(sb.ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue