2.3 KiB
2.3 KiB
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 对速度作 GPUmix。 - 实现提交:
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 propertyraster-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。