Chaos破碎性能分析
Contents
默认情况下,Chaos没有开启多线程,我们将两种方式对比.开启TaskGraph没有明显变化
一.基础测试
1.1 没有碎块
没有碎块的话,我们的性能开销是0.1ms
开启TaskGraph没有明显变化
1.2 100块碎块
当我们100块的时候,上升到了5ms
1.3 500块碎块
上升到了20ms
1.41000块碎块
上升到了60ms 测试案例,将一个box分为1000块。
二.修改参数
2.1修改Iterations
我们看到,绝大部分的物理性能的消耗不出所料是在计算物理位置的EvolutionAndKinematicUpdate上面。
集中在AdvanceOneTimeStep上面。在物理引擎中,我们的帧数其实要比物理引擎的帧数低很多,物理引擎将每帧分成更小的单位Step,每一步来判断是否发生了碰撞,如果发生了碰撞则会发生反弹等其他操作。
对于1000块,我们修改
当Iterations变为5时,48ms。为2时,28ms,为1时,25ms。
2.2增加cluster
我们Iterations的基础上,将1000块分组。增加Cluster的效果非常好,虽然我们破碎分为10个Cluster的话和没分的时候差不多。但是我们分为100个Cluster时
我们分为200个:
这里的分簇操作控制碎裂网格体的视觉质量和性能。破坏建筑物等对象时,级别1通常需要少量簇(或较大碎片),随着级别的增加会发生更多破坏(较小碎片)。 最初碎裂时无需数千碎片以进行优化,而是在建筑物倒下时落下单独碎片。 优化的另一选择是定义要碎裂的 最大簇级别(Max Cluster Level)
可以看出来,分Cluster对整个的破碎非常的有帮助。
合理的分簇能够极大的减少性能开销,我们进行多级的分组
帧数能稳定在70fps
结论
就算是调整到比较廉价的方式,其本身依旧还是开销巨大,对整个场景的破坏极具考验。