Unity的Post Processing Package

基于0.11.1-preview 4 版本

Quick Start

本节原文地址

Post-process Layer

在相机上启用后处理的第一件事,是向其添加Post-process Layer组件。该组件在【Component | Rendering】菜单下。

第一部分描述了此摄像机上的Post-process Layer组件中的 Volume blending 设置的各项属性:

  • Trigger:默认情况下,摄像机本身将被分配给挂接在它身上的Post-process Layer组件。在某些情况下,您可能希望使用除摄影机以外的其他节点来使用,例如,对于自上而下的游戏,您希望由玩家角色来驱动volume blending。将此字段设置为None会禁用该层的local volume,而global volume仍将起作用。
  • Layer:指定一个Layer集合名,当 Post Processing Volume (PPV) 的Layer名,是该指定的Layer集合名中的一个时,该PPV才会启用。默认情况下,它设置为Nothing。所以请不要忘记对其进行更改,否则PPV将无效。有关及其在Unity中的用法的更多信息,请参考此手册页。

接下来是为每个摄像机设置的抗锯齿功能。这样做而不是在项目中进行全局设置的好处是,您可以让相机仅在需要时使用抗锯齿功能。例如,您的主摄像机可能正在使用Temporal Anti-aliasing,但是用于渲染安全摄像机的辅助摄像机仅需要FXAA。有关抗锯齿的更多信息,请参见[专用效果页面]|(https://github.com/Unity-Technologies/PostProcessing/wiki/Anti-aliasing)。

  • Stop NaN Propagation 开关,当打开此开关时,将取出所有无效的或者NaN像素,并在应用后处理之前将其替换为黑色。通常,最好将此功能保持启用状态,以避免由场景中的数据损坏引起的后处理伪像。

  • Toolkit 该属性提供的一些工具。您可以使用以下模式之一,将当前帧导出为一个EXR文件:

  • Full Frame:照原样导出摄影机(如果位于“Game View”中显示的摄影机上,则导出看起来与“Game View”中显示的完全一样)。
  • Disable post-processing:与以前的模式相同,但未应用任何后处理。
  • Break before Color Grading(linear):与第一种模式相同,但是将在应用Color Grading之前停止渲染。如果要在外部软件中编写grading LUT,这将很有用。
  • Breaking before Color Grading(log): 与Break before Color Grading(linear) 模式相同,但是输出数据将以对数形式编码。这用于在外部软件中编写高精度的HDR分级LUT。
  • Select all layer volumes: 选择所有的影响本Post-process Layer的Post-process Volume组件
  • Select all active volumes: 选择所有的当前正在影响本Post-process Layer的Post-process Volume组件

Post-process Volumes(PPV)

在Unity Post Processing框架中,后处理的工作方式是使用局部PPV全局PPV。它可以为每个PPV赋予优先级,并设置一组效果覆盖以自动混合场景中的后处理设置。例如,您可以在全局范围内设置一个淡淡的晕影效果,但是当玩家进入一个洞穴时,如果该洞穴设置了一个局部PPV,且只设置了Intensity属性,则进入洞穴后,其他的属性不变但Intensity变得更加强烈。

所述后处理量组分可以被添加到任何游戏对象,相机本身包括在内。但通常为每个卷创建一个专用对象是一个好主意。让我们从创建一个全局的Post-process Volume开始。创建一个空的游戏对象并向其中添加组件(Component -> Rendering -> Pöst-process Volume)或使用GameObject -> 3D Object -> Post-process Volume。不要忘记将其添加到添加到相机的“ 后处理图层”组件中的遮罩集所使用的图层中。

默认情况下,它是完全空的。卷具有两种模式:

全局:全局体积没有任何边界,将应用于整个场景。您当然可以在场景中使用其中的几个。 本地卷:本地卷需要连接到其的对撞机或触发器组件来定义其边界。从立方体到复杂的凸面网格物体,任何类型的3D对撞机都可以使用,但我们建议您尽可能多地使用简单的碰撞体,因为遍历网格物体可能会非常昂贵。局部体积也可以具有一个Blend Distance,它表示与将开始混合的体积表面的外部距离。 在这种情况下,我们需要一个全局卷,因此我们启用它Is Global。

Weight 可用于减少体积及其所有替代的总体贡献,其中0完全没有贡献,1完全贡献。

该Priority字段定义堆栈中的数量顺序。此数字越高,卷具有的优先级越高。

我们还需要为该卷创建一个配置文件(或重新使用现有的配置文件)。让我们通过单击New按钮创建一个(也可以Create -> Post-processing Profile在项目窗口中使用)。它将在您的项目中创建为资产文件。要编辑配置文件内容,您可以选择此资产,也可以转到卷检查器,将其复制到该卷检查器中以便于访问。分配了个人资料后,您会看到一个新按钮,Clone。这将复制当前分配的配置文件并自动将其设置在卷上。当您要创建相同配置文件的快速变体时,这可能很方便(尽管您应该尽可能使用替代系统)。

现在,我们可以开始向堆栈添加效果替代。