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