docs(research): Phase 2 verification — floor renders, fix landed

User visually confirmed floors render in Holtburg Inn after the WB
TryGet<Setup> 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) <noreply@anthropic.com>
This commit is contained in:
Erik 2026-05-19 13:12:53 +02:00
parent b838eccb38
commit 73288657fd

View file

@ -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<Setup>` deserialization of GfxObj-typed stab ids.
Total runtime for Phase 2: ~4 client launches.