Unity3d 批次与Tris性能

Unity3d 批次与Tris性能,unity3d,Unity3d,我们有一个拥有12k tris(集装箱)的资产,我们在Unity asset store找到了一个外观更好的资产,拥有3.5k tris。但是,新资源的物理长度是旧资源的一半,因此为了保持相同的级别设计,我们需要为每个旧对象提供两个对象 我们为对象勾选了静态批处理。 在同一场景中查看同一地点的新资源与旧统计数据 tris: 800k vs 1.1m verts 900k vs 1.4m batches: 611 vs 490 setpass calls: 192 vs 167 Bonus Li

我们有一个拥有12k tris(集装箱)的资产,我们在Unity asset store找到了一个外观更好的资产,拥有3.5k tris。但是,新资源的物理长度是旧资源的一半,因此为了保持相同的级别设计,我们需要为每个旧对象提供两个对象

我们为对象勾选了静态批处理。

在同一场景中查看同一地点的新资源与旧统计数据

tris: 800k vs 1.1m
verts 900k vs 1.4m
batches: 611 vs 490
setpass calls: 192 vs 167

Bonus
Lightmap: 150mb vs 200mb
显然,我们有更多的批处理和绘制调用,因为对象的数量越大。在批处理/设置传递调用中,tri计数的减少是否值得增加

我们的目标平台是SteamVR(台式PC和HTC Vive/Rift),推荐规格为GTX 970和中端CPU

背景中的旧资产前景中的新资产

一般来说,draw调用比tri的数量更昂贵。当然,您需要对实际结果进行分析。请注意,如文档中所述,批处理仅在某些条件下有效,其中之一是网格的顶点数少于900(?)等。通过编辑器工具执行自定义批处理(如构建期间的OnPostprocessScene或任何适合管道的工具),您可以对场景进行更多优化。您可以使用CustomBatchingUtility、MeshUtility或自己编写。那么你就不需要折衷了,你可以两全其美。

我不能给你一个足够精确的答案,所以我在这里留下一条评论说,一般的经验法则是批处理是CPU负载,而tris是GPU负载。因此,更少的tris和更多的batches资源将减轻GPU的一些负载,但会稍微增加CPU负载。检查fps和Time.deltaTime以获得aswerDynamic batching在900个顶点/着色器属性上有一个限制,因此对于900/4=225的标准着色器,动态批处理不是很有效,静态批处理有很多不同。自从那个问题被问到后,我学到了很多,如果你喜欢我,目标桌面虚拟现实设置传递呼叫对性能的影响比tris更大。在这种情况下,没什么大不了的,小容器很快就被堵塞了。若你们有一个开放世界的游戏,那个么明智的做法是使用atlas LOD1和更高的等级,这样他们就可以批量生产