- Particles, ribbon trails, blob shadows, the selection ring, ground decals,
water foam and the weather all push their quads into one shared vertex
stream now — one buffer, batched draws, indices built per frame in draw
order. ~1,100 emitters at the crowded dungeon spot stopped being ~1,100 mesh
assets the engine reallocated every frame, no material asset is ever mutated
for an effect again, and adjacent draws merge like the original's own batches
(its measured shape: 793 quads in 23 draws). Vertices went camera-relative on
the way — the fix for streaks and flakes vanishing in far zones, where the
raw coordinates get big.
- Hovering an item in your bags cost +14 CPU ms for as long as the tooltip sat
open. The tooltip's refresh loop is faithful 1.12 behaviour (the bag button
re-runs its hover every frame, unthrottled, so a late-arriving item fills in
without a re-hover) — but each rebuild dropped the text measuring cache, so
every frame re-shaped every line. One line keeps the cache: +14 → +0.1 ms,
and the paperdoll, inspect and merchant tooltips stop paying the same tax as
spikes.
- "Which room is this creature in" walks one anchor per model instead of every
lit part — ~13,700 part visits a frame became ~1,700 anchor rows. The
frame-time win was honestly flat (the cost had already moved elsewhere); it
lands for the structure, and the old sweep's repair duties became
event-driven with it.
- The perf probe defends its own window now — always-on-top from the first
tick, occlusion counted on the measurement line — after two long overnight
runs were silently destroyed by the display going to sleep.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>