Files
workinf_Blender_Wasm/docs/tasks/WBV2-P1424-001-compute-ssbo/CS05.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

53 lines
3.3 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.
# CS05:compute 结果进入原生光栅 SSBO 消费
- queueTask: WBV2-P1424-001
- parentTask: WBV2-P1424-000
- packageStatus: planned
- dependsOn: CS03, CS04
- validation: NOT_RUN;acceptance: NOT_CLAIMED
## 业务与交付
GPU 写入 buffer → native draw resource/VBO/index/indirect → WebGL 原生 batch 绘制
compute→原生 draw 的资源消费者接线;明确只读与可写 raster SSBO 的实现边界和剩余调用者。
## 最小输入与源码依据
- `blender-5.2.0/source/blender/gpu/webgl/webgl_backend.cc`
- `blender-5.2.0/source/blender/gpu/webgl/webgl_shader.cc`
- `blender-5.2.0/source/blender/gpu/webgl/webgl_draw.cc`
- `blender-5.2.0/source/blender/gpu/webgl/webgl_draw.hh`
- `blender-5.2.0/source/blender/draw/intern/draw_command.cc`
- WebGLComputeStorageBuf::bind 对 generic storage reads in raster shaders 仍拒绝。
- 已有 glyph UBO、read-only Manager buffer texture、VBO commit 和 indirect draw 适配,不能当成通用 SSBO。
## 实现步骤
1. 以具体 native draw create-info 生成只读 SSBO 视图,复用已有 buffer texture/UBO 传输;保持原字节布局、整数类型、索引与结构步长。
2. 将 compute commit 的 dirty/version 传到 WebGL buffer/texture,绘制前同步并失效旧缓存;VBO、索引、命令和只读 SSBO 分别落实。
3. 补齐实际 DrawMultiBuf 消费的 command/base instance/resource ID 语义,命令解释只负责提交绘制,不重写几何或可见性算法。
4. 将光栅阶段写 SSBO/原子单独列为必解接口:若当前 WebGL 承载不了,按具体 shader 将等价写入阶段接入同一 WebGPU 资源路径,或扩展原生 WebGPU raster 子路径;不能用只读方案声称支持写入。
## 失败边界
不能按 buffer 名字列白名单冒充通用能力;未接通的可写 raster shader 仍计为未完成。
发生阻塞时记录具体业务、原生函数/create-info、producer/consumer 和下一修复动作;保留既有产物,继续无此依赖的实现卡,不用缺失证据作为实现阻塞。
## 延后的用户场景(当前不执行)
- compute 更新位置后 native batch 使用新数据
- 结构化只读 SSBO 与索引/base instance
- 同资源反复 compute/draw
- 写型 raster 资源不得被降为 readonly
没有在本次拆解中创建或运行测试 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 仅显示。