包含此页的版本:
不含此页的版本:
可编写脚本渲染管线(Render Pipeline) 获取场景内容并将其显示在屏幕上的一系列作。Unity 允许您从预构建的渲染管道中进行选择,或编写自己的渲染管道。更多信息
请参阅术语表(建议零售价)Batcher 是一种绘制调用优化,可显著提高使用 SRP 的应用程序的性能。SRP Batcher 减少了 Unity 为使用相同材质准备和调度绘制调用所需的 CPU 时间着色器在 GPU 上运行的程序。更多信息
请参阅术语表变体。
本部分包括有关 SRP Batcher 的渲染管线兼容性的信息。
| 特征 | 通用渲染管线(URP) | 高清渲染管线 (HDRP) | 自定义可编写脚本的渲染管线(SRP) | 内置渲染管线 |
|---|---|---|---|---|
| SRP 配料机 | 是的 | 是的 | 是的 | 不 |
优化绘制调用的传统方法是减少绘制调用的数量。相反,SRP Batcher 减少了绘制调用之间的渲染状态更改。为此,SRP Batcher 将一系列bind和drawGPU 命令。每个命令序列称为 SRP 批处理。
为了实现最佳渲染性能,每个 SRP 批次应包含尽可能多的 SRP 批次bind和draw命令。为此,请使用尽可能少的着色器变体。您仍然可以根据需要使用具有相同着色器的任意数量的不同材质。
当 Unity 在渲染循环期间检测到新材质时,CPU 会收集所有属性并将它们绑定到常量缓冲区中的 GPU。GPU 缓冲区的数量取决于着色器声明其常量缓冲区的方式。
SRP Batcher 是一个低级渲染循环,可使材质数据持久化在 GPU 内存中。如果材质内容未更改,则SRP Batcher不会进行任何渲染状态更改。相反,SRP Batcher 使用专用代码路径来更新大型 GPU 缓冲区中的 Unity Engine 属性,如下所示:
在这里,CPU 仅处理 Unity Engine 属性,在上图中标记为 Per Object large buffer。所有材质都有位于GPU内存中的持久常量缓冲区,这些缓冲区随时可用。这加快了渲染速度,因为: