Unity Mask合批情况验证

1.首先是两个Mask完全重合的情况下
每张图片使用的image都来自同一个图集
Unity Mask合批情况验证_第1张图片
Unity Mask合批情况验证_第2张图片
Unity Mask合批情况验证_第3张图片
发现彼此之间是没有合批的,但是每个Mask内部是实现了合批的
经过计算此种情况的visiableList:mask1,IM1,IM2,mask2,IM3,IM4
mask1首尾2个drawcall,IM1和IM2合批,1个drawcall,mask2首尾2个drawcall,IM3和IM4合批,一个drawcall,再加上相机的默认HDR开启drawcall,总共7个批次
2.再看不完全重合的情况
Unity Mask合批情况验证_第4张图片
Unity Mask合批情况验证_第5张图片
Unity Mask合批情况验证_第6张图片
发现mask1和mask2的首尾进行了合批
visiableList:mask1,mask2,IM1,IM2,IM3,IM4
mask1和mask2首尾合批,IM1,IM2,IM3,IM4合批
3.再看完全不重合的情况
Unity Mask合批情况验证_第7张图片
Unity Mask合批情况验证_第8张图片
最终队列和上面一样,只不过depth的计算稍稍不同
4.再看有元素完全不在Mask范围内的情况
Unity Mask合批情况验证_第9张图片
Unity Mask合批情况验证_第10张图片

Unity Mask合批情况验证_第11张图片
最终队列也一样。这里和RectMask2D有所不同,IM3在完全不在Mask范围时,是会参与渲染的,但是如果在RectMask2D情况下,是不会参与渲染的,而且综合以上情况,发现即时在不同的Mask下的UI元素,满足合批条件的情况下也是能够合批的

你可能感兴趣的:(Unity,unity,游戏引擎)