lwrp下fgui的list需要关心的问题

在lwrp下如果我们用了UnityEngine.Rendering.GraphicsSettings.useScriptableRenderPipelineBatching = true;

那么我们的元素在同材质下并且同样的变体下就会合批。以节省drawcall。

但是这个用在fgui的list下就会出问题了。因为fgui下的元素用的材质比较多的是image材质和text材质。然而我们合批是因为材质一样就合批的。

在这种情况下,会有个问题,就是如果有两个list,一个list在另一个list上面,然后下面的list移动的位置小于另一个list。

由图上可以看到我有两个list,然后第二个list看不到。

这是因为,list下的元素会做裁剪,他的裁剪原理是用了Fgui-Image或Fgui-text下的CLIPPED变体,然后shader来做裁剪。

然后因为两个list在同一个批次(材质一样)

 

给到gpu的shader只能有一个进入,那么就哪个list的shader先进入就按照谁的shader来执行(按照先后顺序,也就是比较先进入的先执行)。

这样裁剪的范围就不正确了。

 

解决办法:

1.简单点就是有列表时不合批就。UnityEngine.Rendering.GraphicsSettings.useScriptableRenderPipelineBatching = false;

 

2.每个list下的image及text,用材质不同的参数就可以了,这样他们每个list就不合批,这样大家就可以用自己的CLIPPED的裁剪范围来裁剪了。就不会出现这个问题了。

 

比如我改材质的op,让他每个list都更改一个值

 

结果展示

 

各自裁剪各自的区域了

 

 

 

两个不通的批次

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值