如题,众所周知,Mask会打断渲染批次,大家有没有好一点的方案,既会达到 Mask 的效果,也不会打断渲染
你要用mask mask什么东西?
- 比如 scrollview 组件里面 view 的mask替代掉
- 比如头像的裁剪,shader是否比mask性能好
shader不也会打断合批
如果不想打断任何合批,提前改顶点数据就行.
1:不需要修改任何shader
2:需要单独修改所有需要被mask的组件顶点,但是逻辑都是一致的,挂个单独的脚本就行.
3:我有个插件,PolygonSprite就是这样的,不修改任何shader,通过改顶点.(非广告,无链接.)
可以详细说说,为什么提前修改顶点数据,就可以不打断渲染批次吗
… 你可以问问AI或者看看引擎源码对2D部分的合批是判断了哪些条件…
好滴,感谢大佬的答复,向你学习
Mask组件打断渲染批次的主要原因是:
- Mask需要使用模板缓冲(Stencil Buffer)来实现遮罩效果
- 模板缓冲的状态改变会导致渲染状态的改变
- 渲染状态的改变会强制提交当前的批次
