Files
MapLibreParticleLab/docs/报告/20_架构设计_Codex完成报告_v1.md
OpenAI Codex 74be2a5052
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled
docs: freeze particle architecture investigation and design
2026-08-29 12:33:09 +08:00

107 lines
6.3 KiB
Markdown
Raw Permalink 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.
# 20_架构设计 Codex 完成报告 v1
日期:2026-08-29
任务:`docs/40_任务/20_架构设计指令书_v1.md`
分支:`particle/main`
起始提交:`127de2271480000fcc8f390d81cf446e98757800`
结束提交:`127de2271480000fcc8f390d81cf446e98757800`(本任务未提交)
执行结论:PASS(文档设计任务)
下一阶段:B,进入 `30_最小技术验证`
## 1. 前置文档与 Git 基线
| 项目 | 状态 | 结果 |
|---|---|---|
| 根 AGENTS/基线 | 已完成 | 已读取 `AGENTS.md`、`PARTICLE_BASELINE.md` |
| 项目总则 | 已完成 | 已完整读取 `docs/00_项目总则/` 全部当前有效文件 |
| 项目规范 | 已完成 | 已完整读取 `docs/00_项目规范/` 全部当前有效文件 |
| 前置调查/报告 | 已完成 | 已读取调查报告和 Codex 完成报告 |
| 当前架构/记录/Step | 已完成 | 已读取现有架构文档、开发记录和 STEP-000 |
| 当前设计任务书 | 已完成 | 1092 行已完整读取 |
| Git baseline | 已完成 | `particle/main`,HEAD 为上述起始提交;submodule 已查询 |
| 工作区干净 | 未完成 | 开始时已有上一阶段文档变更及用户提供的两份未跟踪任务书;均予以保留 |
## 2. 设计必做项状态
| 必做项 | 状态 | 结果 |
|---|---|---|
| 候选渲染路线比较 | 已完成 | 比较 CustomLayer、CustomDrawable、独立 Core layer、Overlay |
| 唯一主路线选择 | 已完成 | 独立 Core RasterParticleLayer/RenderRasterParticleLayer + gfx |
| Core 模块设计 | 已完成 | Field、Adapter、Simulation、Render、GPU、Mask、Controller |
| 与 Style/RenderTree/gfx 关系 | 已完成 | 正式进入 Style/RenderTree,offscreen pass + translucent composite |
| WeatherColor/Particle 边界 | 已完成 | 分离 Layer/RenderLayer/GPU 状态/动画生命周期 |
| Data/Field contract | 已完成 | RasterArraySource、immutable snapshot、revision、canonical U/V |
| Fixture contract | 已完成 | metadata.json、field.f32、mask.u8、字节序、校验和、五个预留场景 |
| GPU resource 设计 | 已完成 | velocity、State A/B、Trail A/B、Mask、uniform、shader set |
| GPU state/simulation | 已完成 | 逻辑状态、render-pass ping-pong、NoData/mask/respawn;compute 延后 |
| Trail 架构 | 已完成 | 第一阶段包含 screen-space ping-pong trail,Camera 变化清空 |
| Land/Ocean Mask | 已完成 | 独立 snapshot/cache/texture,OCEAN_ONLY 共享,缺失 fail closed |
| 数据流与频率分类 | 已完成 | 低频、每帧、Camera 变化三类已定义 |
| 线程模型 | 已完成 | Map/UI、Worker、Render、GPU 的所有权和交接已定义 |
| Camera/Matrix 同步 | 已完成 | 只读取当前 render frame Paint/Transform parameters |
| 帧驱动 | 已完成 | MapLibre render loop + needsRepaint,禁用独立粒子时钟 |
| Android 薄接入 | 已完成 | typed JNI;禁止 raw long;OpenGL 主线、Vulkan gate |
| iOS 薄接入 | 已完成 | Core Source/Layer peer;CustomStyleLayer 只作参考;后续 Metal/OpenGL gate |
| 生命周期状态机 | 已完成 | DISABLED 至 ERROR/CONTEXT_LOST 的状态、恢复和释放责任已定义 |
| 公共 API/配置分层 | 已完成 | backend-independent source/layer/options/status;内部参数不外露 |
| 错误/降级 | 已完成 | Field、Mask、GPU、backend、context、shader、memory pressure 均定义 |
| 性能预算 | 已完成 | 给出待验证目标和测量档位,未声称性能已达到 |
| 最小技术验证清单 | 已完成 | 压缩为四项,并标记阻塞性和最小方法 |
| 不采用方案 | 已完成 | 逐项拒绝任务书要求的八类方案及 CPU/compute-only 等 |
| 九类架构图 | 已完成 | 总体、Core、fixture 数据流、每帧、Camera、Android、iOS、Mask、状态机 |
| 架构冻结项 | 已完成 | 14 项正式冻结;同时列出不得冻结项 |
| 下一阶段判断 | 已完成 | B:进入 `30_最小技术验证` |
## 3. 核心架构选择
正式主路线是新增独立 Core `RasterParticleLayer`、`RenderRasterParticleLayer` 和 `mbgl::particle` 模块,通过 `RasterArraySource` 接受 immutable Field snapshot,进入 MapLibre Style/RenderTree,并使用 gfx Texture/RenderTarget/Drawable/Shader/UploadPass 完成 GPU simulation、trail 与 translucent composite。
CustomLayer/CustomDrawable 不构成产品双轨;Android raw `CustomLayerHost` 不进入正式 API。平台只提供类型安全 Source/Layer peer、backend lifecycle 与 capability 薄接入。
## 4. 实际生成或修改文件
- 新增 `docs/10_架构/20_粒子系统总体架构设计_v1.md`。
- 新增 `docs/报告/20_架构设计_Codex完成报告_v1.md`。
- 追加 `粒子开发记录.md`。
- 未修改现有 `docs/10_架构/MapLibre粒子总体架构_v1.md`;其简略 Layer 顺序与本设计一致。
- 未新增或修改 `docs/50_Step记录/`;符合任务书第 31 节。
## 5. 无法验证与未完成
### 无法验证
- 独立 particle RenderLayer 在 Android OpenGL/Vulkan 的运行时 pass/barrier/context 行为。
- State/Trail RenderTarget 的实际格式、性能和 context recreation 时间。
- Camera/wrap/Mask 在真机/模拟器上的视觉正确性。
- iOS Metal/OpenGL 的粒子 Core layer 薄接入。
- 最终 FPS、最大粒子数、最佳 texture format、设备能力和生产 Mask 来源。
这些均已列入 `30_最小技术验证` 或明确标记为后续 Gate,不影响本次总体设计文档 PASS。
### 未完成
- 无。本任务要求的设计输出均已完成;生产实现、构建和运行时验证本来就是本任务禁止项。
## 6. 代码、依赖、构建与测试
- 生产/实验源码:未修改。
- Android/iOS/Gradle/Pod/CMake/package/lock:未修改。
- 依赖:未安装、未升级。
- 构建:未执行;任务明确禁止会修改工程状态的构建。
- 测试:未执行;本阶段仅做静态架构设计。
- APK/AAR/其他产物:无。
- 项目总则/项目规范:未修改。
## 7. 与指令书差异、阻塞和建议
- 与指令书差异:无。
- 与长期总则冲突:无。
- 阻塞:没有阻塞本次设计完成的事项;存在四项会阻塞后续正式实现或平台扩展的运行时验证。
- 建议:下一份正式指令书进入 `30_最小技术验证`,只覆盖设计文档第 26 节四项验证,不创建完整粒子产品实现,也不重新讨论总体架构。