Files
workinf_Blender_Wasm/docs/tasks/WBV2-P1424-001-compute-ssbo/CS06.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.5 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.
# CS06:曲线与毛发原生业务闭环
- queueTask: WBV2-P1424-001
- parentTask: WBV2-P1424-000
- packageStatus: planned
- dependsOn: CS02, CS03, CS05
- validation: NOT_RUN;acceptance: NOT_CLAIMED
## 业务与交付
主工作区曲线/毛发编辑或资产预览 → 原生绘制缓存 → 原生 compute → VBO → 原生视口
第一个完整 buffer compute 业务包:主工作区与资产预览共用原生曲线显示资源;逐 shader 记录接线。
## 最小输入与源码依据
- `blender-5.2.0/source/blender/draw/intern/draw_curves.cc`
- `blender-5.2.0/source/blender/draw/intern/draw_cache_impl_curves.cc`
- `blender-5.2.0/source/blender/draw/intern/shaders/draw_curves_infos.hh`
- `blender-5.2.0/source/blender/draw/intern/shaders/draw_curves_topology_comp.glsl`
- `blender-5.2.0/source/blender/draw/intern/shaders/draw_curves_interpolation_comp.glsl`
- `blender-5.2.0/source/blender/draw/intern/shaders/draw_curves_length_intercept_comp.glsl`
- `blender-5.2.0/source/blender/gpu/webgl/webgl_draw.cc`
- draw_curves.cc 已有 topology、interpolation、length/intercept 的 Web 直接 dispatch 分支;普通 pass 路径仍有拒绝分支。
- 前一交接要求保留原生曲线 CPU 显示路径;本包移植显示缓存生产,不创建第二套建模几何内核。
## 实现步骤
1. 逐条绑定 topology、position/radius、float/float3/float4 属性、length/intercept 原 shader 与实际 owning buffer;现有 Web 分支按事实补齐。
2. 处理原生曲线类型、cyclic、resolution、分批曲线起点、空集合、未加权 NURBS 只读别名和 device-only 目标。
3. 接入编辑变更/预览刷新造成的 cache invalidation;只有本轮所有生产阶段提交后才更新完成代数。
4. 保留既有原生 CPU 显示路径直到对应设备路由具备同等实现;通过明确能力路由选择,GPU 错误不可悄悄返回 CPU 成功。几何建模运算继续使用 OCCT 出口。
## 失败边界
独立 Python kernel 或仅成功生成 topology 不能代表整个曲线工作流完成。
发生阻塞时记录具体业务、原生函数/create-info、producer/consumer 和下一修复动作;保留既有产物,继续无此依赖的实现卡,不用缺失证据作为实现阻塞。
## 延后的用户场景(当前不执行)
- 编辑控制点/半径/属性后的原生视口更新
- cyclic/空曲线/不同曲线类型
- 预览取消与重建
- undo/redo/save/reopen 后由 Main 重建缓存
没有在本次拆解中创建或运行测试 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 仅显示。