Unity-TA 成长之路(三)内置渲染管线-官方篇 - 使用 CommandBuffer 来扩展内置渲染管线

3,206 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

本篇为Unity官方文档的摘抄集合,为方便后续翻看。

包含有关在内置渲染管线中使用 CommandBuffer 的信息。有关在渲染管线中基于可编程渲染管线使用 CommandBuffer 的信息,请参阅在可编程渲染管线中调度和执行渲染命令

1、CommandBuffer 基础知识

CommandBuffer保存渲染命令列表(例如设置渲染目标或绘制给定网格)。可以指示 Unity 在内置渲染管线中的各个点安排和执行这些命令,因此,您可以自定义和扩展 Unity 的渲染功能。

图片.png

可以使用Graphics.ExecuteCommandBufferAPI 立即执行 CommandBuffer,也可以进行安排,让它们在渲染管线中的给定点执行。要安排它们,请使用Camera.AddCommandBufferAPI 与CameraEvent 枚举,以及Light.AddCommandBufferAPI 与LightEvent 枚举。要查看 Unity 何时执行以这种方式安排的 CommandBuffer,请参阅 CameraEvent 和 LightEvent 的执行顺序

有关可以使用 CommandBuffer 执行的命令的完整列表,请参阅 CommandBuffer API 文档。请注意,一些命令仅在某些硬件上受支持。例如,与光线追踪有关的命令仅在 DX12 中受支持。

2、Command Buffer 示例

图片.png

Unity 博客文章扩展 Unity 5 渲染管线:CommandBuffer 介绍了内置渲染管线中的 CommandBuffer,并包含示例项目和示例代码。它介绍如何使用 CommandBuffer 来实现几种不同的效果,并包含一个示例项目和示例代码。项目是为 Unity 的旧版本创建的,但原理相同。

3、CameraEvent 事件的执行顺序

CameraEvents 执行顺序取决于项目使用的渲染路径

3.1 延迟渲染路径

3.2 前向渲染路径

4、LightEvent 执行顺序

在上面的“渲染阴影”阶段,对于每个投射阴影的光源,Unity 执行以下步骤: