docs.unity3d.com
    显示 / 隐藏目录

    接触阴影 (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) 框架,因此若要启用和修改接触阴影属性,必须将接触阴影覆盖添加到场景中的体积。要向体积添加接触阴影,请执行以下操作:

    1. 在 Scene 视图或 Hierarchy 视图中,选择一个包含 Volume 组件的游戏对象以在 Inspector 中查看该游戏对象。
    2. 在 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 毫秒之间。

    返回到顶部
    Copyright © 2023 Unity Technologies — 商标和使用条款
    • 法律条款
    • 隐私政策
    • Cookie
    • 不要出售或分享我的个人信息
    • Your Privacy Choices (Cookie Settings)