Version: 6000.3
语言: 中文
URP 中的可编写脚本渲染管线 (SRP) 批处理程序
检查游戏对象是否与 URP 中的 SRP Batcher 兼容

URP 中的可编写脚本渲染管线批处理程序

可编写脚本渲染管线(Render Pipeline) 获取场景内容并将其显示在屏幕上的一系列作。Unity 允许您从预构建的渲染管道中进行选择,或编写自己的渲染管道。更多信息
请参阅术语表
(建议零售价)Batcher 是一种绘制调用优化,可显著提高使用 SRP 的应用程序的性能。SRP Batcher 减少了 Unity 为使用相同材质准备和调度绘制调用所需的 CPU 时间着色器在 GPU 上运行的程序。更多信息
请参阅术语表
变体。

可编写脚本的渲染管线(SRP)批处理器减少了Unity渲染具有许多使用相同着色器变体的材质的场景所需的CPU时间。
可编写脚本的渲染管线(SRP)批处理器减少了Unity渲染具有许多使用相同着色器变体的材质的场景所需的CPU时间。

要求和兼容性

本部分包括有关 SRP Batcher 的渲染管线兼容性的信息。

渲染管线兼容性

特征 通用渲染管线(URP) 高清渲染管线 (HDRP) 自定义可编写脚本的渲染管线(SRP) 内置渲染管线
SRP 配料机 是的 是的 是的

SRP Batcher 的工作原理

优化绘制调用的传统方法是减少绘制调用的数量。相反,SRP Batcher 减少了绘制调用之间的渲染状态更改。为此,SRP Batcher 将一系列binddrawGPU 命令。每个命令序列称为 SRP 批处理。

绑定和绘制命令的批处理减少了绘制调用之间的 GPU 设置。
绑定和绘制命令的批处理减少了绘制调用之间的 GPU 设置。

为了实现最佳渲染性能,每个 SRP 批次应包含尽可能多的 SRP 批次binddraw命令。为此,请使用尽可能少的着色器变体。您仍然可以根据需要使用具有相同着色器的任意数量的不同材质。

当 Unity 在渲染循环期间检测到新材质时,CPU 会收集所有属性并将它们绑定到常量缓冲区中的 GPU。GPU 缓冲区的数量取决于着色器声明其常量缓冲区的方式。

SRP Batcher 是一个低级渲染循环,可使材质数据持久化在 GPU 内存中。如果材质内容未更改,则SRP Batcher不会进行任何渲染状态更改。相反,SRP Batcher 使用专用代码路径来更新大型 GPU 缓冲区中的 Unity Engine 属性,如下所示:

SRP Batcher 渲染工作流。SRP Batcher 使用专用代码路径来更新大型 GPU 缓冲区中的 Unity Engine 属性。
SRP Batcher 渲染工作流。SRP Batcher 使用专用代码路径来更新大型 GPU 缓冲区中的 Unity Engine 属性。

在这里,CPU 仅处理 Unity Engine 属性,在上图中标记为 Per Object large buffer。所有材质都有位于GPU内存中的持久常量缓冲区,这些缓冲区随时可用。这加快了渲染速度,因为:

  • 所有材质内容现在都保留在GPU内存中。
  • 专用代码为所有每个对象属性管理一个大型的每个对象 GPU 常量缓冲区。
URP 中的可编写脚本渲染管线 (SRP) 批处理程序
检查游戏对象是否与 URP 中的 SRP Batcher 兼容