docs: abandon two-pipe render approach; scope Phase U (unified retail-faithful pipeline)
Decision (2026-05-30, with user): the WB-inherited two-pipe (inside/outside) render split is the root cause of the indoor seam bugs (flap, missing/transparent walls, terrain bleed) and cannot be seamless. Abandon A8/A8.F (#103); build ONE unified pipeline driven by retail's PView portal visibility — seamless by construction. The 2026-05-30 camera-collision + physics viewer-cap work is kept (retail-faithful, but a detour from the seam fix). New Phase U scoped; #103 superseded; CLAUDE.md / roadmap / milestones updated; full decision + scope + next-session pickup prompt in docs/research/2026-05-30-unified-render-pipeline-decision-and-handoff.md. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
aae5300fea
commit
75b1df9cc3
5 changed files with 289 additions and 4 deletions
|
|
@ -113,12 +113,47 @@ with no code changes lost — M1.5 doesn't touch WB-extracted territory.
|
|||
|
||||
### Milestone M1.5 — "Indoor world feels right" (ACTIVE — Phase O shipped; resuming from 2026-05-20 baseline)
|
||||
|
||||
The current top of the work order. Two phases (A6 + A7) inside one
|
||||
milestone. M2 ("kill a drudge") is deferred until M1.5 lands —
|
||||
drudges live in dungeons and the M2 demo target requires solid indoor
|
||||
The current top of the work order. M2 ("kill a drudge") is deferred until M1.5
|
||||
lands — drudges live in dungeons and the M2 demo target requires solid indoor
|
||||
navigation. Full milestone block in
|
||||
[`docs/plans/2026-05-12-milestones.md`](2026-05-12-milestones.md).
|
||||
|
||||
**2026-05-30 — render-pipeline pivot.** Indoor *rendering* (the seamless in/out
|
||||
seam: the flap, missing/transparent walls, terrain bleed) is NO LONGER pursued via
|
||||
the WB-inherited two-pipe (inside/outside) split. That whole approach (Phase A8/A8.F,
|
||||
issue #103) is **abandoned**. Indoor rendering is now **Phase U** below. Phase A6
|
||||
(physics) and A7 (lighting) inside M1.5 are unaffected.
|
||||
|
||||
#### Phase U — Unified retail-faithful render pipeline (NEW — supersedes A8/A8.F)
|
||||
|
||||
**Decision (2026-05-30):** replace the two render paths (outdoor `Draw` +
|
||||
`RenderInsideOut` stencil, toggled on `cameraInsideBuilding`) with ONE pipeline driven
|
||||
by retail's portal-visibility view (`PView::ConstructView` / `ClipPortals` / `GetClip`;
|
||||
`CEnvCell::find_visible_child_cell`). The camera's cell is just the root of a recursive
|
||||
per-portal clip-region traversal; all visible cells (indoor + outdoor) draw in one pass.
|
||||
Seamless in/out **by construction** — no inside/outside branch. Modern code, retail
|
||||
behavior.
|
||||
|
||||
- **Why:** the two-pipe split is a WB-editor inheritance, not a game-client design; you
|
||||
cannot make two pipes hand off seamlessly at a doorway. Retail never splits. The A8.F
|
||||
attempt to graft retail recursion onto the WB stencil failed its visual gate (#103).
|
||||
- **Keep:** WB mesh/dat pipeline (ObjectMeshManager/WbDrawDispatcher/terrain), the
|
||||
2026-05-30 camera-collision + physics work. **Salvage (verify):** the A8.F CPU
|
||||
clip-builder (PortalProjection/ScreenPolygonClip/ViewPolygon/PortalVisibilityBuilder —
|
||||
unit-test-correct). **Task 1:** delete the dead two-pipe code (RenderInsideOutAcdream,
|
||||
the cameraInsideBuilding branch, IndoorCellStencilPipeline, the ACDREAM_A8_INDOOR_BRANCH
|
||||
kill-switch) — audit first; some A8 commits fixed real bugs (BuildingId stamping, pool
|
||||
aliasing) that stay.
|
||||
- **Scope + next-session pickup:**
|
||||
[`docs/research/2026-05-30-unified-render-pipeline-decision-and-handoff.md`](../research/2026-05-30-unified-render-pipeline-decision-and-handoff.md).
|
||||
Start with `superpowers:brainstorming`; visual verification at Holtburg
|
||||
cottage/cellar/inn + a portal dungeon is the acceptance gate (unit tests did not
|
||||
catch #103).
|
||||
- **Camera-collision (shipped 2026-05-30, kept):** retail `SmartBox::update_viewer`
|
||||
swept-sphere spring arm (`CameraDiagnostics.CollideCamera`, `PhysicsCameraCollisionProbe`,
|
||||
`RetailChaseCamera` integration) + viewer/sight bypass of the 30-step transition cap.
|
||||
Specs: [`2026-05-29-a8f-camera-collision-design.md`](../superpowers/specs/2026-05-29-a8f-camera-collision-design.md).
|
||||
|
||||
**Today's pre-M1.5 baseline** (2026-05-20 — committed in this
|
||||
session): A4 multi-cell BSP iteration (`691493e`), #89 sphere-overlap
|
||||
in CheckBuildingTransit (`7ac8f54`), #90 sphere-overlap stickiness in
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue