可脚本化渲染管线一系列操作,用于获取场景的内容并在屏幕上显示它们。Unity 允许您选择预构建的渲染管线或编写自己的渲染管线。 更多信息
参见 术语表 (SRP) 批处理是一种 绘制调用优化,可显着提高使用 SRP 的应用程序的性能。SRP 批处理减少了 Unity 准备和分派使用相同着色器在 GPU 上运行的程序。 更多信息
参见 术语表变体的材质的绘制调用所需的 CPU 时间。
本节包含有关 SRP 批处理的渲染管线兼容性的信息。
特性 | 通用渲染管线 (URP) | 高清渲染管线 (HDRP) | 自定义可脚本化渲染管线 (SRP) | 内置渲染管线 |
---|---|---|---|---|
SRP 批处理 | 是 | 是 | 是 | 否 |
优化绘制调用的传统方法是减少绘制调用的数量。相反,SRP 批处理减少了绘制调用之间的渲染状态更改。为此,SRP 批处理组合了一系列 bind
和 draw
GPU 命令。每个命令序列称为 SRP 批处理。
为了获得渲染的最佳性能,每个 SRP 批处理应包含尽可能多的 bind
和 draw
命令。为此,请尽可能减少着色器变体的数量。您仍然可以使用任意数量的不同材质,但它们必须使用相同的着色器。
当 Unity 在渲染循环中检测到新的材质时,CPU 会收集所有属性并将它们绑定到 GPU 的常量缓冲区中。GPU 缓冲区的数量取决于着色器如何声明其常量缓冲区。
SRP 批处理是一个低级渲染循环,它使材质数据在 GPU 内存中保持持久化。如果材质内容没有更改,则 SRP 批处理不会进行任何渲染状态更改。相反,SRP 批处理使用专用代码路径来更新 Unity 引擎属性到一个大型 GPU 缓冲区中,如下所示
在此,CPU 只处理 Unity 引擎属性,在上图中标记为 **每个对象的大型缓冲区**。所有材质都具有位于 GPU 内存中的持久常量缓冲区,这些缓冲区随时可用。这加快了渲染速度,因为