环境光遮挡 (Ambient Occlusion)
环境光遮挡覆盖是一种可在高清渲染管线 (High Definition Render Pipeline, HDRP) 中使用的实时全屏光照效果。此效果模拟当前视野中的环境光遮挡。它根据场景中的光源和游戏对象周围的环境来模拟环境光在游戏对象表面上的强度和位置。为了实现这一点,此效果会使挨着折痕线、小孔、相交线和平行表面的地方变暗。在现实生活中,这些区域往往会阻挡或遮挡周围的光线,因此会显得更暗。
如需了解如何使用纹理指定由游戏对象材质中存在的细节而不是游戏对象表面几何体上的细节引起的环境光遮挡,请参阅环境光遮挡 (Ambient Occlusion)。
HDRP 在此覆盖的基础上实现光线追踪环境光遮挡。这意味着在 Inspector 中可见的属性会根据是否启用光线追踪而变化。
启用环境光遮挡
要在场景中使用此功能,必须先为项目启用此功能,然后为摄像机启用此功能。要在项目中启用功能,请使用 HDRP 资源,而要为摄像机启用功能,请使用帧设置 (Frame Settings)。您可以使用默认帧设置 (Default Frame Settings) 为所有摄像机启用功能,或者通过覆盖每个摄像机单独的帧设置 (Frame Settings) 为特定摄像机启用功能。
对于此功能: 要在 HDRP 资源中启用的属性是:Lighting > Screen Space Ambient Occlusion。 要在帧设置 (Frame Settings) 中启用的属性是:Lighting > Screen Space Ambient Occlusion。
使用环境光遮挡
环境光遮挡使用体积 (Volume) 框架,因此若要启用和修改环境光遮挡属性,必须将环境光遮挡覆盖添加到场景中的体积。要向体积添加环境光遮挡,请执行以下操作:
- 在 Scene 视图或 Hierarchy 视图中,选择一个包含 Volume 组件的游戏对象以在 Inspector 中查看该游戏对象。
- 在 Inspector 中,导航到 Add Override > Lighting,然后单击 Ambient Occlusion。 HDRP 现在会将环境光遮挡应用于此体积所影响的任何摄像机。
API
要在运行时访问和控制此覆盖,请使用体积脚本 API。由于体积系统的工作原理,可以使用与标准 Unity 组件不同的方式来编辑属性。也需要注意其他细微差别,例如每个属性都有一个 overrideState。这个参数向体积系统指示是使用你设置的属性值,还是使用存储在体积配置文件中的默认值。有关如何正确使用 API 的信息,请参阅体积脚本 API。
属性
要编辑任何 Volume 组件覆盖中的属性,请启用属性左侧的复选框。这也告诉 HDRP 使用您为 Volume 组件指定的属性值而不是使用默认值。如果禁用该复选框,HDRP 将忽略您设置的属性,并改用该属性在 Volume 组件中的默认值。
在 Inspector 中可见的属性会根据是否为此效果启用了光线追踪而变化:
- 若要不使用光线追踪,请在 Inspector 中禁用 Ray Tracing,并参阅屏幕空间部分的属性列表。
- 若要使用光线追踪,请在 Inspector 中启用 Ray Tracing,并参阅光线追踪部分的属性列表。
屏幕空间
属性 | 描述 |
---|---|
Ray Tracing | 指示 HDRP 是否使用光线追踪来计算环境光遮挡。如果启用此属性,它将完全改变此体积覆盖的实现方式,并显示出一组新的属性来控制光线追踪环境光遮挡。 有关光线追踪环境光遮挡的信息,请参阅光线追踪环境光遮挡。 有关控制光线追踪环境光遮挡的属性的信息,请参阅下面的光线追踪属性部分。 |
Intensity | 使用滑动条引导环境光遮挡的强度。值越高,结果越暗。HDRP 使用此值作为指数来评估像素对于环境光遮挡的最终值。 |
Direct Lighting Strength | 使用此滑动条更改遮挡对直接漫射光照的影响程度。 |
Radius | 使用滑动条设置 HDRP 在某个点附近搜索遮挡物的距离。设置较高的值可以使环境光遮挡覆盖较大规模特征。请注意,较大的距离值通常会产生较低的质量结果。注意:HDRP 将屏幕空间中的半径限制为您在 Maximum Radius in Pixels 中设置的值。 |
Quality | 指定一个预设以供 HDRP 用于填充以下嵌套属性的值。选项包括: • Low:这是强调性能胜于质量的预设。 • Medium:这是在性能和质量之间达成平衡的预设。 • High:这是强调质量胜于性能的预设。 • Custom:允许分别覆盖每个属性。 |
- Maximum Radius In Pixels | 使用滑动条设置 HDRP 搜索遮挡物的区域上限(以像素为单位)。该数值假定您使用的分辨率为 1920 x 1080。使用其他分辨率时,HDRP 会相应缩放该值。为实现良好的性能,请保持该值尽可能低。 |
- Full Resolution | 启用此复选框会以全分辨率处理环境光遮挡算法。这可以显著提高质量,但会占用大量资源,并且会影响性能。禁用此复选框会以应用程序运行的一半分辨率来处理环境光遮挡算法。默认情况下会禁用此设置。 |
- Step Count | HDRP 搜索遮挡物所需的步骤数。增大此值可产生更精确的结果。这通常会产生更暗的结果,因为 HDRP 会找到更多的遮挡物。 |
Temporal Accumulation | 指示 HDRP 是否随时间累积环境光遮挡的结果。这会产生更好的质量,但可能会导致诸如非即时收敛和重影之类的瑕疵。注意:如果没有运动矢量,此模式不会带来良好的结果。 |
- Direction Count | 确定要在多少个方向搜索遮挡,增加此值将大幅影响性能。 仅当禁用 Temporal Accumulation 时,才显示此属性。 |
- Blur sharpness | 确定非时间模糊的清晰度。较高的值可以更好地保留清晰特征(具有较高的噪点风险),较低的值可以使外观更柔和。 仅当禁用 Temporal Accumulation 时,才显示此属性。 |
- Bilateral Aggressiveness | 该值越高,空间过滤器对深度差的宽容度就越小,因此更有可能拒绝处于不同深度值的样本。增大此值可以减少在 AO 应位于对象周围的情况下白色光环。 仅当启用 Temporal Accumulation 时,才显示此属性。 |
- Ghosting Reduction | 此因子移到接近于 0 将在时间累积期间增加接受的样本数,从而增加重影,但会减少时间噪点。该值移到接近于 1 会减少重影,但代价是产生更明显的时间噪点。 仅当启用 Temporal Accumulation 时,才显示此属性。 |
- Bilateral Upsample | 启用此复选框可以通过双边上采样对低分辨率 AO 进行上采样。这样可以更好地保留锋利的边缘,但是成本稍高一些,并可能导致更明显的锯齿。 仅当启用 Temporal Accumulation 并禁用 Full Resolution 时,才显示此属性。 |
光线追踪
属性 | 描述 |
---|---|
Intensity | 请参阅屏幕空间部分中的 Intensity。 |
Direct Lighting Strength | 请参阅屏幕空间部分中的 Direct Lighting Strenght。 |
LayerMask | 定义需要 HDRP 处理该光线追踪效果的层。 |
Quality | 指定一个预设以供 HDRP 用于填充以下嵌套属性的值。选项包括: • Low:这是强调性能胜于质量的预设。 • Medium:这是在性能和质量之间达成平衡的预设。 • High:这是强调质量胜于性能的预设。 • Custom:允许分别覆盖每个属性。 |
- Max Ray Length | 控制 HDRP 用于光线追踪环境光遮挡的最大光线长度。这使你可以使用较小的比例、局部、环境光遮挡。 |
- Sample Count | 控制 HDRP 每帧每像素使用的光线数。增大此值将线性增加执行时间。 |
- Denoise | 启用由 HDRP 用于从环境光遮挡中消除噪点的时空滤波器。 |
- - Denoiser Radius | 控制时空滤波器的半径。较大的值可进一步降低噪点。 |
限制
屏幕空间环境光遮挡
这是一种屏幕空间效果,只处理屏幕上给定时间点的对象。这意味着视野外的对象无法在视觉上遮挡视图中的对象。有时可以在屏幕边缘看到这种情况。 渲染反射探针时,不支持屏幕空间环境光遮挡。