Files
MapLibreParticleLab/docs/50_Step记录/STEP-067_MapLibreParticleLab_V3-03_ScalarGPU与GenericFieldRenderer_v1.md
OpenAI Codex 89c72554c5
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled
docs: close STEP-067 scalar GPU renderer
2026-09-11 07:05:46 +08:00

2.8 KiB
Raw Permalink Blame History

STEP-067 MapLibreParticleLab V3-03 Scalar GPU 与 Generic Field Renderer

状态:完成(CLOSED / PASS)

目标与基线

在 particle/main 的 9dabb95e4425ffbcb863c520923f5d4b537a3feb 上实现 V3 scalar GPU field bundle 的 WeatherColor 消费,保持 vector magnitude 的 Wind 色场和既有粒子 Velocity 语义。

完成内容

  • WeatherColorLayer 新增显式 FieldValueSource::Scalar|VectorMagnitude,默认 VectorMagnitude。
  • WeatherColor 单一 GPU renderer 根据明确 source 编码 scalar 或 U/V,shared validity 始终写入 alpha;T0/T1 均无效或缺少所选 channel 时清理 drawable 并 fail-closed。
  • shader 对 scalar 或 vector magnitude 分别先作 T0/T1 时间插值,再进入同一 generic color ramp;没有 scalar 伪装为 U/V。
  • WeatherColorStop.speedMps 收敛为 generic value,校验为 finite 且严格递增;日志、UBO 注释和 shader 去除固定 m/s 语义。
  • Particle renderer 明确仅接受 vector present 且 VectorSemantics::Velocity;scalar-only 与 Direction 立即清理其 GPU resource 并 fail-closed。
  • WeatherColor rollover 仍以 decoded bundle content identity 复用 OLD_T1→NEW_T0;切换 value source 时不误复用不同 GPU 编码,只有新内容上传。

允许修改

WeatherColor style/render、Particle renderer guard、实际 GLSL/生成的 OpenGL shader header、对应 UBO 注释和 C++ layer test。

禁止修改确认

未修改 Android/JNI/Java/Kotlin、RN package/API/version、Test Host、WeatherV2、NavSea、Timeline/Playback/Runtime Window;未实现 DIRECTION advection、Wave physics、v2 JNI/RN ingress;未运行 Gradle、AAR、APK、ADB 或 Jest。

验证

  • node shaders/generate_shader_code.mjs:PASS(经 build-output-throttle)。
  • 精确受影响对象:render_weather_color_layer.cpp.o、render_particle_validation_layer.cpp.o、style_layer.test.cpp.o:PASS(经 build-output-throttle;ccache 临时目录使用 /tmp/maplibre-particle-ccache-tmp)。
  • build-linux-opengl/mbgl-test-runner --gtest_filter='Source.ParticleFieldV3*:Layer.WeatherColorUsesIndependentFixedOpacity':PASS,退出码 0。
  • git diff --check:PASS。
  • 用户于当前 HEAD(06fcbef9ccb820e595f06acbd356950de7e3a73f)手工执行 ninja -C build-linux-opengl -j3 mbgl-test mbgl-test-runner,输出为 ninja: no work to do.。确认 mbgl-test 与 mbgl-test-runner 两个完整目标及其依赖均已是最新,没有待处理的构建或重链接工作。
  • 上述结果仅确认目标构建/重链接状态;本次没有重新执行全量测试用例,不能将其表述为全量测试用例重跑 PASS。

阻塞与下一步

无功能阻塞。本 Step 的 Linux 全量目标重链收尾已确认;Android 验收按 V3-08 的单独周期执行,且不属于本 Step 的关闭条件。