diff --git a/TODO.md b/TODO.md index 51001bb..a06bfe3 100644 --- a/TODO.md +++ b/TODO.md @@ -878,3 +878,49 @@ and that nothing catches it. The content programme this opens up — what a single cohesive California is still missing, and in what order — is **`CALIFORNIA.md`**, kept separate because none of it needs a new mechanism and all of it can be worked in parallel. + +## Los Angeles at 7.7 km is over the triangle cap, and no budget cell stands there + +Found by the review of the culling work, 2026-08-24, and recorded here because +the commit record for that work names a *different* LA pose — the 110 km one, +which after the terrain split measures 310,841 and is comfortably under. The pose +that is over the cap is not in any commit message, and this is the correction. + +Measured with `scripts/cost-at.mjs` on the merged board at 34.05, -118.24: + +| stand-off | before culling | after culling | cap | +| --- | --- | --- | --- | +| 110 km | 341,803 | 310,841 | 400,000 | +| **7.7 km** | **773,282** | **604,332** | **400,000** | +| 2.5 km | 761,648 | 335,186 | 400,000 | + +So the culling work **closed the 2.5 km breach and reduced the 7.7 km one by +22%**, and 7.7 km is still 51% over. It is a pre-existing defect that this work +improved rather than one it introduced — but it is live, it is reachable from the +board's own chapters, and it was never measured because `california-one` poses at +`california-overview` and nothing else does. + +**Frustum culling cannot fix it.** At that stand-off 40,025 detail lots are +genuinely inside the frustum. The Southland is a basin ninety kilometres across +and at 7.7 km you are looking down the length of it; there is no camera geometry +that makes those buildings not on screen. What is wrong is the *lot size*: 160 m +is chosen for a metro seen from its own stand-off, and at 7.7 km over the basin +the board is drawing a hundred kilometres of city at that density. + +The fix is a lot-size level of detail — the same mechanism the near-field 40 m +tier needs, pointing the other way. Two shapes, and the choice needs measuring +rather than arguing: + +- **A stride.** Pack every Nth instance of a range, N from the stand-off. One + copy loop, no new geometry, no new draw call — the store already holds every + instance. The risk is shimmer: instance order within a range is lattice order, + so a stride is a spatially regular thinning and regular thinning of a grid is + exactly what aliases. +- **A second, coarser instance set per district**, built at 480 m and swapped in + by stand-off. No shimmer, and it costs build time and memory for lots that are + usually not drawn. + +**Two things to do first, in this order.** Add a budget cell that stands at that +pose — `no budget cell stands there` is the actual defect, and a cap nobody +measures is not a cap. Expect it to fail on the day it lands; that is the point, +and it must not be answered by raising a number. Then fix it.