求助 Mask有没有更好的替代方案

如题,众所周知,Mask会打断渲染批次,大家有没有好一点的方案,既会达到 Mask 的效果,也不会打断渲染

你要用mask mask什么东西?

  1. 比如 scrollview 组件里面 view 的mask替代掉
  2. 比如头像的裁剪,shader是否比mask性能好

shader不也会打断合批

如果不想打断任何合批,提前改顶点数据就行.
1:不需要修改任何shader
2:需要单独修改所有需要被mask的组件顶点,但是逻辑都是一致的,挂个单独的脚本就行.
3:我有个插件,PolygonSprite就是这样的,不修改任何shader,通过改顶点.(非广告,无链接.)


类似这样的.

可以详细说说,为什么提前修改顶点数据,就可以不打断渲染批次吗

… 你可以问问AI或者看看引擎源码对2D部分的合批是判断了哪些条件…

好滴,感谢大佬的答复,向你学习

Mask组件打断渲染批次的主要原因是:

  1. Mask需要使用模板缓冲(Stencil Buffer)来实现遮罩效果
  2. 模板缓冲的状态改变会导致渲染状态的改变
  3. 渲染状态的改变会强制提交当前的批次