虚幻引擎 4.14 版发布

2016年11月30日 14:20 0 点赞 0 评论 更新于 2025-11-21 20:54

全新内容

虚幻引擎 4.14 版本带来了一系列令人瞩目的更新。其中包括针对 VR 进行优化的全新前向着色渲染器,该渲染器可在游戏中启用清晰的多重采样抗锯齿(MSAA)。同时,全新的接触阴影(Contact Shadows)功能能够渲染出复杂物体的精美阴影细节。此外,此版本还加入了无需第三方库的全新静态网格体自动 LOD 生成(automatic LOD generation)功能。

在工具方面,对动画工具进行了简化,以提高生产效率。为 Sequencer(UE4 的非线性动画工具)添加了诸多新功能,并对载具、布料和动画进行了改良。

对于移动开发者而言,现在可以在兼容的安卓设备上使用 Vulkan。同时,还添加了多项全新移动渲染功能,例如从场景色彩和深度进行读取,以及在 UI 上绘制 3D 物体。

在开发环境方面,Windows 平台上的 C++ 程序员现在可以使用 Visual Studio "15” 进行开发,并且仍然支持 Visual Studio 2015。

主要功能

带 MSAA 的前向着色渲染器

全新的前向着色渲染器将高精度 UE4 灯光功能与多重采样抗锯齿(MSAA)支持相结合。该渲染器拥有 MSAA 和针对每个材质进行优化的选项,尤其适用于 VR 场景。

前向渲染器的工作原理是将灯光和反射捕捉剔除到一个视锥空间网格。在前向通道中,每个像素会在对其产生影响的灯光和反射捕捉上进行迭代,并对相应的材质进行着色。静态光照的动态阴影会提前计算,并被打包到屏幕空间阴影遮罩的通道中,从而高效利用多个阴影投射功能。若要使用前向渲染器,只需启用 Rendering Project 设置中的“Forward Shading”并重启编辑器即可。

支持的前向渲染功能

  • 完整支持静态光照,包括来自可移动物体的动态阴影,且此阴影将和预计算环境阴影混合。
  • 混合的多个反射捕捉(带视差矫正)。
  • 部分场景的平面反射,将合成到反射捕捉中。
  • D - Buffer 贴图。
  • 预计算光照和天光。
  • 无阴影的可移动光照。
  • 胶囊体阴影。
  • 兼容实例化立体。

前向着色暂不支持的功能

  • 屏幕空间技术(SSR、SSAO、接触阴影)。
  • 投射阴影的可移动光照。
  • 动态阴影半透明度。
  • 从静态光照获取环境阴影的半透明度。
  • 光照函数和 IES 配置文件。
  • 透明覆盖。
  • D - Buffer 贴图上的 MSAA、动态模糊、动态阴影和胶囊体阴影。

前向渲染器支持多重采样抗锯齿(MSAA)和随机采样抗锯齿(TAA)。在多数情况下,TAA 更为可取,因为它能有效移除几何体锯齿和反射锯齿。然而,在 VR 项目中,由于头部追踪引起的恒定亚像素运动会造成不必要的模糊,此时 MSAA 则是更佳选择。

选择使用 MSAA 的项目需要编译内容,以减轻反射锯齿。“Normal to Roughness”功能有助于弱化细节法线贴图上的反射锯齿。静态网格体的自动 LOD 生成可抹平远处模型上的特征,从而弱化小三角形导致的锯齿。

在测试中,使用 MSAA(替代 TAA)可提高约 25% 的 GPU 帧时,不过实际开销将依具体内容而定。若要使用 MSAA,可在 Rendering 项目设置中设置默认抗锯齿方法。控制台变量“r.MSAACount”控制每个像素计算的 MSAA 采样数,其中“r.MSAACount 1”拥有特殊含义,可返回随机采样抗锯齿,便于在抗锯齿方法之间进行切换。

在性能方面,进行某些渲染时,前向渲染器的速度比延迟渲染器更快。可在每个材质上禁用部分功能以实现最大的性能提升。默认情况下,只有最近的反射捕捉应用时不带视差矫正,除非材质使用高精度反射;高度雾按每个顶点计算;平面反射只应用到启用的材质上。在 Epic 最新的 VR 游戏《Robo Recall》上进行测试,使用 NVIDIA 970 GTX 显卡时,前向渲染器比延迟渲染器的速度快约 22%。

接触阴影

接触阴影(Contact Shadows)可在物体上实现高细节动态阴影。例如,下图中的常春藤只是一些扁平的片,但由于材质中输出的 Pixel Depth Offset,其自身形成的阴影十分真实。

接触阴影功能通过在屏幕空间中针对深度缓冲添加一个短光线投射,判断像素是否从给定光照被遮挡,从而在几何体的连接点处形成锐化的细节阴影。其他算法所形成阴影的接触点可能会出现缺失或模糊的情况,通常是由于缺乏分辨率或深度偏差等原因。而全新的接触阴影功能能够以较小的开销填补这些空缺。

接触阴影可通过设置光照上的 Contact Shadow Length 属性来控制屏幕空间中光线投射的长度。若设为 1,则光线投射将穿过屏幕;若设置的值较大,精度和性能将会下降。因此,在实现需要的效果时,应尽量将长度保持在最短。

接触阴影的另一个使用场景是从任意光照的视差遮蔽映射获得自阴影,这需要在材质中输出像素深度偏移。例如,某个动画显示了一个视差遮蔽映射的表面,接触阴影的长度设为 0.1。

自动 LOD 生成

虚幻引擎最新版本具备自动减少静态网格体的多边形数量来创建 LOD 的功能。动画显示了自动生成的五个 LOD,每个 LOD 的三角形数量均为上一个的一半。

自动 LOD 生成使用二次网格体简化功能。网格体简化器会将生成的两个顶点合并,计算与边缘发生重叠的视觉差的量,然后选取视觉影响量最小的边缘进行重叠操作。在执行此操作时,它会选取最佳位置放置新合并的顶点,并移除沿边缘重叠的三角形,直至达到所要求的三角形目标数量。

该网格体简化器能够维持 UV,包括生成的光照图 UV、法线、切线和顶点颜色。由于 UV 被维持,因此可使用相同的材质,且所有 LOD 均可共享相同的光照图。

控制所生成 LOD 的高级设置位于静态网格体查看器中的 LOD Settings 下。“LOD Group”包含预设列表,可根据项目在 BaseEngine.ini 文件的 [StaticMeshLODSettings] 下进行修改。建议为项目设置好类别并尽量使用 LOD 群组,而不对每个 LOD 的细节进行控制。

“Auto Compute LOD Distances”是一个重要设置。由于算法了解每个边缘重叠所添加的视觉差量,因此它可以利用此信息决定可接受的距离误差量,这意味着它也将自动为每个 LOD 计算所使用的屏幕尺寸。如需了解每个 LOD 自动生成的细节,可在 Reduction Settings 中进行查看。需要注意的是,此功能当前只可用于静态网格体,尚不支持网格体代理 LOD 生成。

预计算光照情景

最新版本支持同一几何体在多个光照设置下的预计算光照,这在 VR 和建筑视觉表现的使用实例中尤为重要,因为这些项目对精度和性能有较高要求。

例如,定向光照、天空光照和天空盒已放置到一个名为 DayScenario 的光照情景关卡中,街灯则被放置到 NightScenario 中。

使用光照情景的方法

  • 右键点击 Levels 窗口中的子关卡并将其改为 Lighting Scenario。当光照情景关卡为可见时,其光照图将被应用到世界场景。
  • 在光照情景关卡上变更到蓝图的关卡流送方法。
  • 将网格体和灯放置到此关卡中并构建光照。
  • 在不变关卡的关卡蓝图的 BeginPlay 中,在需要激活的光照情景关卡上执行一个 Load Stream Level。

限制

  • 在游戏中一次只存在一个可见光照情景关卡。
  • 光照情景关卡出现后,来自所有子关卡的光照图数据均会被放置在其中,因此白天时只加载 DayScenario 光照图,光照图将不再由子关卡进行流送。
  • 让光照情景关卡出现时将强制进行反射捕捉更新,导致加载时间变长。

逐像素半透明光照改良

在延迟渲染器中,全新的前向着色功能可用于半透明表面,使其能够从多个灯光处获得反射高光,以及从视差矫正反射捕捉获得基于图像的反射。

全分辨率皮肤着色

UE4 现支持下表面轮廓着色模型的全分辨率皮肤着色,可生成表面细节(如毛孔和皱纹)的高保真度光照。此前,皮肤上的光照使用棋盘格图案展示,一半像素包含弥散光照、另一半像素包含反射光照,光照在最终的下表面轮廓全屏通道中重组。这种方法虽能生成下表面光照的良好效果(原始即为低频),但可能导致表面细节光照的保真度较低。新方法将把包含弥散和反射光照信息的每个像素打包到 RGBA 编码中,利用它可在最终的下表面轮廓全屏通道中重建全分辨率光照,通过随机采样抗锯齿获得表面细节的更佳效果和更稳定的表现。

作者信息

孟子菇凉

孟子菇凉

共发布了 3994 篇文章