命令缓冲区可保存一组渲染命令。您可以指示 Unity 调度和执行这些命令。
本页包含有关在内置渲染管线中使用命令缓冲区的信息。有关在可编程渲染管线中使用命令缓冲区的信息,请参阅在可编程渲染管线中调度和执行渲染命令。
有关可以使用命令缓冲区执行的命令的完整列表,请参阅 CommandBuffer API 文档。请注意,一些命令仅在某些硬件上受支持。例如,与射线追踪有关的命令仅在 DX12 中受支持。
可以使用 Graphics.ExecuteCommandBuffer API 立即执行命令缓冲区。
在内置渲染管线中,可以在渲染循环中的特定时间执行命令缓冲区。为此,请将 Camera.AddCommandBuffer API 与 CameraEvent 枚举一起使用,并将 Light.AddCommandBuffer API 与 LightEvent 枚举一起使用。
例如,可以将命令缓冲区与 AfterGBuffer CameraEvent 结合使用,从而将其他游戏对象渲染到延迟管线中(在管线处理所有不透明的游戏对象之后)。
执行顺序取决于项目使用的渲染路径。
| 延迟渲染路径 | |
|---|---|
| BeforeGBuffer | |
| Unity 渲染不透明几何体。 | |
| AfterGBuffer | |
| Unity 解析深度。 | |
| BeforeReflections | |
| Unity 渲染默认反射。 | |
| Unity 渲染反射探针反射。 | |
| AfterReflections | |
| Unity 将反射复制到 G 缓冲区的 Emissive 通道。 | |
| BeforeLighting | |
| Unity 渲染阴影。请参阅 LightEvent 执行顺序。 | |
| AfterLighting | |
| BeforeFinalPass | |
| Unity 对最终通道进行处理。 | |
| AfterFinalPass | |
| BeforeForwardOpaque(仅当存在无法以延迟方式渲染的不透明几何体时调用) | |
| Unity 渲染无法以延迟方式渲染的不透明几何体。 | |
| AfterForwardOpaque(仅当存在无法以延迟方式渲染的不透明几何体时调用) | |
| BeforeSkybox | |
| Unity 渲染天空盒。 | |
| AfterSkybox | |
| Unity 渲染光环。 | |
| BeforeImageEffectsOpaque | |
| 如果使用 Post-processing Stack V2 包,则 Unity 会应用仅限不透明的后期处理效果。 | |
| AfterImageEffectsOpaque | |
| BeforeForwardAlpha | |
| Unity 会渲染透明几何体以及具有 Screen Space - Camera 渲染模式的 UI 画布。 | |
| AfterForwardAlpha | |
| BeforeHaloAndLensFlares | |
| Unity 渲染镜头光晕。 | |
| AfterHaloAndLensFlares | |
| BeforeImageEffects | |
| 如果使用 Post-processing Stack V2 包,则 Unity 会应用后期处理效果。 | |
| AfterImageEffects | |
| AfterEverything | |
| Unity 对渲染模式不是 Screen Space - Camera 的 UI 画布进行渲染。 | |
| 前向渲染路径 |
|---|
| BeforeDepthTexture |
| Unity 渲染不透明几何体的深度。 |
| AfterDepthTexture |
| BeforeDepthNormalsTexture |
| Unity 渲染不透明几何体的深度法线。 |
| AfterDepthNormalsTexture |
| Unity 渲染阴影。请参阅 LightEvent 执行顺序。 |
| BeforeForwardOpaque |
| Unity 渲染不透明几何体。 |
| AfterForwardOpaque |
| BeforeSkybox |
| Unity 渲染天空盒。 |
| AfterSkybox |
| Unity 渲染光环。 |
| BeforeImageEffectsOpaque |
| 如果使用 Post-processing Stack V2 包,则 Unity 会应用仅限不透明的后期处理效果。 |
| AfterImageEffectsOpaque |
| BeforeForwardAlpha |
| Unity 会渲染透明几何体以及具有 Screen Space - Camera 渲染模式的 UI 画布。 |
| AfterForwardAlpha |
| BeforeHaloAndLensFlares |
| Unity 渲染镜头光晕。 |
| AfterHaloAndLensFlares |
| BeforeImageEffects |
| 如果使用 Post-processing Stack V2 包,则 Unity 会应用后期处理效果。 |
| AfterImageEffects |
| AfterEverything |
| Unity 对渲染模式为 Screen Space - Camera 的 UI 画布进行渲染。 |
在上面的“渲染阴影”阶段,对于每个投射阴影的光源,Unity 执行以下步骤:
| BeforeShadowMap | |
|
BeforeShadowMapPass Unity 渲染当前通道的所有阴影投射物 AfterShadowMapPass |
对每个通道进行重复 |
| AfterShadowMap | |
| BeforeScreenSpaceMask | |
| Unity 将阴影贴图收集到屏幕空间缓冲区中并执行过滤 | |
| AfterScreenSpaceMask | |