Render through a desynchronized WebGL context by default
Measured click-to-paint was 72-77 ms, of which the editor itself spends under 4 ms; the rest is the finished frame waiting in the compositor queue. A desynchronized context bypasses it (16-18 ms in the same probe). Pixi has no option for it, so main.ts builds the WebGL2 context itself. The mode may tear on some drivers; ?vsync falls back to Pixi's own context. __gm.lowLatency() reports the attributes the browser actually granted, and a graph-step check pins that the mode stays on. Also adds the todo note graph-node-collapse-width. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
13852fe4b2
commit
0dcb3b4432
5 files changed
+30
-2
No files matched your search
@@ -549,6 +549,10 @@ selected and switched back on.
|
||||
## Stack
|
||||
|
||||
- **PixiJS v8** – rendering and pointer events. No game engine; runtime systems live in `src/runtime/`.
|
||||
`main.ts` creates the WebGL context itself with `desynchronized`, which Pixi has no option for:
|
||||
frames skip the compositor queue, so the UI keeps up with the pointer (click to picture measured
|
||||
72–77 ms before, 16–18 ms after). The price is possible tearing while things move fast;
|
||||
`?vsync` falls back to Pixi's own context. A browser without the mode simply ignores it.
|
||||
- **Own canvas widget toolkit** (`src/ui/`) – panels, buttons, lists, text/number/color fields,
|
||||
popups. The only lasting DOM element is a hidden `<input>` used as a keyboard bridge (IME,
|
||||
mobile keyboard, clipboard) while a canvas text field is focused; *Upload…* adds a short-lived
|
||||
@@ -640,7 +644,7 @@ npm run check # typecheck + lint + format:check + tests, what CI would ru
|
||||
# code is lost (tail's is reported), so a red run reads as green
|
||||
npm run build # writes dist/ and regenerates index.html
|
||||
export GM_REMOTE=user@host # optional: run the browser elsewhere; see below
|
||||
node tools/seed-e2e.mjs && node tools/e2e.mjs # 534 editor checks, screenshots in /tmp/gm-e2e-*.png
|
||||
node tools/seed-e2e.mjs && node tools/e2e.mjs # 535 editor checks, screenshots in /tmp/gm-e2e-*.png
|
||||
GM_STEPS=20 node tools/e2e.mjs # or 1-12, or 6,20 – a subset while working on one step
|
||||
./e2e.sh start [GM_STEPS] # the same run detached, see below
|
||||
./e2e.sh status # live progress, or the last run's result
|
||||
|
||||
Reference in new issue
Block a user