我曾经参与了许多项目(包括个人项目),每个项目都需要使用某种方式以程序化的方式处理复杂的三角网格。我一直在重复实现这些小功能。最近我在制作一个简单的点滴体积计算器,实现了三角网格体积近似算法、球面剖切和布尔运算等小型3D操作,但我始终没有找到一种真正普遍适用的解决方案。
我曾经多次尝试使用Unity Burst重写所有的代码,但始终没有成功。我的实现并没有很好地与Burst集成,工作中的时间也很紧缺。我们偶尔会使用Burst在一些局部任务中,但整个数据流始终是由人工管理的。
但是我一直希望彻底使用Burst和本机计算。这就是为什么我又一次尝试了。写了一份实现,接着是另一份,接着是第三份。然后我使用了我的旧版网格剪切算法、多边形分解和属性来源。要知道,我是非常疲倦的。我感到非常厌倦,厌倦了阅读、重写和重构所有的代码,我也非常厌倦了进行研究。
但同时,我必须承认Unity Burst确实很强大。如果说我的使用Job系统中的热路径现在速度更慢一些,但得到的x10的速度提升(使用[BurstCompile]标记)已经让我非常激动了。
| 数据流管道 | 工艺模式 | 最小时间(ms) | 中位数时间(ms) | 平均时间(ms) | 最大时间(ms) | 比较时间(ms) | 比Legacy快的倍数 |
|---|---|---|---|---|---|---|---|
| Legacy | 粗粉 | 1.338 | 1.393 | 1.401 | 1.594 | 0.000 | 1.00x |
| Legacy | EarClipping | 1.650 | 1.720 | 1.729 | 1.993 | 0.000 | 1.00x |
| Legacy | 腹壁 | 9.329 | 9.560 | 9.610 | 11.161 | 0.000 | 1.00x |
| Provenance | 粗粉 | 1.154 | 1.237 | 1.244 | 1.389 | -0.156 | 1.13x快 |
| Provenance | EarClipping | 1.463 | 1.575 | 1.589 | 1.936 | -0.145 | 1.09x快 |
| Provenance | 腹壁 | 5.004 | 5.235 | 5.249 | 5.578 | -4.325 | 1.83x快 |
| ProvenanceBurst | 粗粉 | 0.103 | 0.114 | 0.116 | 0.145 | -1.279 | 12.24x快 |
| ProvenanceBurst | EarClipping | 0.114 | 0.128 | 0.130 | 0.162 | -1.592 | 13.44x快 |
| ProvenanceBurst | 腹壁 | 0.907 | 0.965 | 0.970 | 1.150 | -8.594 | 9.90x快 |
| ProvenanceBurstJob | 粗粉 | 0.285 | 0.313 | 0.316 | 0.369 | -1.080 | 4.45x快 |
| ProvenanceBurstJob | EarClipping | 0.301 | 0.327 | 0.329 | 0.370 | -1.393 | 5.26x快 |
| ProvenanceBurstJob | 腹壁 | 0.739 | 0.776 | 0.779 | 0.980 | -8.783 | 12.32x快 |
评论 (0)