Language:
Page Info
Tags:
Engine Version:
Share

移动平台的照明

在虚幻引擎4(UE4)的移动平台上使用光源时,有一些必须遵守的限制,它们可以确保您的项目在各种移动设备上以正确的帧率运行。在下面的文档中,我们将介绍如何为UE4移动平台项目设置光照。

支持的功能

移动平台支持以下列出的功能:

  • 线性 HDR 照明。

  • 定向光照图(考虑法线)。

  • 距离场阴影 + 太阳的分析镜面反射

  • 基于图像的镜面反射照明 - 最近反射采集 应用于每个对象,无视差纠正。 

  • 动态对象可以正确接收照明,但不能投射阴影。

支持的移动光源类型

下表列出了在移动设备上工作的光源的类型和数量。 

静态光源

光源类型

移动性

支持的数量

项目设置标记

其他信息

定向

静态

无限制

允许静态照明

最佳性能。光源和阴影烘焙到定向光照贴图中。质量降低。

静态

无限制

允许静态照明

最佳性能。光源和阴影烘焙到定向光照贴图中。质量降低。

聚光

静态

无限制

允许静态照明

最佳性能。光源和阴影烘焙到定向光照贴图中。质量降低。

固定光源

光源类型

移动性

支持的数量

项目设置标记

其他信息

定向

固定

1

允许静态照明

最佳质量。预计算Signed Distance Field Soft Shadows(@@@)

固定

不支持

允许静态照明

不支持固定移动性,将被视为移动性 = 静态。

聚光

固定

不支持

允许静态照明

不支持固定移动性,将被视为移动性 = 静态。

可移动光源

光源类型

移动性

支持的数量

项目设置标记

其他信息

定向

可移动

1

支持可移动定向光源

仅支持调制阴影 使用调制阴影 或无阴影。

可移动

最多4个

使用共享可移动聚光源/点光源着色器

不支持阴影。

聚光  *

可移动

最多4个

支持可移动聚光源

不支持阴影。

默认情况下,移动设备上对可移动聚光源的支持是禁用的。要启用该功能,请转到 项目设置(Project Settings) > 渲染(Rendering) > 移动(Mobile) 着色器(Shader) 置换(Premutations) 简化(Reduction),然后选中 支持可移动聚光源(Support Movable Spotlights) 选项旁边的复选框以启用它们。一旦启用,您将需要重新启动UE4编辑器,然后才能使用它们。

SupportMovableSpotLight.png

反射

虽然反射可以有助于在移动项目中注入生机和可信度,但在移动设备上使用反射时,您需要注意一些限制。以下信心将帮助反射在您的目标移动设备上以最佳状态显示出来:

  • 通过将 强度(Intensity) 设置为 0,禁用您在后期处理体积中设置的所有环境立方体贴图(Ambient Cubemap)。
    PP_Settings.png

  • 球体反射采集 Actor放置于想要采集反射照明的区域。

    球体反射采集关闭 球体反射采集关闭

    球体反射采集开启 球体反射采集打开

  • 当制作支持反射的材质时,请记住以下信息。

    • 确保法线贴图同时设置了高频和低频细节,因为这有助于打破反射,使其在视觉上更具吸引力。

      平滑的法线贴图 平滑的法线贴图

      粗糙的法线贴图 粗糙的法线贴图

    • 确保粗糙贴图有不同强度的白色和黑色,因为这会有助于提供不同程度的闪亮反射和暗淡反射。

      变化粗糙度 变化粗糙度

      平滑粗糙度 平滑粗糙度

    • 根据表面类型,金属感输入应为 1 或 0。

      金属感关闭 金属感关闭

      金属感开启 金属感打开

注意,每个静态网格体组件被分配到最近的反射采集 。这意味着对象之间的反射会有缝隙,有时大型网格体会使用网格体中心附近出现的不必要反射采集。

移动的天空光照反射

当没有相关的反射采集Actor(Reflection Capture Actor)时,移动渲染器(Mobile Render)也可以使用天空光照立方体贴图以进行镜面反射。若要实现这一点,您需要做的是删除所有反射采集Actor并确保已禁用屏幕空间反射(Screen Space Reflections)。您可以在下面的图像对比中看到其示例。

Skylight Reflections PC

Skylight Reflections Mobile

Android ES2设备不支持该功能。在没有场景采集的情况下,Android ES2设备将继续渲染。

移动设备的镜面照明

移动高光响应已更改为默认使用GGX照明 模型。这提高了移动设备上的镜面反射质量,从而有助于其更好地匹配着色器模型5(SM5)。启用这一功能会在着色器处理时间上增加些许开销。如果这一新的更改影了响项目照明的观感,则之前的球形高斯镜面反射(Spherical Gaussian Specular)模型仍可访问。若要重新启用之前的球形高斯镜面反射模型,您需要执行以下操作:

  1. 前往 项目设置(Project Settings)渲染(Rendering)移动(Mobile)

  2. 选中 使用旧版着色模型(Use Legacy Shading Model)旁边的复选框 旁边的复选框。
    **UseOLDLegacyShadingModel.png

下面的图像比较滑块显示了当前镜面反射着色模型与使用旧版着色模型(Use Legacy Shading Model)选项之间的区别。

Legacy Shading Model

New Shading Model

调制阴影

全动态阴影有助于为移动项目增加生机和真实性。然而,在一些移动设备上,由于硬件限制和渲染动态阴影所需的高资源需求,而不能选择完全动态阴影。为了解决这个问题,UE4引入了一种新的、更便宜的动态阴影类型,此阴影被称为 调制阴影(Modulated Shadow)。有关如何设置调制阴影的更多信息,请查看使用调制阴影

动态级联阴影贴图

静止定向光源用于为场景中的动态对象投射 全景动态级联阴影贴图 (CSM)阴影。使用CSM阴影的好处之一是,它们将与场景中静态对象投射的预先计算的阴影正确混合。CSM阴影也不显示使用调制阴影时出现的双重阴影,而且在为多个对象投射动态阴影时速度更快。有关如何设置级联阴影的更多信息,请使用 级联阴影 查看。

调制阴影与动态阴影

虽然调制阴影和动态阴影在外观和行为上彼此非常相似,但它们本质上截然不同。这是因为调制阴影有许多动态阴影所没有的约束条件和硬性限制,它们让调制阴影能够在具有有限硬件能力的移动设备上更好地执行。在下图中,您可以看到动态阴影和调制阴影之间的比较。

Dynamic Shadows

Modulated Shadows

下面的列表强调了调制阴影在UE4项目中使用时可以提供的一些功能和限制。

  • 更改阴影颜色:您可以通过调整定向光源的 光源(Light) 部分中的 调制阴影颜色(Modulated Shadow Color) 选项来更改投射的调制阴影的颜色。如果您想要为游戏玩法或出于艺术原因而调整阴影的颜色,该功能对您大有帮助。

    单击显示全图。

  • 阴影混合:与动态阴影不同,无论您在项目中看到的其他阴影是烘焙阴影还是动态阴影,调制阴影都不能与之混合。这意味着,当一个调制阴影位于另一个阴影之上时,两个阴影都将显示出来,而不是显示混合在一起的单个阴影。

    动态阴影 动态阴影

    调制阴影 调制阴影

使用调制阴影和动态阴影

当使用调制阴影和动态阴影时,可以使用一些控制台和.INI设置来调整阴影的外观和性能。在下一部分,我们将介绍这些设置,以及可如何将它们应用于UE4项目。

调制阴影尽可能地与现有阴影技术共享代码。这意味着,可以与其他阴影方法一起使用的许多阴影cvar和.INI设置也将适用于调制阴影和动态阴影。

  • 阴影质量:当您第一次在移动设备上查看动态阴影时,调制阴影的清晰度和质量可能会略低于预期。为了解决这一问题,您可以通过打开虚幻引擎控制台,使用撇号`键,并输入以下命令 "r.shadowquality" 后跟一个数字,来调整阴影质量。输入的数字越高,调制阴影的视觉质量将更好,但需要以牺牲帧率为代价。在下图中,r.shadowquality的值被分别设置为 012345,以显示对调制阴影质量有何影响。

拖动滑块将显示将r.shadowquality设置为0到5的值时发生的情况

  • 自阴影:虽然调制阴影将在字符、图案等动态对象上提供自阴影,但在默认情况下,该功能处于禁用状态,以确保调制阴影能尽可能好地执行。如果您的项目能够负担自阴影的额外成本,您可以通过将 r.Shadow.EnableModulatedSelfShadow 1 输入UE4控制台中来启用它。若要禁用自阴影,请将 r.Shadow.EnableModulatedSelfShadow 0 输入UE4控制台中。

    自阴影开启 Self Shadow On

    自阴影关闭 Self Shadow Off

  • 阴影深度:使用命令 r.Shadow.CSMDepthBias,可以偏移阴影开始渲染的位置。在下图中,您可以看到当 r.Shadow.CSMDepthBias 保留为默认值 0 时以及将值设置为 1010050010001500 时调制阴影发生的情况。

    [PARAM:caption] 拖动滑块将显示将r.Shadow.CSMDepthBias设置为0到1500的值时发生的情况

Tags