docs(lighting): indoor lighting regime handoff — file #142 (windowed-interior regime) + #143 (portal dynamic light)
Clean handoff for the next M1.5 "indoor world feels right" session, picking up the two indoor-lighting gaps the user spotted at the #140 visual gate. #142 (PRIMARY): windowed-building interiors + look-ins read "like outdoors". Root cause grounded: retail's lighting regime is per-DRAW-STAGE (PView::DrawCells draws ALL EnvCells in the useSunlightSet(0) interior stage — torch-lit, no sun, regardless of SeenOutside), while acdream's is a per-FRAME global keyed on the player's cell (playerInsideCell). So acdream's windowed interiors (SeenOutside) + look-ins stay in the outdoor regime. This is the AP-43 residual surfaced. Fix direction: make sun+ambient per-draw like AP-43's torches (design fork laid out for a brainstorm). Resolves AP-43. #143 (SECONDARY): portal swirl casts no light. acdream registers only static Setup.Lights; the portal is a retail DYNAMIC light (add_dynamic_light -> minimize_envcell_lighting). Fix: register a dynamic LightSource for portals. Handoff doc carries the verified retail decomp (useSunlightSet/PView::DrawCells stages), current acdream line refs, the three gaps, the fix fork, validation plan, and DO-NOT-RETRY. Neither issue is a regression from #140. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
31d7ffd253
commit
f7f3e0887b
2 changed files with 226 additions and 0 deletions
|
|
@ -46,6 +46,44 @@ Copy this block when adding a new issue:
|
|||
|
||||
---
|
||||
|
||||
## #142 — Windowed-building interiors read "like outdoors" (indoor lighting regime is per-frame, not per-stage)
|
||||
|
||||
**Status:** OPEN
|
||||
**Severity:** MEDIUM (visible — windowed town buildings + look-ins are sun-lit/flat instead of torch-lit warm vs retail)
|
||||
**Filed:** 2026-06-20
|
||||
**Component:** render — indoor lighting regime (sun + ambient)
|
||||
|
||||
**Description (user, at the #140 gate):** The Agent of Arcanum house is much brighter/lit indoors in retail (both looking in from outside AND when inside); in acdream it is "not lit" — looking in and inside both "feel like outdoors." The meeting hall (a sealed interior) looked OK, so it's specifically WINDOWED buildings + look-ins.
|
||||
|
||||
**Root cause / status:** acdream's lighting REGIME (sun on/off + which ambient) is a per-FRAME global keyed on the PLAYER's cell (`GameWindow.cs:8107` `playerInsideCell`, from `:8061` `playerSeenOutside`, into `UpdateSunFromSky` `:8122`/`:10786`). Retail's is per-DRAW-STAGE: `PView::DrawCells` (0x005a4840) draws ALL EnvCells in the `useSunlightSet(0)` interior stage (0x005a49f3) — torch-lit, no sun — regardless of `SeenOutside`. So acdream's windowed interiors (`SeenOutside=true`) + look-ins stay in the outdoor regime (sun + outdoor ambient) where retail uses the indoor regime. This is the **AP-43 residual** made visible. Torches are already per-cell (AP-43); the SUN + AMBIENT are the remaining per-frame-global parts. **Fix direction:** make sun+ambient per-draw (per-object/cell) like AP-43's torches — needs a brainstorm (UBO second-ambient + per-instance indoor selector vs a third `uLightingMode`). Resolves AP-43.
|
||||
|
||||
**Files:** `GameWindow.cs:8061/8107/8122/10786` (regime), `mesh_modern.vert accumulateLights` (~:188/:193), `WbDrawDispatcher.IndoorObjectReceivesTorches` (:2076), `EnvCellRenderer` (mode-1).
|
||||
|
||||
**Research:** `docs/research/2026-06-20-indoor-lighting-regime-handoff.md` (full handoff — retail decomp + acdream refs + fix fork + validation plan). Register AP-43.
|
||||
|
||||
**Acceptance:** Agent of Arcanum interior torch-lit/warm both looking-in and inside (user side-by-side vs retail); sealed interiors + dungeons unchanged.
|
||||
|
||||
---
|
||||
|
||||
## #143 — Portal swirl doesn't light the room (no dynamic-light registration)
|
||||
|
||||
**Status:** OPEN
|
||||
**Severity:** LOW-MEDIUM (visible — retail's portal swirl tints the room; acdream's casts no light)
|
||||
**Filed:** 2026-06-20
|
||||
**Component:** render — dynamic point lights
|
||||
|
||||
**Description (user, at the #140 gate):** Inside the meeting hall, retail's portal swirl lights up the room; in acdream it does not.
|
||||
|
||||
**Root cause / status:** The portal swirl is a DYNAMIC light in retail (`add_dynamic_light` 0x0054d420 → `minimize_envcell_lighting` 0x0054c170 enables the cell's dynamic subset). acdream registers ONLY static `Setup.Lights` (`GameWindow.cs` ~:6404) — no dynamic lights, so the portal casts nothing. Captured retail params (predecessor cdb): `intensity=100, falloff=6, color=(0.784,0,0.784)` magenta. **Fix:** register a dynamic `LightSource` for portal-swirl entities (or read the portal model's own dat lights); it then flows through the existing point-light path and the EnvCell bake. Keep it indoor (out of the AP-43 outdoor gate).
|
||||
|
||||
**Files:** portal/particle spawn path (TBD); `GameWindow.cs` `RegisterOwnedLight` (~:6404); `LightManager` (PointSnapshot / UnregisterByOwner).
|
||||
|
||||
**Research:** `docs/research/2026-06-20-indoor-lighting-regime-handoff.md` (§#143).
|
||||
|
||||
**Acceptance:** portal swirl visibly tints the meeting-hall room vs retail.
|
||||
|
||||
---
|
||||
|
||||
## #141 — Toolbar interactivity — selected-object display
|
||||
|
||||
**Status:** IN PROGRESS (D.5.3a health + name + flash — DONE & visually confirmed 2026-06-20; mana + stack slider still deferred). Renumbered from #140 on the 2026-06-20 main merge — A7 Fix D held #140 on main; this branch's commits/spec still reference #140.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue