docs: #100 ship + indoor-cell culling investigation handoff
Session-end documentation for the issue #100 ship and the visibility- culling investigation handoff for the next session. Three documents land together: - docs/superpowers/plans/2026-05-25-issue-100-terrain-cutout.md (the 3-task plan that drove this session'sf48c74a/a64e6f2/84e3b72— never committed by Tasks 1-2) - docs/research/2026-05-25-issue-100-terrain-cutout-handoff.md (the predecessor session's smoking-gun research that drove the #100 fix — never committed by the prior session) - docs/research/2026-05-25-issue-100-shipped-and-culling-handoff.md (THIS session's handoff: what shipped, what visual-verification surfaced, the issue family map for #78 + #95 + the new cellar- stairs finding, root-cause hypothesis, retail anchors, WB references, do-not-retry list, and pickup prompt for the next session's investigation + plan + implementation) Plus two updates to existing files: - CLAUDE.md — adds a ship paragraph for #100 to the M1.5 progress block. References the new handoff doc as the next-session pickup point. - docs/ISSUES.md #78 — broadens scope from "outdoor stabs visible through floor" to "outdoor stabs + terrain mesh visible inside EnvCells". Adds the 2026-05-25 cellar-stairs evidence (per user direction: not filed as new issue; treated as evidence reinforcing #78's hypothesis #2). Promotes hypothesis #2 to "high confidence as of 2026-05-25" and adds the retail anchor (acclient_2013_pseudo_c.txt:311397 CEnvCell::find_visible_child_cell). Acceptance criteria broadened to include the cellar-stairs case. Next session: pickup prompt at the bottom of the new handoff doc drives a /investigate → writing-plans → subagent-driven-development pass on indoor-cell visibility culling — the work that closes #78 + cellar-stairs together, and possibly #95 if the infrastructure overlaps. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
84e3b72b27
commit
4cbfbf98af
5 changed files with 1431 additions and 11 deletions
|
|
@ -131,11 +131,11 @@ the indoor-lighting plumbing.
|
|||
|
||||
---
|
||||
|
||||
## #78 — Outdoor stabs/buildings visible through the rendered floor
|
||||
## #78 — Outdoor geometry (stabs + terrain mesh) visible inside EnvCells
|
||||
|
||||
**Status:** OPEN
|
||||
**Severity:** HIGH (immediate visual jank now that floors render)
|
||||
**Filed:** 2026-05-19
|
||||
**Status:** OPEN — **next-session investigation target (2026-05-25)**
|
||||
**Severity:** HIGH (immediate visual jank; broadened scope per 2026-05-25 PM finding)
|
||||
**Filed:** 2026-05-19 (broadened 2026-05-25)
|
||||
**Component:** rendering, visibility
|
||||
|
||||
**Description:** Standing inside Holtburg Inn looking at the floor or
|
||||
|
|
@ -144,30 +144,64 @@ world position + scale — but visible THROUGH the floor and walls. As if
|
|||
the cell mesh is rendered but doesn't occlude or stencil-cull what's
|
||||
behind it.
|
||||
|
||||
**Additional evidence (2026-05-25 PM, post-#100 visual verification):**
|
||||
After issue #100 shipped (commits `f48c74a`, `a64e6f2`, `84e3b72`) and
|
||||
removed the `hiddenTerrainCells` cell-collapse mechanism, the OUTDOOR
|
||||
TERRAIN MESH is now (correctly per retail) rendered everywhere on the
|
||||
landblock — including in 3D regions occupied by indoor EnvCell volumes.
|
||||
Visual verification at a Holtburg cottage cellar showed a sharp-edged
|
||||
rectangular grass patch (outdoor terrain at Z≈93.99) rendering over the
|
||||
cellar stair geometry at certain camera angles. Clears when camera
|
||||
moves closer (cottage walls + stair treads geometrically occlude the
|
||||
terrain from new vantage points). Gameplay unaffected. **This is the
|
||||
same root cause as the existing #78 hypothesis #2** ("outdoor stabs not
|
||||
culled when player in EnvCell"), just with outdoor terrain mesh
|
||||
affected in addition to outdoor stab entities. Per user direction,
|
||||
NOT filed as a new issue — additional evidence reinforces #78's
|
||||
hypothesis #2, broadens scope of the fix to include terrain culling.
|
||||
|
||||
**Root cause / status:** Two plausible causes:
|
||||
1. The `+0.02f` Z bump applied to cell origin at `GameWindow.cs:5362`
|
||||
pushes the floor mesh 2 cm above terrain, so depth test correctly
|
||||
occludes terrain. But OUTDOOR STABS (landblock-baked building geometry)
|
||||
at the same X,Y may have Z values comparable to or higher than the
|
||||
cell-mesh floor, producing z-fighting / see-through.
|
||||
2. Outdoor stabs aren't being culled when the player is inside an
|
||||
2. **(High confidence as of 2026-05-25)** Outdoor geometry (stabs AND
|
||||
terrain mesh) isn't being culled when the player is inside an
|
||||
EnvCell — this is the Phase 1 Task 3 deferred work
|
||||
("Cull outdoor stabs when indoors via VisibleCellIds"). WB has a
|
||||
`RenderInsideOut` stencil pipeline (`references/WorldBuilder/Chorizite.OpenGLSDLBackend/Lib/VisibilityManager.cs`)
|
||||
that acdream never invokes.
|
||||
that acdream never invokes. Retail anchor:
|
||||
`docs/research/named-retail/acclient_2013_pseudo_c.txt:311397`
|
||||
(`CEnvCell::find_visible_child_cell` at address `0x0052dc50`,
|
||||
called from `acclient_2013_pseudo_c.txt:280028`).
|
||||
|
||||
**Files:**
|
||||
- `src/AcDream.App/Rendering/Wb/WbDrawDispatcher.cs` (per-entity walk —
|
||||
consider gating outdoor stab entities on visible-cell membership).
|
||||
the dispatcher already filters by `entity.ParentCellId ∈
|
||||
visibleCellIds` but outdoor stabs have `ParentCellId == null` so they
|
||||
always pass; needs an explicit indoor-camera gate).
|
||||
- `src/AcDream.App/Rendering/TerrainModernRenderer.cs` (currently
|
||||
renders all loaded landblock terrain unconditionally; needs
|
||||
visibility gating when camera resolves to an indoor cell).
|
||||
- `src/AcDream.App/Rendering/CellVisibility.cs:222+` (`ComputeVisibility`
|
||||
returns `VisibleCellIds`; the dispatcher already filters by
|
||||
`entity.ParentCellId ∈ visibleCellIds` but outdoor stabs have
|
||||
`ParentCellId == null` so they always pass).
|
||||
returns `VisibleCellIds`; existing portal-LOS infrastructure to build on).
|
||||
- `references/WorldBuilder/Chorizite.OpenGLSDLBackend/Lib/VisibilityManager.cs`
|
||||
(`RenderInsideOut` pipeline — reference implementation, never invoked).
|
||||
|
||||
**Acceptance:** Standing inside a sealed-interior cell, no outdoor
|
||||
geometry is visible through floor/walls. Standing where a cell has a
|
||||
real outdoor portal (door open, window) outdoor geometry is correctly
|
||||
visible through the portal.
|
||||
visible through the portal. Cellar-stairs case (2026-05-25 finding):
|
||||
standing in a Holtburg cottage cellar at any camera angle, no outdoor
|
||||
terrain mesh visible over the stair geometry.
|
||||
|
||||
**Research:**
|
||||
[`docs/research/2026-05-25-issue-100-shipped-and-culling-handoff.md`](research/2026-05-25-issue-100-shipped-and-culling-handoff.md)
|
||||
— full session handoff with cellar-stairs evidence, family map (#78 +
|
||||
#95 + cellar-stairs), root-cause hypothesis, retail anchors, WB
|
||||
references, do-not-retry list, and pickup prompt for the
|
||||
investigation session.
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue