屏幕空间反射 (Screen Space Reflection)
屏幕空间反射 (SSR) 覆盖是一种高清渲染管线 (High Definition Render Pipeline, HDRP) 功能,它使用屏幕的深度和颜色缓冲区来计算反射。如需了解 SSR 在 HDRP 中的工作原理,请参阅反射文档。
HDRP 在此覆盖的基础上实现光线追踪反射。这意味着在 Inspector 中可见的属性会根据是否启用光线追踪而变化。
启用屏幕空间反射
要在场景中使用此功能,必须先为项目启用此功能,然后为摄像机启用此功能。要在项目中启用功能,请使用 HDRP 资源,而要为摄像机启用功能,请使用帧设置 (Frame Settings)。您可以使用默认帧设置 (Default Frame Settings) 为所有摄像机启用功能,或者通过覆盖每个摄像机单独的帧设置 (Frame Settings) 为特定摄像机启用功能。
对于此功能: 要在 HDRP 资源中启用的属性是:Lighting > Reflections > Screen Space Reflection。 要在帧设置 (Frame Settings) 中启用的属性是:Lighting > Screen Space Reflection。
使用屏幕空间反射
HDRP 天空使用体积 (Volume) 框架来计算 SSR,因此若要启用和修改 SSR 天空属性,必须将屏幕空间反射覆盖添加到场景中的体积。要向体积添加屏幕空间反射,请执行以下操作:
- 在 Scene 视图或 Hierarchy 视图中,选择一个包含 Volume 组件的游戏对象以在 Inspector 中查看该游戏对象。
- 在 Inspector 中,导航到 Add Override > Lighting,然后单击 Screen Space Reflection。 HDRP 现在会为此体积所影响的任何摄像机计算 SSR。
API
要在运行时访问和控制此覆盖,请使用体积脚本 API。由于体积系统的工作原理,可以使用与标准 Unity 组件不同的方式来编辑属性。也需要注意其他细微差别,例如每个属性都有一个 overrideState。这个参数向体积系统指示是使用你设置的属性值,还是使用存储在体积配置文件中的默认值。有关如何正确使用 API 的信息,请参阅体积脚本 API。
属性
要编辑任何 Volume 组件覆盖中的属性,请启用属性左侧的复选框。这也告诉 HDRP 使用您为 Volume 组件指定的属性值而不是使用默认值。如果禁用该复选框,HDRP 将忽略您设置的属性,并改用该属性在 Volume 组件中的默认值。
在 Inspector 中可见的属性会根据是否为此效果启用了光线追踪而变化:
- 若要不使用光线追踪,而是改用屏幕空间反射解决方案,请在 Inspector 中禁用 Ray Tracing,并参阅屏幕空间部分的属性列表。
- 若要使用光线追踪,请在 Inspector 中启用 Ray Tracing,并参阅光线追踪部分的属性列表。
屏幕空间
属性 | 描述 |
---|---|
Enable | 指示 HDRP 是否处理此效果的体积影响下摄像机的 SSR。 |
Ray Tracing | 指示 HDRP 是否使用光线追踪来计算反射。如果启用此属性,它将完全改变此体积覆盖的实现方式,并显示出一组新的属性来控制光线追踪反射。 有关光线追踪反射的信息,请参阅光线追踪反射。 有关控制光线追踪反射的属性的信息,请参阅下面的光线追踪属性部分。 |
算法 | 指定用于屏幕空间反射效果的算法。选项包括: • Approximation:模拟屏幕空间反射以快速计算结果。此解决方案的精度不如 PBR Accumulation,特别是对于粗糙的表面,但是资源消耗较少。 • PBR Accumulation:累积多个帧以计算出更准确的结果。可以使用 Accumulation Factor 来控制累积量。由于采用累积,此解决方案可能会产生比 Approximation 更多的重影,并且还会占用更多资源。HDRP 不会将此算法应用于透明材质,而是始终使用 Approximation。 |
Minimum Smoothness | 使用滑动条设置 HDRP 执行 SSR 追踪的最小表面平滑度。较小的值会使 HDRP 对平滑度较低的游戏对象执行 SSR 追踪。如果像素的平滑度值小于此值,则 HDRP 会退回到反射层级视图中下一个可用的反射方法。 |
Smoothness Fade Start | 使用滑动条设置 SSR 反射开始淡出的平滑度值。较小的值会使 HDRP 对平滑度较低的游戏对象淡出 SSR 反射。此淡化的范围是 [Minimum Smoothness, Smoothness Fade Start]。 |
Reflect Sky | 指示 HDRP 是否应使用 SSR 处理天空反射。如果禁用此属性,则反射天空的像素将使用反射层级视图的下一个级别。 注意:SSR 使用深度缓冲区来计算反射,而 HDRP 不会将透明游戏对象添加到深度缓冲区。如果启用此属性,则颜色缓冲区中出现在天空上方的透明游戏对象可能会导致视觉瑕疵和不正确的反射效果。这是 SSR 技术的常见局限。 |
Screen Edge Fade Distance | 使用滑动条控制当光线的目标靠近屏幕边界时 HDRP 淡出屏幕空间反射的距离。增大此值可增大与屏幕边缘的距离(HDRP 在此距离处开始淡出光线目标的屏幕空间反射)。 |
Object Thickness | 使用滑动条控制屏幕上游戏对象的厚度。由于 SSR 算法无法区分薄的游戏对象和厚的游戏对象,该属性有助于追踪游戏对象背后的光线。算法将此属性统一应用于每个游戏对象。 |
Quality | 指定用于此效果的质量级别。每个质量级别应用不同的预设值。Unity 还会阻止你编辑预设覆盖的属性。如果你希望为每个属性设置自己的值,请选择 Custom。 |
- Max Ray Steps | 设置算法在停止尝试查找与网格的交集之前可以执行的最大迭代次数。例如,如果将迭代次数设置为 1000,而算法仅需要 10 次查找交集,则算法将在 10 次迭代后终止。如果将此值设置得太低,算法可能会过早终止并突然停止反射。 |
Accumulation Factor | 积累融合速度。0 表示无累积。1 表示累积非常慢,这对于固定图像很有用。积累越多,结果越准确,但移动时出现的重影也越多。使用累积时,重要的是需要在融合质量与重影瑕疵之间找到平衡。还要注意的是,较粗糙的反射表面需要更多的累积才能产生无噪点的聚合图像。 仅当 Algorithm 设置为 PBR Accumulation 时,才显示此属性。 |
光线追踪
属性 | 描述 |
---|---|
Reflect Sky | 启用此功能可向 HDRP 指定当光线找不到相交点时应将天空用作光线追踪反射的回退目标。 |
LayerMask | 定义需要 HDRP 处理该光线追踪效果的层。 |
Mode | 定义 HDRP 应以 Performance 还是 Quality 模式评估效果。 仅当 HDRP 资源中的 Supported Ray Tracing Mode 设置为 Both 时,才显示此属性。 |
Quality | 指定一个预设以供 HDRP 用于填充以下嵌套属性的值。选项包括: • Low:这是强调性能胜于质量的预设。 • Medium:这是在性能和质量之间达成平衡的预设。 • High:这是强调质量胜于性能的预设。 • Custom:允许分别覆盖每个属性。 仅当 Mode 设置为 Performance 时,才显示此属性。 |
Minimum Smoothness | 请参阅屏幕空间部分中的 Minimum Smoothness。 |
Smoothness Fade Start | 请参阅屏幕空间部分中的 Smoothness Fade Start。 |
Max Ray Length | 控制全局光照光线的最大长度。此值越高,光线追踪全局光照的成本就越高。如果光线找不到交叉点。 |
Clamp Value | 控制 HDRP 用来钳制预显示值的阈值。这会减小值的范围,并使反射对降噪更稳定,但会降低质量。 |
Upscale Radius | 控制 HDRP 用于构建反射的比例放大器的半径。半径越大,HDRP 用于构建反射的邻居越多,质量越好。 仅当 Mode 设置为 Performance 时,才显示此属性。 |
Full Resolution | 启用此功能可以将光线预算增加到每帧每像素一条光线。禁用此功能可以将光线预算降低到每帧每四个像素一条光线。 仅当 Mode 设置为 Performance 时,才显示此属性。 |
Sample Count | 控制每帧每像素的光线数。增大此值将线性增加执行时间。 仅当 Mode 设置为 Quality 时,才显示此属性。 |
Bounce Count | 控制反射光线可以反弹的次数。增大此值将呈指数增加执行时间。 仅当 Mode 设置为 Quality 时,才显示此属性。 |
Denoise | 启用由 HDRP 用于从反射中消除噪点的时空滤波器。 |
- Denoiser Radius | 控制时空滤波器的半径。增大该值将使结果更模糊和执行时间更长。 |
限制
屏幕空间反射
为了计算 SSR,HDRP 会读取包含上一帧生成的模糊 Mipmap 的颜色缓冲区。颜色缓冲区仅包含使用 BeforeRefraction 渲染通道的透明游戏对象。
如果透明材质启用了 Receive SSR Transparent,则 HDRP 始终使用 Approximation 算法来计算 SSR,即使选择 PBR Accumulation 也是如此。
光线追踪反射
目前,HDRP 中的光线追踪不支持贴花。这意味着,使用光线追踪反射时,贴花不会出现在反射表面中。