Version: 6000.3
语言: 中文
渲染到 URP 渲染循环之外的渲染纹理
URP 中的运动矢量

URP 中的摄像机渲染顺序

本页介绍通用渲染管线(Render Pipeline) 获取场景内容并将其显示在屏幕上的一系列作。Unity 允许您从预构建的渲染管道中进行选择,或编写自己的渲染管道。更多信息
请参阅术语表
(URP)相机在场景中创建特定视点图像的组件。输出要么绘制到屏幕上,要么作为纹理捕获。更多信息
请参阅术语表
执行以下作:

清除颜色和深度缓冲区

在通用渲染管线(URP)中,摄像机清除行为取决于摄像机的渲染类型

基础摄像头

颜色缓冲区

在其渲染循环开始时,具有 基础渲染类型(Base Render Type) 的摄像机可以将其颜色缓冲区清除为天空盒(Skybox) 一种特殊类型的材质,用于表示天空。通常是六面的。更多信息
请参阅术语表
,将其颜色缓冲区清除为纯色,或使用未初始化的颜色缓冲区。当“渲染类型”设定为“基础”时,你可以使用摄像机检查器中的“背景类型”属性来定义此行为。

请注意,未初始化的颜色缓冲区的内容因平台而异。在某些平台上,单元化颜色缓冲区将包含来自前一帧的数据。在其他平台上,单元化颜色缓冲区将包含未初始化的内存。仅当摄像机绘制到每个像素计算机图像中的最小单位。像素大小取决于您的屏幕分辨率。像素光照是在每个屏幕像素下计算的。更多信息
请参阅术语表
,并且您不希望产生不必要的清除作的成本。

深度缓冲区

基础相机始终清除其深度缓冲区 保存图像中每个像素的 z 值深度的内存存储,其中 z 值是投影平面中每个呈现像素的深度。更多信息
请参阅术语表
在每个渲染循环的开始时。

叠加相机

颜色缓冲区

在其渲染循环开始时,叠加摄像机会接收一个颜色缓冲区,其中包含来自摄像机堆栈中先前摄像机的颜色数据。它不会清除颜色缓冲区的内容。

深度缓冲区

在其渲染循环开始时,叠加摄像机会接收一个深度缓冲区,其中包含来自摄像机堆栈中先前摄像机的深度数据。当“渲染类型”设定为“叠加”时,你可以使用摄像机检查器中的“清除深度”属性来定义此行为。

清除深度(Clear Depth) 设置为 true 时,叠加摄像机将清除深度缓冲区,并将其视图绘制到任何现有颜色数据之上的颜色缓冲区。当 清除深度(Clear Depth) 设置为 false 时,叠加摄像机(Overlay Camera) 会先测试深度缓冲区,然后再将其视图绘制到颜色缓冲区。

剔除和渲染

如果您的 URP场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为一个独特的关卡。在每个场景中,您可以放置环境、障碍物和装饰,实质上是分批设计和构建游戏。更多信息
请参阅术语表
包含多个摄像机时,Unity 会以可预测的顺序执行其剔除和渲染作。

Unity 每帧执行一次以下作:

  1. Unity 获取场景中所有活动基础摄像机的列表。
  2. Unity 将活动的 Base Camera 组织成 2 组:将其视图渲染为渲染纹理(Render Textures)一种特殊类型的纹理,在运行时创建和更新。要使用它们,请先创建一个新的渲染纹理,并指定要渲染到其中的摄像机之一。然后,你可以在材质中使用渲染纹理,就像使用常规纹理一样。更多信息
    请参阅术语表
    ,以及将其视图渲染到屏幕上的摄像机。
  3. Unity 将渲染到 Render Textures 的 Base Camera 按 Priority 顺序排序,以便最后绘制具有较高 Priority 值的相机。
  4. 对于渲染到渲染纹理的每个基础相机,Unity 会执行以下步骤:
    1. 剔除基础摄像机(Cull the Base Camera)
    2. 将基础摄像机渲染到渲染纹理
    3. 对于属于基础摄像机摄像机堆栈的每个叠加摄像机,按照摄像机堆栈中定义的顺序:
      1. 剔除叠加摄像机(Cull the Overlay Camera)
      2. 将叠加摄像机渲染到渲染纹理
  5. Unity 将渲染到屏幕的基本相机按优先级顺序排序,以便最后绘制具有较高优先级值的相机。
  6. 对于渲染到屏幕的每个基础相机,Unity 会执行以下步骤:
    1. 剔除基础摄像机(Cull the Base Camera)
    2. 将基础摄像机渲染到屏幕
    3. 对于属于基础摄像机摄像机堆栈的每个叠加摄像机,按照摄像机堆栈中定义的顺序:
      1. 剔除叠加摄像机(Cull the Overlay Camera)
      2. 将叠加摄像机渲染到屏幕

Unity 可以在一帧内多次渲染叠加摄像机的视图 - 因为叠加摄像机出现在多个摄像机堆栈中,或者因为叠加摄像机多次出现在同一个摄像机堆栈中。发生这种情况时,Unity 不会重用剔除或渲染作的任何元素。按照上述详细顺序完整重复这些作。

注意:在此版本的 URP 中,仅在使用通用渲染器时才支持 叠加摄像机(Overlay Cameras) 和摄像机堆叠(Camera Stacking)。如果使用 2D 渲染器,覆盖摄像机将不会执行其渲染循环的任何部分。

渲染顺序优化

URP 在摄像机中执行多项优化,包括渲染顺序优化以减少过度绘制。但是,使用摄像机堆栈时,可以有效地定义这些摄像机的渲染顺序。因此,您必须小心不要以导致过度过度绘制的方式对摄像机进行排序。

当相机堆栈中的多个相机渲染到同一渲染目标时,Unity 会为相机堆栈中的每个相机绘制渲染目标中的每个像素。此外,如果多个基础相机或相机堆栈渲染到同一渲染目标的同一区域,则 Unity 会根据每个基础相机或相机堆栈的要求再次绘制重叠区域中的任何像素。

您可以使用 Unity 的帧调试器或特定于平台的帧捕获和调试工具来了解场景中发生过度绘制的位置。然后,你可以相应地优化摄像机堆栈。

其他资源

渲染到 URP 渲染循环之外的渲染纹理
URP 中的运动矢量