Skip to content

v0.3.1:减少缩放细缝,保留波形极值

Latest

Choose a tag to compare

@Modolet Modolet released this 20 Sep 10:40
· 0 commits to master since this release

密集波形在缩放时更少出现细缝,同时保留尖峰、可见极值和放大后的原始采样细节。公共 API 不变。

修复

  • 下采样选择不粗于目标分辨率的摘要层级,减少层级切换时的稀疏条纹;均匀采样的输出约为每图表像素 2~4 点。
  • 精确处理视口两侧的不完整桶及追加数据的未合并尾桶,避免遗漏极值。
  • 直接生成线段矩形与有限的斜接三角形,覆盖密集回折和短线段接缝,不跨越不连续段,也不引入尖角延伸。
  • 只遍历可见摘要桶,并移除通用描边细分器的 16 位顶点索引限制。

性能

本地 release 构建,百万点波形、图宽 1500 像素,比较 v0.3.0 与 v0.3.1 的实际线段构建代码:

视图 v0.3.0 v0.3.1
全局 221 μs 176 μs
局部 A 329 μs 242 μs
局部 B 290 μs 216 μs

每项取 7 批 × 50 次的中位数。CPU 线段构建约快 20%~27%;三角形数量约增至 3 倍,在上述视图约为 1.2~1.7 万个,仍随图宽受限。这是 CPU 几何构建基准,不代表实机 GPU 帧率测试。

单独运行下采样基准时,百万/千万点全局查询分别由 2.5/3.1 μs 增至 4.5/5.7 μs,增量约 2~3 μs;局部视图查询约 4~7 μs。上述线段构建节省大于这部分额外成本。

新增 cargo bench --bench decimation 百万/千万点基准。附图由实际 GPUI 三角网格导出,用于对比细缝和尖峰。

验证

  • 42 项自动回归测试:极值、层级切换、追加尾桶、断点、密集回折和大路径。
  • 格式化、严格 Clippy、all-targets/all-features 检查、发布包验证通过。
  • Linux / Windows / macOS × 默认 / 主题 feature 共六组 CI 检查全部通过。
  • crates.io 0.3.1 已发布。

升级

cargo update -p gpui-liveplot --precise 0.3.1