Version: Unity 6.0 (6000.0)
语言 : 中文
对 URP 中的 SRP 批处理程序进行故障排除
减少 URP 中 CPU 上的渲染工作

删除 URP 中游戏对象的 SRP 批处理程序兼容性

在某些极少数情况下,您可能希望故意使特定游戏对象与 SRP 批处理程序 (SRP Batcher) 不兼容。例如,如果要使用与 SRP Batcher 不兼容的 GPU 实例化。如果要使用完全相同的材质渲染许多相同的网格,GPU 实例化可能比 SRP Batcher 更高效。要使用 GPU 实例化,必须:

有两种方法可以从游戏对象中删除与 SRP Batcher 的兼容性:

  • 使着色器不兼容。
  • 使渲染器不兼容。

提示:如果使用 GPU 实例化而不是 SRP Batcher,请使用性能分析器 (Profiler) 确保 GPU 实例化比 SRP Batcher 对应用程序更加有效。

删除着色器兼容性

可以使手动编写的着色器和 Shader Graph 着色器与 SRP Batcher 不兼容。但是,对于 Shader Graph 着色器,如果经常更改和重新编译 Shader Graph,则让渲染器不兼容是更简单的选择。

要使 Unity 着色器与 SRP Batcher 不兼容,需要对着色器源文件进行更改:

  1. 对于手动编写的着色器,请打开着色器源文件。对于 Shader Graph 着色器,请将 Shader Graph 的编译着色器源代码复制到新的着色器源文件中。在应用程序中使用新的着色器源文件,而不是 Shader Graph。
  2. 将新的材质属性声明添加到着色器的 Properties 代码块中。切勿在 UnityPerMaterial 常量缓冲区中声明新材质属性。

材质属性不需要执行任何操作;如果仅具有 UnityPerMaterial 常量缓冲区中不存在的材质属性,那么着色器会与 SRP Batcher 不兼容。

警告:如果使用 Shader Graph,请注意,每次编辑和重新编译 Shader Graph 时,都必须重复此过程。

删除渲染器兼容性

可以使单独的渲染器与 SRP Batcher 不兼容。为此,请将 MaterialPropertyBlock 添加到渲染器。

对 URP 中的 SRP 批处理程序进行故障排除
减少 URP 中 CPU 上的渲染工作