Files
workinf_Blender_Wasm/docs/status/N-020.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

58 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# N-020 Compositor
状态:`BLOCKED`GraphIR、有界 CPU executor、真实 Main graph reader、四节点 WebGPU golden
与 Unsupported 全图执行门已落地;完整节点参数映射、通用 WebGPU、HDR golden 和服务端执行未实现)
## 已验证切片
1. N-020-A版本化 `CompositorGraphIR` 覆盖 Image、Render Layer、Constant Color、
Transform、Invert、Exposure、Alpha Over、Blur、Mix、Viewer、Composite 与 Unsupported
节点/资源 ID、重复 input socket、缺失引用和 graph cycle 会拒绝。
2. N-020-BCPU 子集):线性 sRGB Float32 RGBA executor 按拓扑序执行 Transform、颜色、
Alpha Over、Blur、Mix并返回 Composite 与多 Viewer 输出。
3. N-020-C部分最大 4096 nodes、16384 links、4096 resources、8192 dimension、
16M pixels、256 MiB image 和 100M blur operations分配前检查支持 worker cancellation。
4. N-020-DUnsupported node 保留 Blender type metadata并返回
`COMPOSITOR_NODE_UNSUPPORTED`,不会删节点后继续运行。
5. N-020-A部分Blender 5.2 Scene `compositing_node_group` 从真实 Main 快照读取稳定 node
identifier、socket identifier 和 link活动 Group Output/旧 Composite 映射为 Composite
Viewer 和常量 RGBA 映射到已验证节点,其他节点原样保留 `blenderType` 为 Unsupported。
4096 nodes/16384 links、重复 destination、缺 output 或不可读 node tree 返回 blocked status。
6. N-020-C部分CPU executor 在长像素/blur 循环中周期检查 cancellation不再只在节点
边界取消;内容寻址 frame key 绑定规范化 GraphIR、资源 Float32 内容 SHA-256、frame 和输出
尺寸。有界 LRU cache 以克隆后的真实 buffer 字节计费(最多 256 MiB命中返回隔离副本
调用方修改结果不会污染缓存。它是内存帧缓存,不等同于 tile scheduler 或 OPFS 持久缓存。
7. N-020-A/B真实参数链Blender 5.2 Main reader 从真实 socket default 读取 Exposure并仅在
factor=1、invert color=true、invert alpha=false 时把 Invert 映射到当前 CPU 精确子集Group
Output 的动态 `Socket_0` 规范化为 GraphIR `Image`。桌面生成 fixture 经 WASM/Worker 后直接由
CPU executor 求值 Constant→Exposure→Invert→CompositeRGBA 结果通过;未连接的 Glare 仍保留
Unsupported 并使完整图 capability gate 保持阻断。
8. N-020-B/EM11-07 有界 WebGPU golden显式 allowlist 只包含 Constant Color、Exposure、
Invert、Composite。Blender 5.2 生成的四场景 fixture 经真实 WASM Main reader 后,生产 CPU
executor 与 Chromium WebGPU compute 对 2×2 `LINEAR_SRGB` Float32 RGBA 输出逐字节 SHA-256
相同CPU-only、资源输入、未声明节点、断链和错误 socket 在 shader 编译前结构化阻断。
9. N-020-DM11-08 全图执行门CPU 与 frame-cache 入口在求值、取消回调和 cache hit 前扫描
完整 graph即使 Unsupported 节点未连接到 Composite也返回
`COMPOSITOR_NODE_UNSUPPORTED`。真实 Blender 5.2 Main fixture 的 Glare node name/type/
`blenderType`、graph JSON 与 revision 在失败前后完全不变;预置 cache 不能绕过该门。
## 仍然阻断
- N-020-AMain graph 写回,以及 Transform、非默认 Invert、Alpha Over、Blur、Mix、Image/Render
Layer 的逐节点参数与 resource/pass reader基础真实图结构、常量色、Exposure、默认 Invert、
Viewer/Composite 已完成。
- N-020-B/CM11-07 只实现四节点、无资源、单输入链的有界 WebGPU compute通用 WebGPU
executor、tile scheduler、OPFS 持久 frame cache、增量 invalidation 和生产 GPU 调度仍阻断;
CPU 周期取消和内容寻址内存 LRU 已完成。
- N-020-D服务端 Blender job、source hash 和结果提交。
- N-020-Edesktop HDR/alpha/color-space golden、OOM/fault/device-loss。
## 验收
```bash
WEB_TEST_PORT=5320 npm --prefix web run test:e2e -- --grep "N-020 CPU compositor"
npm --prefix web run test:compositor-main-reader
WEB_TEST_PORT=5562 npm --prefix web run test:compositor-node-golden
WEB_TEST_PORT=5565 npm --prefix web run test:compositor-unsupported-gate
```