refactor(render): Phase U.1 — delete two-pipe inside-out machinery

Remove IndoorCellStencilPipeline + portal_stencil shaders, RenderInsideOutAcdream,
RenderOutsideInAcdream, the A8-perf instrumentation, the cameraInsideBuilding /
ACDREAM_A8_INDOOR_BRANCH branch, and the dead EntitySet partition values. Collapse
the render branch to the default Draw(All) path (U.4a replaces it with the gated
unified pass). Keep all audited EnvCellRenderer / BuildingLoader / CellVisibility /
camera-collision fixes.

Also deleted with the partition: the two test-only walk helpers
(WbDrawDispatcher.WalkEntitiesForTest / WalkEntitiesForTestByCellIds) and their
test files (WbDrawDispatcherEntitySetTests, WbDrawDispatcherCellIdsOverloadTests),
which existed solely to exercise the removed IndoorPass/OutdoorScenery/
BuildingShells/LiveDynamic partition. EntityMatchesSet / IsShellScopedSet collapse
to the All-path constants; the set: parameter is retained as a seam for the
unified pass.

Note: the depth-clear-if-inside default-path workaround was removed per the
U.1 task list — any current indoor-wall degradation persists until a later
Phase U task lands the unified pass (expected, not a regression introduced here).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Erik 2026-05-30 16:05:19 +02:00
parent 0f7b395be1
commit 3fc77be5de
8 changed files with 37 additions and 2612 deletions

View file

@ -1,25 +0,0 @@
#version 430 core
//
// Phase A8 — portal stencil mark + far-depth punch.
//
// uWriteFarDepth = 0 → pass through gl_FragCoord.z (used for the
// stencil mark pass; depth mask is off anyway).
// uWriteFarDepth != 0 → write gl_FragDepth = 1.0 (the far-depth punch
// pass; depth mask is on, color is off).
//
// Matches WorldBuilder's PortalStencil.frag at
// references/WorldBuilder/Chorizite.OpenGLSDLBackend/Shaders/PortalStencil.frag
uniform int uWriteFarDepth;
void main()
{
if (uWriteFarDepth != 0)
{
gl_FragDepth = 1.0;
}
else
{
gl_FragDepth = gl_FragCoord.z;
}
}

View file

@ -1,25 +0,0 @@
#version 430 core
//
// Phase A8 - portal stencil mark + far-depth punch.
//
// Position is in WORLD space (pipeline transforms cell-local portal
// polygon vertices through cell.WorldTransform on the CPU before
// uploading to the VBO). Output is clip space via uViewProjection.
layout(location = 0) in vec3 aPosition;
uniform mat4 uViewProjection;
void main()
{
vec4 pos = uViewProjection * vec4(aPosition, 1.0);
// Match WorldBuilder's PortalStencil.vert: keep portal polygons stable
// when the chase camera straddles an exit portal plane. Without this,
// near-zero clip W can explode the screen-space portal mask and let the
// Step 4 terrain pass punch into indoor floor/wall pixels for a frame.
if (abs(pos.w) < 0.001)
pos.w = pos.w < 0.0 ? -0.001 : 0.001;
gl_Position = pos;
}