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>
55 lines
3.4 KiB
Markdown
55 lines
3.4 KiB
Markdown
# 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 仅显示。
|