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

    接触阴影 (Contact Shadows)

    接触阴影体积覆盖 (Contact Shadows Volume Override) 指定用于控制接触阴影行为的属性。接触阴影是高清渲染管线 (High Definition Render Pipeline, HDRP) 光线在深度缓冲区内的屏幕空间中行进的阴影。使用接触阴影的目的是捕获常规阴影贴图算法无法捕获的小细节。

    启用接触阴影

    要在场景中使用此功能,必须先为项目启用此功能,然后为摄像机启用此功能。要在项目中启用功能,请使用 HDRP 资源,而要为摄像机启用功能,请使用帧设置 (Frame Settings)。您可以使用默认帧设置 (Default Frame Settings) 为所有摄像机启用功能,或者通过覆盖每个摄像机单独的帧设置 (Frame Settings) 为特定摄像机启用功能。

    对于此功能: 要在 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 创作一种不会写入到深度缓冲区的材质。

    API

    要在运行时访问和控制此覆盖,请使用体积脚本 API。由于体积系统的工作原理,可以使用与标准 Unity 组件不同的方式来编辑属性。也需要注意其他细微差别,例如每个属性都有一个 overrideState。这个参数向体积系统指示是使用你设置的属性值,还是使用存储在体积配置文件中的默认值。有关如何正确使用 API 的信息,请参阅体积脚本 API。

    属性

    要编辑任何 Volume 组件覆盖中的属性,请启用属性左侧的复选框。这也告诉 HDRP 使用您为 Volume 组件指定的属性值而不是使用默认值。如果禁用该复选框,HDRP 将忽略您设置的属性,并改用该属性在 Volume 组件中的默认值。

    属性 描述
    Enable 启用此复选框可以使 HDRP 处理该体积的接触阴影。
    Length 使用滑动条设置 HDRP 要追踪的光线长度(以米为单位)。还可以作为光线能够捕捉细节的最大距离。
    Distance Scale Factor HDRP 按距离放大接触阴影。请使用滑动条设置 HDRP 用于抑制该缩放比例(以避免因距离而产生瑕疵)的值。
    Min Distance 与摄像机之间的距离(以米为单位):HDRP 从此距离处开始淡入接触阴影。
    Max Distance 与摄像机之间的距离(以米为单位):HDRP 从此距离处开始将接触阴影淡出为零。
    Fade In Distance HDRP 在超过 Min Distance 时开始淡入接触阴影的距离(以米为单位)。
    Fade Out Distance HDRP 从 Max Distance 位置开始淡出接触阴影的距离(以米为单位)。
    Opacity 使用滑动条设置接触阴影的不透明度。值越小,阴影越柔和、越不明显。
    Bias 控制应用于屏幕空间射线投射的偏差以获取接触阴影。较大的值可以减少自身阴影,但是太大的值会导致阴影悬浮问题,这对于接触阴影而言是尤其不希望看到的结果。
    Thickness 控制沿射线发现的对象的厚度,从而实质上增加接触阴影的厚度。可以用来填充阴影中的孔洞,但是也可能会导致阴影过宽。
    Quality 指定用于此效果的质量级别。每个质量级别应用不同的预设值。Unity 还会阻止你编辑预设覆盖的属性。如果你希望为每个属性设置自己的值,请选择 Custom。
    Sample Count 使用滑动条设置 HDRP 用于光线投射的样本数。增大此值会提高质量,但也会降低性能。

    详细信息

    • 对于网格渲染器 (Mesh Renderer) 组件,将 Cast Shadows 设置为 Off 不会影响接触阴影。

    • 在 1080p 的基本款 PS4 上,接触阴影的可变成本在 0.5 到 1.3 毫秒之间。

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