Files
workinf_Blender_Wasm/docs/tasks/WBV2-P1424-001-compute-ssbo/CS07.md
mes123456 f3e21c6b98
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
chore: checkpoint web Blender migration source, tools and docs
Accumulated uncommitted work: GHOST Web backend, WebGL/GPU web layer,
web workflow engine and protocol, tooling, docs and task records.
Large generated evidence, user-testing archives, build snapshots and
imported test assets remain untracked.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-11-10 11:18:01 +08:00

55 lines
3.4 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.
# CS07:Draw Manager 资源、可见性与命令生成
- queueTask: WBV2-P1424-001
- parentTask: WBV2-P1424-000
- packageStatus: planned
- dependsOn: CS04, CS05, CS06
- validation: NOT_RUN;acceptance: NOT_CLAIMED
## 业务与交付
默认主工作区重绘 → resource finalize → view/visibility → command generate → native draw
默认原生工作区通过通用 buffer 路径生成并消费绘制资源;剩余 render/shadow 使用同一问题清单逐 caller 关闭。
## 最小输入与源码依据
- `blender-5.2.0/source/blender/draw/intern/draw_manager.cc`
- `blender-5.2.0/source/blender/draw/intern/draw_view.cc`
- `blender-5.2.0/source/blender/draw/intern/draw_command.cc`
- `blender-5.2.0/source/blender/draw/intern/shaders/draw_resource_finalize_comp.glsl`
- `blender-5.2.0/source/blender/draw/intern/shaders/draw_visibility_comp.glsl`
- `blender-5.2.0/source/blender/draw/intern/shaders/draw_command_generate_comp.glsl`
- `blender-5.2.0/source/blender/gpu/webgl/webgl_backend.cc`
- draw_manager.cc 与 draw_view.cc 仍保留 Web 原生 CPU 分支;原 GPU 分支包含 storage/uniform barrier。
- DrawMultiBuf::generate_commands 与 shader 消费是连贯业务链,不能只切换 compute 开关。
## 实现步骤
1. 逐步将 resource finalize、view finalize、visibility、command generation 的原 shader 接入已有 broker,传递 bounds/matrices/info/visibility/command 的真实 owner。
2. 保留资源 fingerprint、视图更新与多 pass 顺序;遮挡/裁剪、空对象集、多个视图的数据不得复用错帧结果。
3. 补齐原生 indirect draw 消费命令布局和 base instance;准确记录仍需适配的 multi-view、object attribute 和 shadow 消费者。
4. 只在一条真实工作流 producer→consumer 全部接通后改变该路由选择,不全局取消现有 CPU 分支。
## 失败边界
保留并标明未接通消费者;默认工作区闭环不等于 EEVEE/所有引擎完成。
发生阻塞时记录具体业务、原生函数/create-info、producer/consumer 和下一修复动作;保留既有产物,继续无此依赖的实现卡,不用缺失证据作为实现阻塞。
## 延后的用户场景(当前不执行)
- 隐藏/显示对象、相机移动后的可见性变化
- 多实例与空场景
- 多视图隔离、连续重绘
- 中途失败无旧命令误提交
没有在本次拆解中创建或运行测试 fixture。原生 shader、现有模板和真实业务数据是实现输入;需要新增用户使用 fixture 时在全项目实现完成后安排。
## 交接
每次报告填写:实际 workflow/route、源码函数与修改、仍未实现接口、产物元数据(仅生成时)、失败/no-mutation 策略、implementation 状态、validation=NOT_RUN、acceptance=NOT_CLAIMED、下一实现动作。记录 unitCount/verifiedUnits/unverifiedUnits/sourceTreeSha256 的来源;未绑定/未验证不增记覆盖。
执行约束:本卡属于 WBV2-P1424-001 / parent WBV2-P1424-000,nextTask=null 保持不变。全部功能实现前不执行测试、回归、冒烟、浏览器验收、类型/语法/上下文检查或证据审计。仅为产物生成进行必要增量编译。源码检索使用 tools/web/search-wbv2-batch-source.mjs 的精确 --source/--unit;GLSL fixture 只读取本卡列出的原文件。不加载完整专项规划、历史日志或源码 inventory。JS 仅承担浏览器 API/传输;几何算法仍使用 OCCT 出口,Three.js 仅显示。