47 lines
3.1 KiB
Markdown
47 lines
3.1 KiB
Markdown
# N-020 Compositor
|
||
|
||
状态:`BLOCKED`(GraphIR、有界 CPU executor 与真实 Main graph 结构 reader 已落地;完整节点
|
||
参数映射、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-B(CPU 子集):线性 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-D(门):Unsupported 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→Composite,RGBA 结果通过;未连接的 Glare 仍保留
|
||
Unsupported 并使完整图 capability gate 保持阻断。
|
||
|
||
## 仍然阻断
|
||
|
||
- N-020-A:Main graph 写回,以及 Transform、非默认 Invert、Alpha Over、Blur、Mix、Image/Render
|
||
Layer 的逐节点参数与 resource/pass reader;基础真实图结构、常量色、Exposure、默认 Invert、
|
||
Viewer/Composite 已完成。
|
||
- N-020-B/C:WebGPU executor、tile scheduler、OPFS 持久 frame cache、增量 invalidation 和 GPU
|
||
dispose;CPU 周期取消和内容寻址内存 LRU 已完成。
|
||
- N-020-D:服务端 Blender job、source hash 和结果提交。
|
||
- N-020-E:desktop 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
|
||
```
|