3.0 KiB
M10-07 Status
status: done task: Bounded WebGL2/Three physical compiler for the declared Shader node subset updated: 2026-08-16 America/New_York
Scope
The browser material path now compiles only the declared RGB, Value, Math,
Image Texture, Normal Map, Principled, and Material Output closure. The compiler
produces a schema-versioned WEBGL2_THREE_PHYSICAL report before a Shader Main
transaction is sent to Blender. Unknown nodes, cycles, duplicate inputs, missing
or blocked images, oversized graphs, and invalid constants fail closed without
mutating the source graph.
This task does not claim arbitrary Shader Node support, WebGPU compilation, complete color management/sampler parity, compile-key invalidation, or pipeline rollback; those remain later M10 tasks.
Protocol and Runtime
web/protocol/shader-compiler.tsdefines the M10-07 allowlist, fixed node/link/ depth/texture/identifier budgets, deterministic graph fingerprint fallback, scalar Math evaluation, and boundedShaderCompileReport.- The Engine Worker compiles
setShaderGraphbefore the native Main transaction, rejects a blocked report, and returns the report with the committed delta. - Main-thread and Offscreen viewport material creation share
createPBRMaterial; compiled constants and declared base-color/normal texture bindings are stored in materialuserDatafor the texture adapter.
Evidence
WEB_TEST_PORT=5521 npm --prefix web run test:shader-compile: unit 5/5 and Chromium 3/3 passed. The suite covers the real Main graph transaction, Math result and topological order, Image/Normal bindings through the shared viewport path, missing resources, cycles, duplicate inputs, oversized graphs, forged fingerprints, and source graph immutability on blocked input.tests/golden/M10-07/shader-compile.jsonfixes the fixture digest, backend, allowlist, six Math operations, and compiler budgets.- The first attempt on the default port was rejected before browser startup because
an existing process owned
127.0.0.1:5173; it is not counted as a feature failure.
Implementation Hashes
- Compiler:
50b29c99d73c886a41bb8e10ccd2309068a1c09b23196655659b2f530d31f856. - Engine Worker:
376efe09de20150fc32803745da7e7e55bb41d178302e45b1fd90a2fe7778b2e. - PBR adapter:
f9c2e5ede635d11673f971c985288821af24ed81ecaadc95efefd958637672fd. - Texture adapter:
d5e379e25e0ab8294523690c4d4c79203b6f1610b4d6a608b33a7118f51efa57. - Unit test:
1e5d44b4f73f4ee4e4c9329f73628980df9337632dc48a3d50689f051a89b6e7. - Chromium spec:
c59b9f349bd6ce329ffc89f64eba3fec3e1e02a528978bdc1c3793d921faabc3. - Golden:
6bb8c07f014a0f2c1fd0e9ec16b08b99a524d8d3161bc556767acaf510c6c961. - Package:
ea0fef34497d51448d5478f4a761bef3c4ca816c408fd8a0807eaa0b093d0df8.
Rollback
Remove the compiler, Worker gate, shared material/texture adapter integration, M10-07 tests, golden and this status file together. Restore the M10 count to 6/15 and leave Shader Main's existing capability gate and writeback contract in place; do not retain a compiler report that is not enforced before Main mutation.