分享

RTX 30不仅改变了游戏,也改变了开发者的习惯

 爱极物 2022-03-02

传统艺术中,创作者曾经使用跟踪光线的原理获得正确的透视和阴影。这和计算机图形的世界截然想法,通过对光线追踪产生各种照片级真实渲染效果,让虚拟世界更为贴近自然,打破真实与虚拟的次元壁可以理解为图形开发者的梦想。

早在1980年,特纳·怀特迪提出了光线追踪算法的可行性。但在最初的20年中,人们的注意力都集中在了运行效率上,提出了空间细分、包围体等现在耳熟能详的技术。第二个20年,人们开始将目光集中到灯光效果本身,并发现诸如漫反射、折射、运动模式和镜头效果等特效其实可以在单个框架内计算出来,NVIDIA RT Core正是特纳·怀特迪光线追踪算法提出近40年后,用量产硬件加速核心,向模拟自然光照的终极圣杯迈进了一大步。

毫无疑问,实时光线追踪算法已经成为时下最流行的话题,这个话题不仅仅最终的游戏成品,在游戏开发甚至专业行业设计的最开始,就已经被赋予全新的思想,从根本上影响着开发者的使用习惯,虚拟和现实的次元壁被进一步打破。

那么,实时光线追踪技术究竟是如何从所有想法的最开端影响着开发者的使用和习惯,又是如何提升效率的?这里,我们着重围绕Unreal Engine虚幻引擎,进一步探究实时光线追踪、RT Core,以及GeForce RTX 30系列显卡对开发的影响。

 

用阴影描绘真实

对于游戏玩家而言,通常会把实时光线追踪技术的关注点放在光影反射、水面、镜面倒影或者刀光剑影。而事实上实时光线追踪所产生的阴影效果能够更好的提升游戏画面。如何提升画面的阴影表达一直是开发者关注和讨论的话题。例如此前的屏幕空间环境光遮蔽(Screen-Space Ambient Occlusion,即SSAO),后来的高解析度环境光遮蔽(High Definition Ambient Occlusion,HDAO)都旨在提升画面的阴暗对比,通过阴影增强整体画面对比度,接近HDR的效果。

但只依靠环境光遮蔽实现自然的阴影效果并不容易。在实时光线追踪没有诞生之前,实现物体的阴影效果通常需要提前离线渲染预制好相应的阴影特效。预设的阴影意味着不存在与实际画面互动的能力,它可以理解成一个贴图,指望它实现跟随环境变化的柔和阴影效果根本不可能。

以赛车游戏为例,以往的游戏引擎难以实现阴影动态渲染的效果,如果车辆阴影控制不好,就会看到赛车阴影与赛车一起离地起飞,非常不自然。即便是时下多数传统赛车游戏,在没有光线追中加持下,车辆在不同天气下留下的阴影也很难做到更好。

从Unreal Engine 4.5版本提供的实施光线追踪技术支持来看,大致可以分成以下几类,不难看出,Unreal Engine将技术提升的重点放在了光线追踪阴影效果上。

光线追踪阴影(Raytraced Shadow)

基于图像的天窗光照(Skylight for Image-Based Lighting, Skylight for IBL)

光线追踪反射(Raytraced Reflection)

环境光遮蔽(Ambient Occlusion)

全局照明(Global illumination)

半透明(Translucency)

在Unreal Engine中,无论实施光线追踪技术如何迭代,表现在设计UI上的可调节参数变化不多。这意味着开发者能够按照以往的使用习惯,通过熟悉的软件界面,无缝切换到新的技术中来。

虽说即使使用非RTX显卡,采用混合渲染器的Unreal Engine也能做到光线追踪渲染,但意味着永无止境的等待和卡顿。大多数时候必须在图像质量与性能之间进行取舍,理由很简单,光线追踪对传统的硬件需求实在太高了。

由于传统的CUDA Core也就是GPU以SIMT方式执行指令,即使是安培架构下每条指令宽度为32路,用于多层包围盒体(Bounding volume hierarchies, BVH)加速结构下加速效率依然很差,毕竟很可能只有1/32的有效求交结果。

这时候就是NVIDIA RT Core登场的时候了。作为专门的实时光线追踪加速核心,RT Core针对BVH提供了高效的加速方式。在安培架构,也就是GeForce RTX 30系列的第二代RT Core中,提供BVH遍历、BVH求交、三角形求交、结果返回等硬件加速,并拥有2个可并行执行的三角形求交模块,1个三角形位置内插模块,这意味着第二代RT Core可以每个周期完成两次三角形求交。

因此第二代RT Core带来的变化是翻天覆地的。在以往处理移动物体不得当会有一种飘忽不定,与场景分隔的尴尬。而在采用实时光线追踪效果之后,物体的移动效果会更为自然。特别是在光线环境更复杂的室内空间,哪怕只使用二次反射,游戏光影变化都会获得以往无法企及的效果。

类似《我的世界》中迷雾晨光的场景是在以前是很难做到的

如前面所说,在GeForce RTX 30系列显卡中,第二代RT Core通过增加三角形位置内插模块,提高了运动模糊等多次采样特效时的光线追踪性能,以解决运动模糊的问题。

事实上运动模糊是游戏最常见的特效之一,它需要实现模拟物体快速移动过程中,在人类眼睛上留下移动残像的效果。模糊移动效果能够给玩家带来更深入的游戏体验,原因在于模糊效果能够暗示整个画面移动迅速,给人留下快速的想象空间。

前两年好莱坞动作影星汤姆·克鲁斯号召大家在高端电视上关闭运动补偿效果,目的就是让电视播放的动作电影中的动作残影不会被补偿技术抹去,从而造成一种在看网络视频的错觉。可见运动模糊真实性给予的代入感多么重要。

因此实时光线追踪技术不仅能让游戏开发者用更少的时间打磨高质量的扬尘和扬尘留下来的阴影效果,所想即所得的创意想法也能够更进一步保证开发者的创意不会断片。将开发者从重复的工作中拯救出来,用保留下来的精力投入到更多想法的实践中,这也是每一个开发者都希望获得GeForce RTX 30系列显卡的原因。

早在2018年,汤姆·克鲁斯就建议大家保留电视中的模糊效果

 

DLSS与光影并行

游戏制作组的创意和想法可以是无穷无尽的,就像拍电影一样,重点是在如何使用有限的资源实现最佳的效果。很多时候游戏开发者不得不在创意、显示效果、显示性能之间找到平衡。大家都知道将光线反射次数不停增加,自然就能获得更自然的光线追踪效果和更少的噪点。

但现实不允许所有场景都能用上高阶的实时光线追踪特效,这也意味着画面中的采样点要有所减少,与之而来的则是千疮百孔的噪点图像。在游戏中解决噪点的方案有很多种,可以使用后色光、材质调整,也可以通过降低场景的复杂程度。

例如通过LOD(Levels of Detail,多细节层次)技术,根据物体模型节点在显示环境中所处的位置和重要程度,决定物体渲染资源分配,降低不重要物体的面数和细节就是其中一种做法。

在UE4引擎运用高粗糙度反射(Reflection with High Roughness)、天光(Sky Light)、环境光遮蔽(Ambient Occlusion)、漫反射光噪点(Diffuse Lighting Noise)、全局照明(Global illumination)均可实现不同程度解决光线追踪噪点的效果。

无论制作组还是游戏玩家,都会意识到降低游戏渲染分辨率,给显卡腾出更多运算资源,用来获得更好的光照效果是个很好的做法,降低渲染分辨率但仍然获得同等画质,就需要提到DLSS深度学习超采样技术以及第三代Tensor Core了。

超采样技术在游戏中通常充当抗锯齿的角色,事实上DLSS最初版本主要实现的功能同样为抗锯齿。在安培架构发布之后,DLSS 2.0技术也随之升级到了DLSS 2.1版本,已经能够实现用2K渲染分辨率是实现8K原生分辨率渲染品质的画面。这意味着画面重构能力达到了原始分辨率的9倍。

从诸如COD17游戏中的实践来看,使用原生渲染分辨率和DLSS优化的结果已经基本相同,而对计算机而言DLSS已经帮助其释放了更多性能。

COD17中,左为SMAA,右为DLSS,已经看不出区别

更重要的是,DLSS目前已经具备极高的泛用性,不需要为每一个游戏进行重新训练,只要将画面提交给NVIDIA,短时间内就能获得DLSS的优化,从而节省开发的部署时间。

目前在UE4中已经加入了对DLSS 2.1支持,特别对于开发者而言,为了节省开发资源,在制作游戏场景时通常会使用更小的分辨率预览,要么就需要承担画面卡顿的窘境,这对开发者而言不算友好。而一旦获得DLSS支持,预览界面的流畅度将会获得明显提升,开发体验自然也变得顺畅了许多。

事实上,如果按照传统的光线追踪计算量,想获得流畅且高质量的特效估计还需要数年时间。DLSS技术将这个时间节点提前了数年。同时安培架构第三代Tensor Core虽然数量只有上一代的一半,但是每个Tensor Core规模都增加到上一代的两倍,再加上支持硬件细粒度结构化稀疏加速能力,让目前的DLSS 2.1变得更高效。

当然,DLSS仍然有很多可以挖掘的地方。这也是为什么厂商一直推崇用新的显卡运行最新的游戏原因之一,因为诸如DLSS 2.1的新技术需要硬件和游戏的同时支持,运行效率往往也更高。

 

全局照明梦想再进一步

场景光照,特别是室内全场景光照永远来的更为复杂。光线追踪实现通常会依靠路径追踪(Path Tracing)执行,也就是将光线射入,击中物体之后,利用蒙特卡罗法随机发射大量随机方向的次生射线。次生射线产生越多,实现效果越自然,噪点越小,性能需求越大。

在离线渲染的电影中,次生射线进行10-15次反弹已经足够,而专业设计实时预览,可能只需要的4次,对即时响应更高的游戏可能只有2次。

不同的反射次数能够实现不同的效果

如何降低资源消耗是个很大的问题。在GeForce RTX 30系列显卡发布之后,RTXGI(RTX Global illumination,RTX全局照明)也被提上了议程,这是一种称为动态漫反射全局照明(Dynamic Diffuse Global Illumination,DDGI)的讨巧的技术,通过给游戏场景增加大量的探测球,以获得更好的性能。

左边为RTXGI OFF,右边为RTXGI ON

通过探测球向场景发射射线,将获得的辐射度、距离保存起来,当与路径追踪混合,即可获得探测球对应位置的亮度值。这样做的好处是,不仅可以显著节省性能开销,并且也不会产生噪点,漏光问题也能得到控制。

以往类似这种动态漫反射全局照明的技术只能在有线的分辨率和空间内使用,但在RTX 30系列显卡上市以后,第二代RT Core的加持下能够更大规模布置更多的探测球,再搭配DLSS,从而获得更好的光线追踪性能和画质。在Unreal Engine 4.25版本以后的引擎中,开发者就能调用相应的选项。

 

最后:硬件与光影正在发生质变

其实近40年前特纳·怀特迪提出的光线追踪算法最初没有解决全局照明的问题,如果按照硬件算力来推算,实时光线追踪在短时间内被实现也不可能。但理论计算和灵活的技巧与实践之间是有差距的。事实上我们已经运行上了实时光线追踪技术的游戏,并且游戏的数量不断增多,并很快到达井喷点。

通过UE4引擎、GeForce RTX 30系列显卡带来诸如RTXGI、DLSS 2.1、光线追踪运动模糊场景渲染等诸多新技术,光线追踪已经给游戏画质提供了质的飞跃,更重要的是几乎无缝的转接让开发者可以自然而然过渡到光线追踪场景的特效中来。

更让人兴奋的是,随着CES2021上NVIDIA发布NVIDIA GeForce RTX 30系列笔记本电脑GPU,配备高达16GB显存以及最高4K分辨率可选,让开发者在家中,咖啡厅也能使用诸如UE4等开发套件。这要是放在数年前,是根本不会指望通过笔记本实现光线追踪游戏开发的。

能实现硬件和软件的统筹本身就需要一家强力的公司推动,必须得承认NVIDIA对图形计算变革起到了十分重要的作用。说不定过不了多长时间,全局光线追踪就会展现在开发者和玩家眼前。毕竟,曾经被奉为图形计算圣杯的光线追踪,已经开始变得司空见惯了。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章