1,概念
SRP Batcher【Scriptable Render Pipeline Batcher】是一种drawcall上的优化,可显著提升使用SRP的应用的性能。针对那些使用相同shader变种的材质,它节省了unity需要为这些材质准备和分发drawCall所用的CPU时间。
2,要求与兼容性
1,渲染管线的兼容:支持的管线:URP,HDRP,SRP, 不支持的:BRP
2,物体的兼容性:
在任何给定的场景中,有些物体兼容SRPBatcher,有些不能。兼容的物体使用SRP Batcher的渲染路径,而那些非兼容的物体使用的是标准的SRP渲染路径。
物体要兼容SRPBatcher渲染路径,必须要符合如下条件:
(1),物体必须要包含mesh或者skinned mesh,不能是粒子
(2),物体不能使用MaterialPropertyBlocks
(3),物体使用的Shader必须和SRPBatcher兼容
3,Shader的兼容性
HDRP和URP中所有lit和unit Shader都符合条件如下(除了粒子版本的Shader)
针对一个要兼容SRPBatcher自定义的Shader,必须要符合如下条件:
(1),Shader必须要将所有的内置引擎的属性统一定义在单一的名为UnityPerDraw的常量缓冲区中。比如,unity_ObjectToWorld, or unity_SHAr
(2),Shader必须要将所有的材质属性命名在单一的名为UnityPerMaterial的常量缓冲区内。
你可以在Shader的Inspector Panel中检查其兼容性。如下图:
3,使用SRPBatcher
此章节中将阐述如何在Unity预制的SRP中使用SRPBather
1,在URP中使用SRPBatcher
在URP中激活SRPBather
(1),在Project Setting面板中,选择URP Asset:
(2),在选中的URPAsset的Inspector面板中,启用SRPBatcher.
如果没有上述选型,则按照如下介绍的方法做:
如何在URPAsset中显示附加属性
unity在URP Asset中默认不显示某些高级属性,要查看所有的可用属性,可执行如下操作;
在URP Asset中,任何一个部分,点击垂直省略号图标,选择“Show Additional Propertiese"
unity会显示当前部分所有可用的属性
要显示所有部分的所有附加属性,按照如下方法去做:
(1),在unity的Preferences窗口,选择Core Render Pipeline选项。
(2), 查看路径 Additional Properties-》Visibility,选择All Visbile
2,在HDRP中使用SRPBatcher
当你使用HDRP时,unity默认开启了SRPBatcher。不推荐禁用SRPBatcher。然而,你可能为了调试等目的而临时想禁用SRPBatcher。
下面介绍如何在Editor构建时启用和禁用SRPBatcher.
(1),在project Setting面板中,选择HDRP Asset
(2),选择Debug Mode.如下图:
(3),按需要选择enable或者disable.
在运行时也可以启用和禁用SRP Batcher