Version: 6000.3
语言: 中文
将渲染器功能添加到URP渲染器
渲染对象 URP 渲染器功能参考

在 URP 中使用 Render Objects Renderer 功能创建自定义渲染效果的示例

渲染对象渲染器功能允许您在帧渲染循环中的特定点绘制对象。您可以以不同的方式解释和写入渲染数据(如深度和模具),或绘制一组游戏对象Unity 场景中的基本对象,可以表示角色、道具、风景、相机、航路点等。游戏对象的功能由附加到它的组件定义。更多信息
请参阅术语表
在某个时间。

以下示例使用渲染对象渲染器功能以不同的颜色绘制游戏对象(如果它位于其他游戏对象后面)。

由 3 个简单的身体和手臂胶囊创建的角色。角色是红色的,但当它移动到墙后时,隐藏的部分会呈现为蓝色。
由 3 个简单的身体和手臂胶囊创建的角色。角色是红色的,但当它移动到墙后时,隐藏的部分会呈现为蓝色。

首先,创建一个游戏对象并将其附加到新的Unity 中的层可用于有选择地选择游戏对象组加入或退出某些进程或计算。这包括相机渲染、光照、物理碰撞或您自己的代码中的自定义计算。更多信息
请参阅术语表
.

  1. 场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为一个独特的关卡。在每个场景中,你放置你的环境、障碍物和装饰品,基本上是将你的游戏设计和构建成碎片。更多信息
    请参阅术语表
    .
  2. 检查器一个 Unity 窗口,显示有关当前选定游戏对象、资产或项目设置的信息,允许您检查和编辑值。更多信息
    请参阅术语表
    窗口中,打开 图层(Layer) 下拉列表并添加一个新图层。您可以将图层称为 DrawBehind
  3. 将游戏对象设置为新层。

接下来,创建一个 渲染对象渲染器功能(Render Objects Renderer Feature) ,该功能仅渲染场景顶部的新图层。

  1. 在 项目(Project) 窗口中,选择项目使用的 URP 渲染器资源,例如 设置(Settings) > PC_Renderer
  2. 若要创建渲染对象渲染器功能,请在检查器窗口中选择“添加渲染器功能”,然后选择“渲染对象”
  3. 要使渲染器功能仅绘制具有游戏对象的图层,请打开 Render Objects (Render Objects) 下拉列表,然后将图层蒙版定义要从作(例如渲染、碰撞或您自己的代码)中包含或排除哪些图层的值。更多信息
    请参阅术语表
    到图层。
  4. Event 设置为 AfterRenderingOpaques 注入点。有关自定义通道注入点的更多信息,请参阅自定义通道注入点

接下来,调整渲染器功能,使其仅呈现隐藏在其他游戏对象后面的部分,并以不同的颜色呈现。

  1. 打开 覆盖(Overrides) 下拉菜单,然后选择 深度(Depth) 并将 深度测试(Depth Test) 设置为 更大(Greater)。

    渲染器功能现在仅渲染像素计算机图像中的最小单位。像素大小取决于您的屏幕分辨率。像素光照是在每个屏幕像素下计算的。更多信息
    请参阅术语表
    如果其深度大于深度缓冲区 保存图像中每个像素的 z 值深度的内存存储,其中 z 值是投影平面中每个呈现像素的深度。更多信息
    请参阅术语表
    ,这意味着新像素位于另一个游戏对象后面。

  2. 创建一个使用普遍渲染管线获取场景内容并将其显示在屏幕上的一系列作。Unity 允许您从预构建的渲染管线中进行选择,或编写自己的渲染管线。更多信息
    请参阅术语表
    /未点燃的
    着色器在 GPU 上运行的程序。更多信息
    请参阅术语表
    .

  3. 底图颜色设置为您选择的颜色。

  4. 在渲染器功能(Renderer Feature) 的 覆盖(Overrides) 分段中,将 材质(Material) 设置为你创建的材质。

当您将游戏对象移动到其他游戏对象后面时,Unity 现在会以您选择的颜色渲染隐藏部分。

红色字符在墙后移动。Unity 使用蓝色材质渲染隐藏部分。
红色字符在墙后移动。Unity 使用蓝色材质渲染隐藏部分。

修复游戏对象的重叠区域

如果使用复杂的游戏对象,渲染器功能可能会绘制重叠部分,就好像它们被隐藏一样。这是因为一个零件的深度大于重叠零件。

带有较小胶囊的胶囊。渲染器功能使用蓝色材质渲染较大胶囊体的一部分,因为它位于较小部分后面。
带有较小胶囊的胶囊。渲染器功能使用蓝色材质渲染较大胶囊体的一部分,因为它位于较小部分的后面。

若要解决此问题,请禁用渲染整个游戏对象,并创建一个新的渲染器功能来渲染非隐藏部分。按着这些次序:

  1. 在 URP 渲染器资源中,打开 不透明层遮罩(Opaque Layer Mask) 下拉菜单,并禁用你添加的层。

    Unity 现在不会在不透明渲染通道中绘制图层。渲染器功能仍会绘制隐藏部分,因为它位于不同的渲染通道中。

    Unity 不会绘制角色,除非它位于对象后面
    Unity 不会绘制角色,除非它位于对象后面
  2. 添加新的渲染对象渲染器功能。

  3. Layer Mask 设置为新图层,以便此渲染器功能绘制游戏对象。

  4. Event 设置为 AfterRenderingOpaques 注入点。

  5. 要避免第一个渲染器功能影响新渲染器功能中的深度计算,请在第一个渲染器功能的 覆盖(Overrides) 部分中禁用 写入深度(Write Depth)。

第一个渲染器功能绘制隐藏部分,第二个渲染器功能绘制游戏对象的其余部分。

由 3 个简单的身体和手臂胶囊创建的角色。角色是红色的,但当它移动到墙后时,隐藏的部分会呈现为蓝色。
由 3 个简单的身体和手臂胶囊创建的角色。角色是红色的,但当它移动到墙后时,隐藏的部分会呈现为蓝色。

其他资源

将渲染器功能添加到URP渲染器
渲染对象 URP 渲染器功能参考