0.2.6-dev: DESIGN §31.6 adds the slot cost at DPR 2 (the 120-unit crowd keeps 39 of its units in the atlas at 1280 × 720 instead of 119) and, as open, the share of the setup-pose floor (1.16 × instead of 2 × without it) (#542); golden: unchanged

This commit is contained in:
sganggs committed 2026-10-13 03:43:49 +08:00
1 parent 0b88a0f515
commit f5b3908804
1 file changed
+8 -1
+8 -1
View File
@@ -140,10 +140,17 @@ Regression covers normal two-, three- and four-human browser flows, the final tu
- **Cost**: slot sizes grow with the boxes. The 120-unit stress crowd at 1600 × 900 (DPR 1) uses 8.7 M px of slots instead
of 4.4 M (2.7 instead of 1.2 atlas pages, still no private render target). On the roster the boxes add up to 1.86 × the
old area (the median skeleton 1.39 ×; without the setup-pose floor it would be 1.23 ×). The atlas keeps its ≤ 3 + 2 pages;
a unit that finds no slot keeps a private render target, as before. CPU: one batch flush per redrawn slot.
a unit that finds no slot keeps a private render target, as before. At DPR 2 a page holds a quarter of the CSS pixels:
the same crowd at 1280 × 720 keeps 39 of its 120 units in the atlas instead of 119 (81 private render targets; 55
instead of 60 fps in headless Chrome), at 1920 × 1080 39 instead of 58; at 844 × 390, DPR 3, all 120 stay in two pages.
CPU: one batch flush per redrawn slot.
`tools/perfbench.mjs` (844 × 390, DPR 2, quality medium / low, where those battles draw through the atlas; 12 runs of
6 s): total busy JS +0.8 %, the impostor-redraw stage +14 % (+0.1–0.25 ms per frame at a 4 × CPU throttle), 60 fps in
every run before and after.
- Open: the setup-pose floor doubles the cost. A model shows its setup pose only when it is frozen before its first update
(built while stunned without a stun clip, or dead without a death or idle clip); posed at its clip's first frame then,
it could leave the box: the stress crowd's slots would add up to 1.16 × the old area (DPR 1), and at 1280 × 720, DPR 2,
116 of the 120 units would stay in the atlas (60 fps). Kept as specified for #542; the maintainer's call.
- [ASSUMED]: the growth limits (4 × / 2 ×), the 3 % + 8 padding, the sampling rate and the 2.5 ms budget. A pose between two
samples can still pass the padded box for a frame (33 of the 681 skeletons by a denser 60 Hz check, all in long clips
sampled sparser than that); the scissor cuts it and leaves nothing behind.