Repository navigation
密集波形在缩放时更少出现细缝,同时保留尖峰、可见极值和放大后的原始采样细节。公共 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