Viewer: stay sharp while zooming
Deploy web Studio / deploy (push) Successful in 1m5s

Pan/zoom gestures move the drawing as a CSS-transformed layer, a picture
at the scale last drawn. A long touchpad pinch showed an ever more
stretched, blurry view (3.6x at the end of a 1.2 s pinch), and every zoom
ended with a blur-then-snap 180 ms after its last step.

Now the view is drawn anew during the gesture once the picture is 30% off
in scale (at most every 120 ms; draw() keeps the gesture state), and at its
true scale 90 ms after the last step. Measured in Brave at 1.5x pixel
density: sharp ~130 ms instead of ~240 ms after a pinch, crisp on the way.
Cost at 6x CPU slowdown: 11.4 -> 14.6 ms per wheel step in the Studio,
9.1 -> 10.5 on a page, still no frame over 50 ms.

check_web: a long pinch is drawn anew on the way and sharp within 150 ms.
This commit is contained in:
grabowski committed 2026-10-25 16:53:10 +07:00
1 parent cddf834e56
commit ccfd619a99
3 files changed
+50 -9

No files matched your search

+7
View File
@@ -101,6 +101,13 @@ the tags only); hover 22 → 15 ms per move (tooltip placed once per frame on it
readout ten times a second); rotate 226 → 154 ms, edit 409 → 305 ms until painted (WASM built with
opt-level 3: engine render 11.7 → 9.4 ms at full speed).
Sharp zooming: the moved layer is a picture at the scale last drawn, so a long touchpad pinch showed
an ever more stretched, blurry view (3.6x at the end of a 1.2 s pinch) and every zoom ended with a
blur-then-snap 180 ms after its last step. Now the view is drawn anew during the gesture once the
picture is 30% off in scale (at most every 120 ms), and at its true scale 90 ms after the last step:
sharp about 130 instead of 240 ms after a pinch, at a cost of 11.4 → 14.6 ms per wheel step at 6x
slowdown (still no frame over 50 ms).
Production lines: Producer (a press making cartons, crates, drums, sacks or parts at a set rate
per minute, its ram going down once per item) and Conveyor (drawn the way it runs, belt width,
height, rise, speed; corners join without overlap). A conveyor starting at a producer's output, or