From f0658e0a222508bbb8bf2f627546e8628dcde6fa Mon Sep 17 00:00:00 2001 From: OpenAI Codex Date: Sat, 5 Sep 2026 13:43:00 +0800 Subject: [PATCH] fix: initialize particle respawn bounds in weather layer --- ...055_Android真实WeatherV2风场综合可视化_v8.md | 20 +++++++++++++++++++ .../layers/render_weather_color_layer.cpp | 1 + 粒子开发记录.md | 4 ++++ 3 files changed, 25 insertions(+) create mode 100644 docs/50_Step记录/STEP-055_Android真实WeatherV2风场综合可视化_v8.md diff --git a/docs/50_Step记录/STEP-055_Android真实WeatherV2风场综合可视化_v8.md b/docs/50_Step记录/STEP-055_Android真实WeatherV2风场综合可视化_v8.md new file mode 100644 index 000000000..e8568d4f9 --- /dev/null +++ b/docs/50_Step记录/STEP-055_Android真实WeatherV2风场综合可视化_v8.md @@ -0,0 +1,20 @@ +# STEP-055 Android 真实 WeatherV2 风场综合可视化 v8 + +状态:**IMPLEMENTED / WAITING_ANDROID_VALIDATION** + +Starting HEAD:`4645280fc59ac8e356f4339bb7fad5d73b4a413a` + +## v9 Android C++ 编译遗漏修复 + +v9 为 `ParticleGpuValidationUBO` 新增 `respawnBounds` 后,`render_weather_color_layer.cpp` 的 designated initializer 未同步,Android OpenGL 编译在 `-Wmissing-designated-field-initializers -Werror` 下失败。 + +WeatherColorLayer 不参与 particle viewport respawn,因此其 initializer 已按字段声明顺序补齐:`fieldBounds`、`respawnBounds`、`fieldScale`、`matrix`。`respawnBounds` 取与 `fieldBounds` 相同的中性 Field 范围;色场采样、颜色计算与 opacity 语义未变。 + +搜索确认当前 C++ 中仅有两个 `ParticleGpuValidationUBO` initializer: + +- `render_particle_validation_layer.cpp`:已有 v9 respawn bounds; +- `render_weather_color_layer.cpp`:本次补齐。 + +shader generator、Linux OpenGL 两个 renderer translation unit 精确编译、既有非 Jest `style_layer.test.cpp` 精确编译和 `git diff --check` 通过。未执行 Android Gradle/APK/ADB/设备或 Jest。 + +viewport-aware respawn、zoom-aware speed、wall-time lifecycle、Trail camera debounce、canonical U/V、Timeline/Runtime Window、particleCount 与 WeatherColorLayer 实际颜色场行为均未修改。 diff --git a/src/mbgl/renderer/layers/render_weather_color_layer.cpp b/src/mbgl/renderer/layers/render_weather_color_layer.cpp index 6c8a81712..8cf2f3d20 100644 --- a/src/mbgl/renderer/layers/render_weather_color_layer.cpp +++ b/src/mbgl/renderer/layers/render_weather_color_layer.cpp @@ -83,6 +83,7 @@ public: const shaders::ParticleGpuValidationUBO ubo = { .pass = {5.0f, 0.0f, 0.0f, 0.0f}, .marker = {mix, 0.0f, 0.0f, 0.0f}, .mask = {0, 0, 0, 0}, .visual = {opacity, 0, 0, 0}, .fieldBounds = bounds(resources->t0), + .respawnBounds = bounds(resources->t0), .fieldScale = {resources->scale0, resources->scale1, 0, 0}, .matrix = util::cast(parameters.matrixForTile({wrap, {0, 0, 0}})), }; diff --git a/粒子开发记录.md b/粒子开发记录.md index 0db717d12..8f65307d7 100644 --- a/粒子开发记录.md +++ b/粒子开发记录.md @@ -439,3 +439,7 @@ Particle visual clock 改为基于 zoom 的有界 scale 与 2400s/frame clamp; ## STEP-055 Zoom 下 Viewport 粒子密度调整 configured particleCount 保持不变;稳定相机后,State respawn 域改为“viewport 四角 Mercator AABB + 15% margin”与 canonical Field bounds 的交集。camera moving 期间继续从 full Field respawn,稳定至少 150ms 后才让 viewport 外 slot 回收进入该域;无效/空/过小交集安全回退 full Field。新增独立 respawnBounds UBO,不改变 Field sampling 边界、Timeline、Runtime、WeatherColorLayer 或 canonical U/V,仍待 Android 验收。 + +## STEP-055 v9 Android C++ 编译遗漏修复 + +WeatherColorLayer 的 `ParticleGpuValidationUBO` designated initializer 补齐 `respawnBounds`,并使用与 `fieldBounds` 相同的中性范围;仅修复 Android `-Wmissing-designated-field-initializers` 编译失败。已搜索确认两个 C++ initializer 均完整,未改粒子 respawn、色场行为或冻结数据/时间线边界,仍待 Android 验收。