2.8 KiB
2.8 KiB
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收敛为 genericvalue,校验为 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 的关闭条件。