Files
workinf_Blender_Wasm/docs/status/M10-07.md
mes123456 0fe8d2bb56
Some checks failed
M6 deployable RC / quick (push) Has been cancelled
M6 deployable RC / chromium (push) Has been cancelled
M6 deployable RC / release (push) Has been cancelled
Advance M8-M11 parity workflows
2026-08-17 04:37:07 -04:00

60 lines
3.0 KiB
Markdown

# 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.ts` defines the M10-07 allowlist, fixed node/link/
depth/texture/identifier budgets, deterministic graph fingerprint fallback,
scalar Math evaluation, and bounded `ShaderCompileReport`.
- The Engine Worker compiles `setShaderGraph` before 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
material `userData` for 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.json` fixes 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.