我曾经参与了许多项目(包括个人项目),每个项目都需要使用某种方式以程序化的方式处理复杂的三角网格。我一直在重复实现这些小功能。最近我在制作一个简单的点滴体积计算器,实现了三角网格体积近似算法、球面剖切和布尔运算等小型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快