Files
MapLibreParticleLab/docs/50_Step记录/STEP-041_Android双时间片GPU时间插值_v1.md
OpenAI Codex b127822301
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled
docs: close GPU particle time interpolation validation
2026-09-03 13:44:45 +08:00

26 lines
2.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.
# STEP-041 Android 双时间片 GPU 时间插值
- 状态:`CLOSED / PASS`
- 前置:STEP-040(40-01)已在 Android OpenGL 手工验收为 PASS。
- 目标:在唯一正式链路 `RasterArraySource -> RasterParticleLayer -> GPU Simulation -> Trail -> Composite` 中,把单 Field 扩展为 T0/T1 两个独立 GPU Field,并在 State pass 对速度作 GPU `mix`。
- 实现提交:`4675a8a29dd6fc7b684bfb64913a8c9075ad8583`(`feat: add GPU particle time interpolation`)。
- 40-02C 最终修正:原实现的 MIX fallback、GPU identity 与 NORTH Mercator displacement 问题由 STEP-043/043A/043B 修正;Android T1--T10 已完成并全部 PASS。
## 本轮实现
- `RasterArraySource` 支持可选 `next-fixture`、`next-metadata`、`next-field`,以同一 FileSource byte boundary 加载 T0/T1;两份快照必须具有相同 grid、bounds、NoData、Field 类型及 display domain。
- `RasterParticleLayer` 新增常量 paint property `raster-particle-time-mix`(有限值,内部 clamp 至 `[0,1]`)。它仅更新既有 UBO,不能触发 Field upload 或 State/Trail 重建。
- `RenderRasterParticleLayer` 维持一套既有 State A/B、Trail A/B、Mask 与 Composite,只将 Field GPU resource 扩为 T0/T1 两个 texture slot。窗口推进时会按 generation + fixtureID + dataVersion 匹配旧 slot;A/B -> B/C 复用 B、只上传 C,并不 reset simulation/trail。完全无重叠的新窗口仍走既有安全 reset/reseed。
- State shader 分别 decode T0/T1 RG velocity 后使用 `mix(velocity0, velocity1, timeMix)`;没有 CPU 生成中间完整 Field。NoData alpha 在任一端无效时保持现有确定性 respawn。
- Android Test App 新增 T0 EAST/T1 NORTH、MIX 0/50/100 与 ADVANCE B->C 入口;保留既有 ACTIVE/STATIC、mask、Camera、world-wrap 与 antimeridian 入口。
## 验证边界
- Linux OpenGL 受影响 Core 与 source test object:通过。
- shader generator、二次生成稳定性、C++ format、`git diff --check`:通过。
- Codex 未运行 Android Gradle、ADB、APK 安装或设备测试;用户已在 Android x86_64 OpenGL 完成 T1--T10,全部 PASS。
## 不在本 Step 范围
iOS/Metal、Vulkan、网络/真实气象数据、完整 forecast cache、Jest、最终性能基线均不在本任务范围。40-02 在 T1--T10 通过前不得标记 PASS。