Unity URP渲染管线中的SRP Batcher合批

Unity URP渲染管线中的SRP Batcher合批

Unity的URP管线中不同于之前的Building-In管线,提供了额外的一种性能优化方式:SRP Batcher合批。

SRP Batcher的优势是,不需像静态、动态合批那种,必须使用相同的材质球,但相对于的Shader中也做了些改变,增加了CBuffer。我们可以选择自己的Shader文件查看此Shader是否已支持SRP Batcher。
显示Compatible说明已经支持。
显示not compatible说明当前不支持。
要使用SRPBatcher时,必须将定义的变量放在CBUFFER_START(UnityPerMaterial)/CBUFFER_END语义块中。

由于一般自己写的Shader都会有自己特殊的变量需要定义,所以一般建议自定义hlsl文件用来专门存放CBUFFER_START(UnityPerMaterial)/CBUFFER_END中的内容。

显示在ShadowCaster中的Cbuffer不一致
查看官方说明法线,要使用SRPBatcher,若有多pass,则必须每个Pass的CBUFFER_START中的内容一致。将自定义的hlsl文件include到其他的pass中。

重复定义
此报错是由于自己定义的变量和unity自身定义的hlsl有冲突。检查所有pass中的hlsl,发现主要是LitInput.hlsl和ShadowCasterPass.hlsl中有重复定义。注释掉相关pass的重复定义。
注释重复定义
最后注意根据提示说明,要使用SPR必须将所有定义在Cbuffer中的变量都写在property中,若我们不需要暴露此变量可以加上[HideInInspector]。需要用脚本控制的变量都不可加入到property和Cbuffer中,可能会出现奇奇怪怪的现象。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值