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