使用距离场阴影

如何在虚幻引擎4中设置并使用距离场阴影。

Windows
MacOS
Linux

RTDFBanner.png

开发游戏时,您可能发现有时动态照明是用于关卡的最佳选择,例如,可视距离很大的关卡或者具有大型开放世界场景的关卡。在这类情况下,预计算照明可能效率很低或对于目标系统的资源要求过高。距离场阴影(Distance Field Shadows) 也称为 距离场阴影(Distance Field Shadow),与配合定向光源使用的传统 级联阴影贴图(Cascaded Shadow Map)(CSM)相比,它使您能够在更远的距离投射阴影。

在本指南中,您将学习如何为定向光源、点光源和聚光源等不同的光源类型启用距离场阴影。

步骤

该功能要求您在 项目设置(Project Settings)渲染(Rendering) 部分中启用 生成网格体距离场(Generate Mesh Distance Fields)。请在此处查看如何启用网格体距离场(Mesh Distance Field) (如果尚未启用)。

  1. 首先,导航至 模式(Modes) 窗口,在 光源(Lights) 部分中,选中 定向(Directional)聚(Spot)点(Point) 光源并将其拖动到主要视口中。

    AddLightType.png

    在任意光源组件上启用距离场阴影的过程与此相同。本指南的其他部分将介绍这些光源类型的特定属性。

  2. 选择好光源之后,导航至其 细节(Details) 面板并将它的“可移动性(Mobility)”设置为 可移动(Movable)静止(Stationary)

    TransformMobility.png

  3. 细节(Details) 面板的 距离场阴影(Distance Field Shadow) 下面,将 距离场阴影(Distance Field Shadows) 设置为启用。

    DirectionalLightDFSettings.png

    PointSpotLightSettingsDF.png

    定向光源

    聚/点光源

    如果该选项显示为灰色,确保先在“项目设置(Project Settings)”中启用 生成网格体距离场(Generate Mesh Distance Fields) 选项,然后确保光源的“可移动性(Mobility)”设置为 可移动(Movable)静止(Stationary)

最终结果

在将光源设置为“可移动(Movable)”或“静止(Stationary)”并将 距离场阴影(Distance Field Shadowing) 切换为启用后,在关卡中光源将自动使用它们。对于定向光源,将为超出级联阴影贴图(Cascaded Shadow Map)动态阴影距离(Dynamic Shadow Distance) 值的任意距离启用“距离场阴影(Distance Field Shadowing)”。

仅级联阴影贴图(Cascaded Shadow Maps)

级联阴影贴图(Cascaded Shadow Maps) | 和 | 距离场阴影(Distance Field Shadows)

在《堡垒之夜(Fortnite)》的这一测试关卡中,级联阴影贴图(CSM)动态阴影距离(Dynamic Shadow Distance) 是距离摄像机4500 cm(厘米),在启用“距离场阴影(Distance Field Shadowing)”之后,它们可以处理超出CSM阴影距离的任何阴影。 当仅使用CSM阴影处理方法时,远距离对象(例如法院大楼圆形石柱)会发生漏光,因为它位于阴影距离之外。远距离对象也将无法正确投射阴影。

使用定向光源时,将级联阴影贴图 动态阴影距离可移动光源(Dynamic Shadow Distance Moveable Light) 滑块设置为 0 非常有用,因为它使仅从网格体距离场产生阴影成为可能。 除了使用可视化视图模式以外,这也是一种测试场景和判断潜在的距离场质量问题的有用方式。

其他光源设置

请参阅距离场参考 来了解距离场阴影(Distance Field Shadowing)设置(特定于定向光源点/聚光源)。 这些设置使您能够对场景进行艺术控制,例如控制阴影的柔和度和阴影能够投射到的最远距离。也可进行一些特定于定向光源的全局调整,以去除场景中由距离摄像机较远的LOD(细节层次)网格体引起的自身阴影瑕疵。

标签

欢迎来到全新虚幻引擎4文档站!

我们正在努力开发新功能,包括反馈系统,以便您能对我们的工作作出评价。但它目前还未正式上线。如果您对此页面有任何意见与在使用中遭遇任何问题,请前往文档反馈论坛告知我们。

新系统上线运行后,我们会及时通知您的。

发表反馈意见