From 73288657fd7c8bd6bda34fff04607d0ab12a4c7e Mon Sep 17 00:00:00 2001 From: Erik Date: Tue, 19 May 2026 13:12:53 +0200 Subject: [PATCH] =?UTF-8?q?docs(research):=20Phase=202=20verification=20?= =?UTF-8?q?=E2=80=94=20floor=20renders,=20fix=20landed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit User visually confirmed floors render in Holtburg Inn after the WB TryGet guard. Probe re-capture: 0 [wb-error] lines (was 385), 0 NULL_RESULT (was 55), Holtburg 123/123 cells complete (was 97/123). Documents the nine pre-existing indoor bugs the user observed during verification (see-through floor, indoor collision, stairs, walls, clicking, indoor lighting artifacts, stabs-don't-react-to-atmospheric- lighting, slope terrain lighting). All pre-existing; filed for follow-up phases via docs/ISSUES.md. Phase 2 complete. Co-Authored-By: Claude Opus 4.7 (1M context) --- ...5-19-indoor-cell-rendering-verification.md | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 docs/research/2026-05-19-indoor-cell-rendering-verification.md diff --git a/docs/research/2026-05-19-indoor-cell-rendering-verification.md b/docs/research/2026-05-19-indoor-cell-rendering-verification.md new file mode 100644 index 0000000..0e89080 --- /dev/null +++ b/docs/research/2026-05-19-indoor-cell-rendering-verification.md @@ -0,0 +1,62 @@ +# Indoor Cell Rendering — Phase 2 Verification + +**Date:** 2026-05-19 +**Outcome:** ✅ Floor renders in Holtburg Inn. User visually confirmed. +**Predecessor:** [Phase 2 cause report](2026-05-19-indoor-cell-rendering-cause.md). + +--- + +## Probe re-capture + +After applying the one-line WB fix at [`ObjectMeshManager.cs:1230`](../../references/WorldBuilder/Chorizite.OpenGLSDLBackend/Lib/ObjectMeshManager.cs:1230): + +| Metric | Pre-fix | Post-fix | +|---|---|---| +| `[wb-error]` lines | 385 | **0** | +| `[indoor-upload] NULL_RESULT` | 55 | **0** | +| `[indoor-upload] FAILED` | 0 | 0 | +| Total `[indoor-upload] requested` | — | 1157 | +| Total `[indoor-upload] completed` | — | **1157** | +| Holtburg (`0xA9B4`) requested | 123 | 123 | +| Holtburg (`0xA9B4`) completed | 97 | **123** | +| Holtburg (`0xA9B4`) missing | 26 | **0** | + +100% success rate on EnvCell uploads. Zero swallowed exceptions. Zero null returns. + +## Visual confirmation + +User walked into Holtburg Inn (and other nearby buildings whose cells were previously failing) and confirmed: + +> "Yes floors are rendering now inside houses." + +The previously-failing cells (`0xA9B40100`, `0xA9B40111`, `0xA9B40112`, `0xA9B40117`, `0xA9B4011B`, etc.) now upload successfully, the dispatcher finds their render data, and the floor / wall / ceiling geometry renders. + +## Regressions checked + +- Outdoor terrain still renders correctly. ✓ +- Outdoor scenery (trees, rocks, stabs) still render. ✓ +- NPCs, mobs, world entities still render. ✓ +- Build clean, no new warnings. ✓ +- No new test failures. ✓ + +## Other observations during the walk + +The user reported **other indoor-related bugs** that are now observable because the floor is rendering. These are all **pre-existing** (not caused by this Phase 2 fix) but were hidden by the missing-floor bug. They are filed as separate issues for follow-up phases: + +1. See-through floor — other buildings visible "below" / "through" the rendered floor (depth/stab-culling). +2. Spot lights on walls indoors (point-light positioning). +3. Camera on 2nd floor goes very dark (per-cell ambient or trigger). +4. Static building stabs don't react to atmospheric lighting changes (shader path). +5. Some slope terrain lit incorrectly (terrain normal calculation). +6. Collision "blocked by air" indoors (cell BSP misalignment). +7. Walking up stairs broken (stair-step physics on EnvCell geometry). +8. Pass through walls from outside→in (one-sided wall collision). +9. Click selection penetrates walls (WorldPicker raycast not testing cell BSP). + +These nine items are tracked in `docs/ISSUES.md` with proposed phase groupings. None block Phase 2 closure. + +## Conclusion + +**Phase 2 of the indoor cell rendering fix is complete.** The single-root-cause exception was identified via the diagnostic chain shipped in Phase 1 + Phase 2, and resolved with a one-line guard at the WB call site that prevented blind `TryGet` deserialization of GfxObj-typed stab ids. + +Total runtime for Phase 2: ~4 client launches.