版本:Unity 6 (6000.0)
语言:English
URP 中的可脚本化渲染管线 (SRP) 批处理
检查游戏对象是否与 URP 中的 SRP 批处理兼容

URP 中的可脚本化渲染管线批处理

可脚本化渲染管线一系列操作,用于获取场景的内容并在屏幕上显示它们。Unity 允许您选择预构建的渲染管线或编写自己的渲染管线。 更多信息
参见 术语表
(SRP) 批处理是一种 绘制调用优化,可显着提高使用 SRP 的应用程序的性能。SRP 批处理减少了 Unity 准备和分派使用相同着色器在 GPU 上运行的程序。 更多信息
参见 术语表
变体的材质的绘制调用所需的 CPU 时间。

The Scriptable Render Pipeline (SRP) Batcher reduces the CPU time Unity requires to render scenes with many materials that use the same shader variant.
可脚本化渲染管线 (SRP) 批处理减少了 Unity 渲染包含许多使用相同着色器变体的材质的场景所需的 CPU 时间。

要求和兼容性

本节包含有关 SRP 批处理的渲染管线兼容性的信息。

渲染管线兼容性

特性 通用渲染管线 (URP) 高清渲染管线 (HDRP) 自定义可脚本化渲染管线 (SRP) 内置渲染管线
SRP 批处理

SRP 批处理的工作原理

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

The batching of bind and draw commands reduces the GPU setup between draw calls.
对 bind 和 draw 命令进行批处理减少了绘制调用之间的 GPU 设置。

为了获得渲染的最佳性能,每个 SRP 批处理应包含尽可能多的 binddraw 命令。为此,请尽可能减少着色器变体的数量。您仍然可以使用任意数量的不同材质,但它们必须使用相同的着色器。

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

SRP 批处理是一个低级渲染循环,它使材质数据在 GPU 内存中保持持久化。如果材质内容没有更改,则 SRP 批处理不会进行任何渲染状态更改。相反,SRP 批处理使用专用代码路径来更新 Unity 引擎属性到一个大型 GPU 缓冲区中,如下所示

The SRP Batcher rendering workflow. The SRP Batcher uses a dedicated code path to update the Unity Engine properties in a large GPU buffer.
SRP 批处理渲染工作流程。SRP 批处理使用专用代码路径将 Unity 引擎属性更新到一个大型 GPU 缓冲区中。

在此,CPU 只处理 Unity 引擎属性,在上图中标记为 **每个对象的大型缓冲区**。所有材质都具有位于 GPU 内存中的持久常量缓冲区,这些缓冲区随时可用。这加快了渲染速度,因为

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