映维网 2019 年 09 月 07 日)Unreal 最初于 2018 年 3 月举行的 GDC 大会亮相的实时光追,而这项功能在过去 18 个月里已经取得了长足的进步,并且正在不断提升。从原型代码到免费发布,下面这篇博文将向我们概述 Unreal 引擎光追功能的演变及未来发展方向。

1. 什么是光追

我们首先来快速介绍何谓光追,并在 High Level 方面看看它与光栅化的区别(在实时光追出现之前,游戏主要采用的渲染方法是光栅化)。

光线追踪/光线跟踪/光迹追踪是几何光学的一项通用技术。它主要是通过追踪光线路径并采集沿途颜色来确定每个像素在最终渲染中的颜色。因为这能够模仿光线的物理行为,所以它提供了比光栅化更逼真的结果,如柔和,细致的阴影和来自屏幕外对象的反射。

另一方面,光栅化是从后向前绘制场景中的对象,通过变换矩阵来讲 3D 对象映射到 2D 平面。它根据存储在网格的信息(颜色,纹理,法线),以及场景中的照明来确定每个像素的颜色。它的速度通常要快于光追,但不能描绘依赖于反射光的效果,如真实反射,半透明和环境遮蔽。

2. 发展催化剂

在过去数十年间,追求极致逼真图像的大片已经用上了光追功能。但一直以来,对影片分辨率实现光追可能需要数小时,甚至数天时间。所以行业难以想象以 24fps 或以上速度渲染光追帧。

随后出现了两个颠覆性的的技术进步:微软的 DXR(DirectX Raytracing)框架和英伟达的 RTX 平台。对于与英伟达和工业光魔的合作,Epic Games 通过 “Reflections” 演示内容首次在 GDC 2018 大会展示了实时光追功能,并且以《星球大战:最后的绝地武士》中的人物作为主角。

这个演示内容展示了纹理区域照明,光追区域光影,光追反射,光追环境遮蔽,影视级景深以及 NVIDIA GameWorks 光追去噪,而且所有这一切都是实时进行。由于 Unreal 引擎采用了混合方法,无法受益于光追的通道能够继续进行光栅化,从而提高了整体性能。

这只是早期阶段。原型代码尚未向用户开放,而实时运行演示所需的硬件包括一台搭载四枚 Tesla V100 显卡的 NVIDIA DGX 工作站(每枚显卡售价约 71 万人民币),所以软件和硬件都不适用于普通用户。

3. 普及实时光追

五个月之后,Epic Games 与英伟达和保时捷在 SIGGRAPH 2018 亮相了一款实时影视体验:基于保时捷 911 Speedster 概念车型的 “The Speed of Light”。得益于摩尔定律的起效,这个演示内容只需要两枚 NVIDIA Quadro RTX 显卡。在当时每枚显卡依然需要 43 万人民币+的投资,但成本已经低于先前的设置。

除了先前演示的功能,“The Speed of Light” 同时展示了光追半透明和透明涂层着色模型,以及漫射全局照明。除了制作影视内容外,团队另外创建了一个交互式内容来演示场景的实时性。

快进到今年 3 月举行的 GDC,Epic Games 已经准备好以 beta 功能的形式为 Unreal 4.22 提供光追支持。为了展示这项技术在 12 个月内的进展,其合作伙伴 Goodbye Kansas 和 Deep Forest Films 创建了一个以数字人类作为主角的实时影视内容 “Troll”。

“Troll” 的复杂程度要比 “Reflections” 高一个量级。尽管两者都以 24 fps 运行,但 “Troll” 的三角形数量是 6200 万,16 个光照,而 “Reflections” 只有 500 万个三级奥星,4 个光照。另外,“Troll” 是的光追通道是以完整的 1080p 分辨率渲染,而 “Reflections” 只以半分辨率渲染,然后按比例放大。“Troll” 同时需要对粒子进行光追踪,以及与其他基本组件的互操作性,包括 Alembic 几何缓存,毛发和皮肤。尽管复杂程度有所增加,但 “Troll” 只需一枚售价约 8500 元人民币的 NVIDIA RTX 2080 Ti。

右图是实时光追反射

利用免费的 Unreal 引擎,以及价格相对亲民的显卡,现在人人都能够用上实时光追功能。

4. Unreal 4.23 中的光追

当 Epic Games 开始在 Unreal 引擎初步实现光追功能时,微软正对 DXR 框架进行最后的调整,而英伟达则在开发新的硬件和驱动。另外,为了支持光追,Epic Games 重构了渲染管道。在 SIGGRAPH 2019 大会预览的 Unreal 4.23 已经能够解决由这两个因素引起的不稳定性。

多个方面的性能同样得到了改善,包括天空通道,全局照明和去噪。去噪对于实时光追至关重要,因为对于能够追踪的光线数量而言,预算非常有限。

Epic Games 同时实现了交叉点着色器,允许你支持自己的原语类型并渲染复杂的几何体,如毛发或分形。这家公司已经开始提供多 GPU 支持。Unreal 4.23 中增加的 Low-Level 支持可允许你控制哪个 GPU 渲染哪个通道。Epic Games 将继续支持其他材质和几何类型,包括地形几何,实例静态网格,程序化网格和 Niagara sprite 粒子。

5. 未来

但攻坚之旅尚未结束。Epic 团队依然在努力改进具体的实现。尽管 4.23 版本已经在性能和稳定性方面取得了重大进展,但在获得 “就绪” 标记之前,他们尚有很多工作要做。

正如早前提到的一样,Epic Games 在 4.23 版本中增加了 Low-Level 的多 GPU 支持,但他们希望提高 “即插即用性”,以及支持更多的几何类型。其中一个最具挑战性的例子是具有世界位置偏移的 foliage(诸如树叶在风中飘舞动画所需的效果)。

如果你有兴趣尝试 Unreal 的光追功能,你可以马上下载最新版本的 Unreal 引擎。另外,你可以参阅 Unreal 的实时光线追踪文档

Epic 概述 Unreal 引擎光线追踪功能的演变及未来发展方向最先出现在映维网