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

4.2 KiB
Raw Blame History

N-020 Compositor

状态:BLOCKEDGraphIR、有界 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。

验收

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