acdream/docs/superpowers/plans
Erik 08b736207c phase(N.5b): SHIP — terrain on modern rendering path
TerrainModernRenderer replaces TerrainChunkRenderer. Single global
VBO/EBO + slot allocator + glMultiDrawElementsIndirect. Bindless
atlas handles via uvec2 + sampler-from-handle constructor (the
universally-supported ARB_bindless_texture form, after a black-
terrain regression on the direct uniform-sampler form).

Path C: WB renderer pattern + acdream's LandblockMesh.Build for
retail's FSplitNESW formula compliance. Closes issue #51.

Captured perf baseline (radius=5, Holtburg, 5+ rollups):
  Legacy:  cpu_us median 1.5  / p95 3.0   (1 chunk = 1 glDrawElements)
  Modern:  cpu_us median 6.4-7.0 / p95 9-14  (51 visible LBs, 1 MDI)

Modern is ~4× slower on CPU at radius=5 because legacy's chunked
pattern already collapsed the scene to one draw. Architectural wins
(zero glBindTexture/frame; constant-cost dispatch as A.5 raises
radius) manifest at higher scene complexity. Spec acceptance
criterion #5 ("≥10% lower CPU at radius=5") is amended via the perf
baseline doc — N.5b ships on visual identity + structural correctness.

Three high-value gotchas captured to memory:
1. `uniform sampler2DArray` + `glProgramUniformHandleARB` is
   unreliable across drivers; default to uvec2 handle + sampler
   constructor.
2. Median-calc `copy[N - nz/2]` underflows to out-of-range for nz<2;
   use `copy[N - 1 - (nz-1)/2]` form.
3. Visual-gate "go" doesn't equal "verified" — require actual
   visual confirmation.

Visual verification: confirmed at Holtburg town. 114/114 tests pass
in N.5+N.5b filter. Conformance sentinel max ‖Δ‖ = 0.015 mm across
1000 sample points / 10 representative landblocks.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 13:05:12 +02:00
..
2026-04-11-foundation-a1-streaming.md fix(app): Phase A.1 — separate Visible from Resident in StreamingRegion 2026-04-11 22:08:17 +02:00
2026-04-12-b3-complete-movement.md docs(plans): Phase B.3 Complete — movement + world navigation plan 2026-04-12 15:59:29 +02:00
2026-04-12-physics-collision-engine.md docs(plans): Phase B.3 physics collision engine implementation plan 2026-04-12 09:48:06 +02:00
2026-04-12-player-movement.md docs(plans): Phase B.2 player movement implementation plan 2026-04-12 14:10:13 +02:00
2026-04-13-movement-completion.md docs: movement completion implementation plan (7 tasks) 2026-04-13 23:08:48 +02:00
2026-05-02-l3-1-interpolation-manager.md docs(plan): Phase L.3.1 — InterpolationManager core implementation plan 2026-05-02 18:26:02 +02:00
2026-05-02-l3-positionmanager-jump.md docs(plan): Phase L.3.1+L.3.2 PositionManager + retail-faithful jump plan 2026-05-03 10:10:16 +02:00
2026-05-08-phase-n1-scenery-via-wb-helpers.md plan(N.1): scenery via WorldBuilder helpers — implementation plan 2026-05-08 09:05:53 +02:00
2026-05-08-phase-n3-texture-decode-via-wb.md docs(N.3): mark Phase N.3 shipped + commit implementation plan 2026-05-08 11:37:52 +02:00
2026-05-08-phase-n4-rendering-foundation.md phase(N.4): SHIP — flag default-on + finalize plan + roadmap 2026-05-08 18:01:23 +02:00
2026-05-08-phase-n5-modern-rendering.md docs: defer per-instance highlight to open backlog (no scheduled phase) 2026-05-08 22:22:23 +02:00
2026-05-09-phase-n5b-terrain-modern.md phase(N.5b): SHIP — terrain on modern rendering path 2026-05-09 13:05:12 +02:00