接触阴影 (Contact Shadows)
接触阴影体积覆盖 (Contact Shadows Volume Override) 指定用于控制接触阴影行为的属性。接触阴影是高清渲染管线 (High Definition Render Pipeline, HDRP) 光线在深度缓冲区内的屏幕空间中行进的阴影。使用接触阴影的目的是捕获常规阴影贴图算法无法捕获的小细节。
启用接触阴影
[!include[](Snippets/Volume-Override-Enable.md)]对于此功能: 要在 HDRP 资源中启用的属性是:Lighting > Shadows > Use Contact Shadows。 要在帧设置 (Frame Settings) 中启用的属性是:Lighting > Contact Shadows。
使用接触阴影
接触阴影使用体积 (Volume) 框架,因此若要启用和修改接触阴影属性,必须将接触阴影覆盖添加到场景中的体积。要向体积添加接触阴影,请执行以下操作:
- 在 Scene 视图或 Hierarchy 视图中,选择一个包含 Volume 组件的游戏对象以在 Inspector 中查看该游戏对象。
- 在 Inspector 中,导航到 Add Override > Shadowing,然后单击 Contact Shadows。HDRP 现在会将接触阴影应用于此体积所影响的任何摄像机。
可以根据每个光源为方向光、点光源和聚光灯启用接触阴影。勾选每个光源的 Shadows 部分中 Contact Shadows 下拉选单下的 Enable 复选框,以指示 HDRP 应计算该光源的接触阴影。
一次只能有一个光源可以投射接触阴影。这意味着,如果有多个光源可以投射在屏幕上可见的接触阴影,则只有占据主导优势的光源会渲染接触阴影。HDRP 根据光源包围盒的屏幕空间大小来选择占主导优势的光源。投射接触阴影的方向光始终为占主导优势的光源。
注意:只要网格渲染器使用的材质会写入到深度缓冲区,光源便会投射接触阴影。这一点与您启用还是禁用网格渲染器上的 Cast Shadows 属性无关。这意味着,您可以对小型游戏对象/道具禁用 Cast Shadows 属性,但仍然让它们投射接触阴影。如果您不希望 HDRP 在阴影贴图中渲染这些游戏对象,则非常适合这样做。如果您不希望出现这种行为,请使用 Shader Graph 创作一种不会写入到深度缓冲区的材质。
属性
要编辑任何 Volume 组件覆盖中的属性,请启用属性左侧的复选框。这也告诉 HDRP 使用您为 Volume 组件指定的属性值而不是使用默认值。如果禁用该复选框,HDRP 将忽略您设置的属性,并改用该属性在 Volume 组件中的默认值。
属性 | 描述 |
---|---|
Enable | 启用此复选框可以使 HDRP 处理该体积的接触阴影。 |
Length | 使用滑动条设置 HDRP 要追踪的光线长度(以米为单位)。还可以作为光线能够捕捉细节的最大距离。 |
Distance Scale Factor | HDRP 按距离放大接触阴影。请使用滑动条设置 HDRP 用于抑制该缩放比例(以避免因距离而产生瑕疵)的值。 |
Max Distance | 与摄像机之间的距离(以米为单位):HDRP 从此距离处开始将接触阴影淡出为零。 |
Fade Distance | HDRP 从 Max Distance 位置开始淡出接触阴影的距离(以米为单位)。 |
Sample Count | 使用滑动条设置 HDRP 用于光线投射的样本数。增大此值会提高质量,但也会降低性能。 |
Opacity | 使用滑动条设置接触阴影的不透明度。值越小,阴影越柔和、越不明显。 |
详细信息
对于网格渲染器 (Mesh Renderer) 组件,将 Cast Shadows 设置为 Off 不会影响接触阴影。
在 1080p 的基本款 PS4 上,接触阴影的可变成本在 0.5 到 1.3 毫秒之间。