Shaders: fingerprint without node positions, compile counter hook; 760 checks (#65)
1 parent
359b366f4b
commit
f80df5e085
2 files changed
+6
-3
No files matched your search
+2
-2
@@ -12,7 +12,7 @@ npm run check # typecheck + lint + format:check + tests, the gate CI runs
|
||||
# code is lost (tail's is reported), so a red run reads as green
|
||||
npm run build # writes dist/ and regenerates index.html
|
||||
./build.sh # the same under `set -o pipefail`, for callers that pipe the output
|
||||
node tools/seed-e2e.mjs && node tools/e2e.mjs # 758 editor checks, screenshots in /tmp/gm-e2e-*.png
|
||||
node tools/seed-e2e.mjs && node tools/e2e.mjs # 760 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
|
||||
@@ -151,4 +151,4 @@ widths to find click points. The **render device is not in this repo** — `/dev
|
||||
and a 1 GB `/dev/shm` come from `container.options` in the runner's own `config.yaml`, which
|
||||
applies to every job on that runner. Without them chromium falls back to llvmpipe, which gets
|
||||
WebGL 1.0 only. Measured in the job container: `ANGLE (Intel, Vulkan 1.3.230, HD Graphics 630)`,
|
||||
WebGL 2.0, and the same 758 checks as here.
|
||||
WebGL 2.0, and the same 760 checks as here.
|
||||
+4
-1
@@ -150,7 +150,10 @@ quad has four corners and stays a quad (#79 is the vertex-side step that would c
|
||||
fragment (every node reachable from the Output becomes one local per output, in dependency order;
|
||||
every Property a `uniform float u_<name>`), `src/viewport/shaders.ts` wraps the result in a Pixi
|
||||
`Shader` for the sprite's mesh (`GraphShader`, with a vertex stage of its own) and
|
||||
`src/viewport/ShaderLibrary.ts` caches the compiled graph per asset. A sprite's picture is a `Mesh`
|
||||
`src/viewport/ShaderLibrary.ts` caches the compiled graph per asset, keyed by a fingerprint of what
|
||||
the fragment depends on — node ids, types, params, declared ports, and which port feeds which — so
|
||||
moving, collapsing or folding compiles nothing again; a changed param or link does, once
|
||||
(`__gm.shaderCompiles()` counts it for the checks). A sprite's picture is a `Mesh`
|
||||
(a unit quad sized by its scale, `symbols.ts`), a sibling of the sprite's `Graphics` node under the
|
||||
same parent: Pixi 8 lets only plain containers have children, and the node keeps just the hit area.
|
||||
Two Pixi facts the code leans on: a mesh's texture is bound only for Pixi's own shader, so
|
||||
|
||||
Reference in new issue
Block a user