关于Unity3D5.X 动态批处理(Dynamic Batching)实测,区别于4.0版本(转)

尊重原创:https://blog.csdn.net/a2587539515/article/details/51178308 

转自大佬见笑

网上看了几篇文章,觉得不如自己试试,果然发现了一些问题,又查了查官网,才知道版本更新的时候批处理也更新了。

 

新版本官网上的介绍中去掉了缩放的限制,增加了一条对于镜像物体无法进行批处理,比如Scale为(1,1,1)的物体与Scale为(-1,1,1)的物体无法进行批处理。而限制(1,1,1)与(1,2,3)可以进行批处理。

 

以下,实验过程,眼见为实嘛。

先看第一种情况。

1、创建几个物体大小相同时。关于Unity3D5.X 动态批处理(Dynamic Batching)实测,区别于4.0版本(转)

可以看出,3个物体,Save By Batching是2,说明有两个物体进行了一次批处理,SetPass Call是1,说明只有一个DrawCall,这是对的。在这个例子中,我是直接在场景中创建的物体。

2、创建几个物体大小不同时

关于Unity3D5.X 动态批处理(Dynamic Batching)实测,区别于4.0版本(转)

多加了几个物体,Save By Batching是5,SetPass Call是1,就是说我们仍然做了批处理,DrawCall还是1。

网上有4.0版本的Dynamic Batching介绍,效果不一样这是,这是5.0版本对动态批处理进行的升级。

3、动态创建物体

关于Unity3D5.X 动态批处理(Dynamic Batching)实测,区别于4.0版本(转)

等大的物体创建就不说了,仍然DrawCall是1。

看第一句,这是个等比例放大。

关于Unity3D5.X 动态批处理(Dynamic Batching)实测,区别于4.0版本(转)

结果没有变。

第二句再来个非等比例放大。

关于Unity3D5.X 动态批处理(Dynamic Batching)实测,区别于4.0版本(转)

结果没有变,最后来个最有意思的,第三句。

obj.transform.localScale = new Vector3((Random.value - 0.5f) * 2 * range, Random.value * range, Random.value * range);

这里仍然是非等比例放大,然而我将x的值改为-1~1之间。我们来看下效果。

关于Unity3D5.X 动态批处理(Dynamic Batching)实测,区别于4.0版本(转)

 

因为这里我用的是随机,所以值会出现很多种,但是可以看出Save By Call发生了变化。同时DrawCall也发生了变化。