35 lines
2.5 KiB
Markdown
35 lines
2.5 KiB
Markdown
# N-013 Shader Node 图
|
||
|
||
状态:`in_progress(七节点 Main + 有界 WebGL2 compiler 子集)`
|
||
|
||
详细分解、ShaderIR、typed socket 校验、Main 写回、Web 编译、GLB 映射和验收命令见
|
||
[`docs/UNDECLARED_CAPABILITIES_EXECUTION_PLAN.md`](../UNDECLARED_CAPABILITIES_EXECUTION_PLAN.md)。
|
||
|
||
本轮已交付版本化 `ShaderGraphIR`、单 Material Output、typed socket/隐式转换、图循环、
|
||
Material/Image stable ID 以及 linked/missing/corrupt image 资源门。首个 native Main 写回
|
||
子集开放 RGB、Value、有限 Math、Principled、Image Texture、Normal Map 和 Material
|
||
Output;整图替换在一个 history transaction 中完成,并通过节点/链接及 RGB/Value
|
||
defaultValue 保存重开回归。
|
||
|
||
Math 已开放 ADD/SUBTRACT/MULTIPLY/DIVIDE/MINIMUM/MAXIMUM 的 Main `custom1` 写回和
|
||
operation 保存重开;其他运算继续结构化阻断。RGB/Value 到 Principled Base Color、
|
||
Roughness、Metallic 的有限常量链接现可确定性映射为 glTF PBR factor;缺值、越界、
|
||
重复输入和未知链接继续返回 `SHADER_GRAPH_UNMAPPABLE`。Mix、Mapping、Texture
|
||
Coordinate、Bump 及任意节点仍返回 `SHADER_NODE_UNSUPPORTED`。node properties 仅开放
|
||
Math operation。M10-07 新增 schema 1 有界 compiler:只把 RGB/Value 常量、六项 Math、Image
|
||
Texture、Normal Map、Principled 和 Output 编译为 `WEBGL2_THREE_PHYSICAL` report;Native reader
|
||
发布 graph SHA-256,Worker 在 Main transaction 前编译并失败关闭,主线程和 Offscreen 复用同一
|
||
`createPBRMaterial` 入口。M10-08 为 report 增加 graph/texture/color-space/backend 绑定的
|
||
`compileKey`,M10-09 由 `PBRMaterialPipeline` 保留上一份可用材质并记录失败报告。节点/链接/
|
||
深度/纹理/标识预算固定;M10-10 将任意未知节点名称归一化排序后返回稳定
|
||
`PBR-012/ARBITRARY_SHADER` capability block,未知节点不被删除或静默降级。
|
||
|
||
M10-15 在独立 Chromium Worker 中连续完成 100 次有界 compile、129-node 超预算阻断、恶意
|
||
cycle 阻断和同会话小图恢复;performance/OOM-prevention/malicious-input 三门均使用现有 compiler,
|
||
不以 mock 成功替代材质编译。
|
||
|
||
完整色彩管理、sampler/alpha/tangent、WebGPU、完整 GLB 图映射和桌面渲染 golden 仍为 planned。验收:
|
||
`npm --prefix web run test:shader-compile`、`npm --prefix web run test:authoring-roundtrip`、
|
||
`npm --prefix web run test:capability-gates`、`npm --prefix web run test:m10-domain-gates`
|
||
以及 Shader GLB mapping E2E。
|