research(render): Phase U.4c — refute eye-crosses-plane; correct stale H2 note
A8CellAudit portals now dumps each cell's local AABB. Real flap cells: 0171 local y in [-7.65, 1.15], 0170 in [-8.61, -7.65]; the 0171->0170 portal plane is at y=-7.65 (0171's MIN boundary), no overlap. So an eye genuinely inside 0171 always has side-test D<=0 -> always traverses 0171->0170; the side test cannot cull 0170 while the eye is in 0171. The flap therefore requires the eye OUTSIDE 0171 while root is still 0171 (cache/grace/3rd-person camera) -> a camera-cell-resolution issue, not the side test (H2, disproven) and not the per-frame PVS set (H1, in doubt). Mechanism still unconfirmed -> needs a live eye-pos capture. Stale H2 conclusion in the characterization note corrected with a banner. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
b5f2bf2b8f
commit
8941d1e6e5
2 changed files with 31 additions and 0 deletions
|
|
@ -261,6 +261,19 @@ static void DumpCellPortals(DatCollection dats, uint envCellId)
|
|||
Console.WriteLine($" SIDES: {sideText}");
|
||||
}
|
||||
|
||||
// U.4c H3 check: local AABB over all cellStruct verts. If the cell's AABB extends
|
||||
// PAST one of its own portal planes, a camera eye in that region is in this cell's
|
||||
// AABB (so an AABB-based FindCameraCell keeps rooting here) yet geometrically on the
|
||||
// neighbour's side of the portal (so the per-frame side test culls that portal) →
|
||||
// the flap's stale-root region.
|
||||
if (cellStruct is not null && cellStruct.VertexArray.Vertices.Count > 0)
|
||||
{
|
||||
var mn = new Vector3(float.MaxValue); var mx = new Vector3(float.MinValue);
|
||||
foreach (var v in cellStruct.VertexArray.Vertices.Values)
|
||||
{ mn = Vector3.Min(mn, v.Origin); mx = Vector3.Max(mx, v.Origin); }
|
||||
Console.WriteLine($" localAABB: min=({mn.X:F2},{mn.Y:F2},{mn.Z:F2}) max=({mx.X:F2},{mx.Y:F2},{mx.Z:F2})");
|
||||
}
|
||||
|
||||
Console.WriteLine(
|
||||
$"summary: cell=0x{envCellId:X8} portals={envCell.CellPortals.Count} " +
|
||||
$"exits(0xFFFF)={exitCount} interior={interiorCount} " +
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue