diff --git a/docs/报告/STEP-055_Android真实WeatherV2风场综合可视化_Codex完成报告_v5.md b/docs/报告/STEP-055_Android真实WeatherV2风场综合可视化_Codex完成报告_v5.md new file mode 100644 index 000000000..5c44e137e --- /dev/null +++ b/docs/报告/STEP-055_Android真实WeatherV2风场综合可视化_Codex完成报告_v5.md @@ -0,0 +1,31 @@ +# STEP-055 Android 真实 WeatherV2 风场综合可视化 Codex 完成报告 v5 + +Starting HEAD / remote:`067bfdc38baa32d6e474a502d67bc0910d18e247`,`origin/particle/main`。 + +## 修改 + +zoom-aware 公式为 `effectiveVisualSpeedScale = clamp(1200 * 2^(9 - zoom), 300, 153600)`。最终 `simulationDeltaSeconds = min(clamp(wallDeltaSeconds, 1/240, 0.050) * effectiveScale, 2400)`。典型 60 FPS:z2 为 2400(由 cap 限制)、z5 为 320、z9 为 20 simulation seconds/frame。canonical m/s 和 Web Mercator displacement 公式未改。 + +State 生命周期重命名为 real-time 语义:base=12 real seconds,hash jitter 后 maxAge=9–15 seconds。State B 在正式路径累加 `wallDeltaSeconds`,而非 zoom-aware simulation delta;初始 hash stagger、普通 respawn age=0、无 GPU readback 均保持。 + +普通 pan/zoom/rotate/pitch 先触发一次 `ParticleTrail: event=CAMERA_INVALIDATE`,Trail accumulation 暂停但 texture 不销毁、State/Field/Timeline 不变;连续变化只更新时间戳。150ms 稳定后 `CAMERA_STABLE_RESUME`。实际 viewport size 变化才 `VIEWPORT_RESIZE` 并重分配 Trail texture。 + +修改文件: + +- `src/mbgl/renderer/layers/render_particle_validation_layer.cpp` +- `shaders/particle_gpu_validation.fragment.glsl` +- `include/mbgl/shaders/gl/particle_gpu_validation.hpp`(generator 输出) + +未修改 State Float、Trail UByte、previous→current segment、canonical、Timeline、Runtime Window、WeatherColorLayer、REAL WEATHER UI、WeatherV2 assets 或 converter。 + +## 验证 + +- shader generator:PASS。 +- Linux OpenGL 精确编译 `render_particle_validation_layer.cpp`:PASS。 +- 既有非 Jest `style_layer.test.cpp` 精确编译:PASS。 +- `git diff --check`:PASS。 +- Android Gradle/APK/ADB/设备及 Jest:未执行。 + +功能提交:`f926a3f00730bd298dcff964eb92da2ec7ef3bda`(`fix: stabilize particle visibility across zoom levels`),已成功 push 至 `origin/particle/main`。本报告随后以独立文档提交记录,不改变功能实现。 + +最终状态:**IMPLEMENTED / WAITING_ANDROID_VALIDATION**。