feat(render) Campaign FW3.3: ShellDrawLiftZ is RETIRED - cells draw at the dat origin
Retail draws cell geometry at the dat EnvCell origin verbatim; the 0.02 m lift was our z-fight stand-in (register row AP-32, deleted in this commit). With the walk owning retail draw ORDER under WorldDepthContract Less (first-drawn-wins: DrawBlock terrain-then- objects per cell, DrawCells shells-then-contents), the coplanar tie-breaks the lift compensated for are now resolved the way retail resolves them. Deleted at every site: the PortalVisibilityBuilder const + the drawLiftZ Build parameter and its lifted exit-portal projection branch (gate and drawn geometry now share ONE space); the seal/punch fan lifts (DrawPortalDepthWrite + the walk's DrawWalkPunchFan); the LandblockBuildFactory drawn-cell-transform lift (render and physics share the one verbatim transform). The #130 proof flipped exactly as its own doc predicted: UnliftedGate_LeavesTheStripAtTheDrawnTopEdge is deleted (its premise - gate space != drawn space - no longer exists), and the renamed ExitDoorTopEdge_GateCoversTheDrawnApertureWithinPixelTolerance sweep (147 eye/gaze combos at the Holtburg corner door) passes with both in the same unlifted space (worst plane gap <= 1.2 px, scissor <= 0.15 px - unchanged tolerances). Ten more replay-test call sites swept to the new Build signature. Suites: full Release build 0 warnings; hermetic 6,750/0; the 21 affected InstalledDat replay tests green; Walk conformance 40/1 untouched. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
1955a0d5f1
commit
05240d2cab
12 changed files with 55 additions and 196 deletions
|
|
@ -78,9 +78,8 @@ internal sealed partial class RetailPViewPassExecutor
|
|||
/// <summary>The walk's punch-fan turn — <c>DrawPortalPolyInternal</c>
|
||||
/// @0x0059bc90's far-Z punch through <c>PortalDepthMaskRenderer</c>,
|
||||
/// clipped by the pinned view's slice planes (retail
|
||||
/// <c>building_view</c> @0x0059f3bf). The +<c>ShellDrawLiftZ</c>
|
||||
/// matches today's <c>DrawPortalDepthWrite</c> and retires with
|
||||
/// FW3.3.</summary>
|
||||
/// <c>building_view</c> @0x0059f3bf). FW3.3: fans draw at the dat
|
||||
/// aperture verbatim (the ShellDrawLiftZ retirement).</summary>
|
||||
internal void DrawWalkPunchFan(
|
||||
RetailPViewFrameInput frame,
|
||||
ClipFrameAssembly clipAssembly,
|
||||
|
|
@ -100,10 +99,7 @@ internal sealed partial class RetailPViewPassExecutor
|
|||
Span<Vector3> world = stackalloc Vector3[32];
|
||||
int count = Math.Min(vertices.Length, world.Length);
|
||||
for (int vertex = 0; vertex < count; vertex++)
|
||||
{
|
||||
world[vertex] = vertices[vertex];
|
||||
world[vertex].Z += PortalVisibilityBuilder.ShellDrawLiftZ;
|
||||
}
|
||||
_portalDepthMask.DrawDepthFan(
|
||||
world[..count],
|
||||
frame.ViewProjection,
|
||||
|
|
@ -134,9 +130,8 @@ internal sealed partial class RetailPViewPassExecutor
|
|||
/// @0x0059f170 draws per cell at its flood turn).</item>
|
||||
/// <item><see cref="DrawPunchFan"/> → <c>PortalDepthMaskRenderer.DrawDepthFan</c>
|
||||
/// with <c>forceFarZ</c>, clipped by the pinned view's slice planes
|
||||
/// (retail <c>building_view</c> @0x0059f3bf). The +<c>ShellDrawLiftZ</c>
|
||||
/// on the fan verts matches today's <c>DrawPortalDepthWrite</c> and
|
||||
/// retires with FW3.3.</item>
|
||||
/// (retail <c>building_view</c> @0x0059f3bf); FW3.3 draws fans at the dat
|
||||
/// aperture verbatim (the ShellDrawLiftZ retirement).</item>
|
||||
/// <item><see cref="ClearInteriorDepth"/>/<see cref="DrawExitSeals"/> →
|
||||
/// caller-supplied actions (the renderer owns the pass scope and the
|
||||
/// root-flood seal iteration; the adapter only provides the turns).</item>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue