2.7 KiB
2.7 KiB
STEP-044 Android OpenGL 粒子数量容量基线 v3
- 关闭日期:2026-09-03
- 状态:
CLOSED / PASS - 验收方式:用户完成 Android OpenGL x86_64 实机验证;Codex 本收尾未执行 Android Gradle、ADB、安装或设备操作。
基线与历史缺口
c0d1ad43c49ed6d526c3fd8b982c04840326d0d0,feat: add Android particle capacity baseline:完成 State A/B 容量扩展,但 Trail/render 仍只消费少量固定 State sample。因此该提交只能证明 N 个 State 同时 simulation,原 Android 容量验收曾正确暂停;它不是 40-03 的最终完成状态。a0aae48ec8cb8a379909b88df1aeef45663f2985,feat: draw all raster particle states:正式 Trail/render 改为消费全部有效 State,建立effectiveParticleCount=N -> trailDrawCount=N的 full particle draw,使容量测试具备真实意义。
最终链路
State A/B N 个有效 texel -> GPU simulation -> N 个 full particle Trail point draw -> Trail A/B -> Composite。
particle index 在 resource create 或 count change 时一次性映射 State texel;稳定帧 vertex shader 直接从当前 State write texture 读取位置。没有每 frame CPU particle loop、GPU→CPU readback、第二 simulation 或 overlay。
Android 实机证据
所有下列日志均确认 fullParticleDraw=true。
| 档位 | State Grid | effectiveParticleCount | trailDrawCount | 结果 |
|---|---|---|---|---|
| 256 | 16×16 | 256 | 256 | PASS |
| 1K | 32×32 | 1024 | 1024 | PASS |
| 4K | 64×64 | 4096 | 4096 | PASS |
| 16K | 128×128 | 16384 | 16384 | PASS |
| 64K | 256×256 | 65536 | 65536 | PASS |
| 1M | 1024×1024 | 1048576 | 1048576 | PASS;用户确认运行 OK |
T-FULL-01~03
- T-FULL-01:256 State → draw 256,PASS。
- T-FULL-02:1K State → draw 1024,PASS。
- T-FULL-03:256 → 1K → 256:State grid 与 draw count 正确变化,full draw resources 正确释放/重建,无 stale resource、crash、由数量切换引起的 Field upload 或 Style reload,PASS。
40-02 语义保持
实际日志证明 count change 只作用 State/draw resources。MIX 继续是 property-only,不触发 Field upload 或 simulation reset;时间窗 Field reuse 继续工作,simulationRebuild=false、trailCleared=false。40-02 已冻结语义未被破坏。
最终结论
当前 Android OpenGL 正式 GPU 粒子链已实际验证 1,048,576 个 full-draw 粒子可正常运行。已验证容量 ≥ 1M;该容量已经满足 MapLibreParticleLab / NavSea 当前实际需求,本阶段不继续测试 2M / 4M / 8M 或寻找理论压力边界。
1M 是本验证设备上的已验证容量,不是硬编码产品默认值、所有 Android 设备保证值或理论最大容量。