导语
在2021年7月举行的GDC 大会上,腾讯游戏公共研发运营体系(CROS)团队携手 Arm 与 MediaTek 联发科技 共同发布了首个基于 Vulkan Ray Query 实现的移动端实时光线追踪技术演示,第一次向全球开发者与游戏玩家展现了在 Mali GPU 上由光线追踪所生成的超炫画面。
GDC完整演讲视频链接(海外版)
长久以来,实时游戏渲染的画质同真正的电影CG相比,始终存在着一定程度的差距,这一差距的根源在于前者缺乏“光线追踪”这一技术的加持:传统游戏中的渲染效果受到硬件算力上限的制约,通常只能处理场景中的直接光照,而对于反射、折射、软阴影这类复杂光影效果的模拟则显得无能为力。通过引入针对光线追踪的硬件加速,结合腾讯游戏CROS引擎团队为移动端硬件量身定做的光线追踪渲染管线,我们得以首次在移动端体验基于硬件加速的实时光线追踪。过去只能出现在电影CG中的高品质画面,现在已经有可能被小小的手机屏幕所呈现,移动游戏的画质水平也因此达到了前所未有的全新高度。
基于 Mali GPU 的实时光线追踪效果演示(GDC 2021)
移动端实时光追 - 从根本上提升游戏渲染画质
游戏中的实时渲染通常使用一种称之为“光栅化渲染”的成熟技术,这一模式已有数十年历史:通过把一个复杂场景拆分成一个个网格(Mesh),每个网格又可以进一步被解析为由若干三角形(Triangle)面片组成的集合,而每个三角形再根据其在屏幕上的最终位置,标定其投影所覆盖的所有像素(Pixel),并逐一计算每个像素的颜色作为最终输出。这一过程体现了分而治之的策略,能够以极高的并行度协同渲染一个复杂的CG场景,现代GPU的底层硬件架构,也基本上是为了服务于光栅化渲染而生的。
一个典型的光栅化渲染流程 [1]
尽管光栅化渲染技术能够快速地处理复杂的场景,但它也有一个巨大的缺陷:每个光栅化后的像素,对于同一场景中的其他物体以及像素的全局信息一无所知。 进而,它也无法感知到周围像素和物体对其最终光影效果产生的影响,比如来自其他物体的光线反射、折射,以及复杂光源所投射的软阴影。为此,工业界诞生了大量基于光栅化渲染框架的特定算法,力求弥补这一缺陷,然而这些算法始终无法从根本上解决传统光栅化渲染缺乏全局光影效果的痛点,同时还无可避免地大幅增加了图形渲染引擎的设计复杂度。
与之相对应的,是一种称之为“光线追踪”的渲染技术。光线追踪渲染技术的概念非常直观:宏观世界中,可以认为光线沿着直线传播,而眼睛之所以能够感知这个世界中的缤纷色彩,是因为不同频率的光线,与场景中不同材质属性的物体表面碰撞时存在着一系列相互作用,每当这种碰撞发生之后,光线的传播都会产生反射,折射等变化。基于光路可逆原理,只需以摄像机为原点出发,向场景中投射若干条光线,记录下每条光线与场景中所有表面的交点,并在交点处计算光线和表面的着色信息,然后根据交点处的材质属性,对光线的反射、折射、吸收等现象进行深入模拟,并持续追踪这些光线,直至它们消失在场景中,就能顺利渲染出最终的画面。
光线追踪渲染技术原理示意 [2]
与光栅化渲染的不同之处在于,光线追踪是以光线作为基本计算单元的,每一根光线都能感知到场景中的所有物体,并与它们逐一地交互,这就使得光栅化渲染中那些难以处理的视觉效果,在光线追踪渲染框架下,变得容易了许多;相较于传统的光栅化渲染,光线追踪对于画面的拟真度也有着巨大的提升。目前主流的电影CG渲染器均通过使用光线追踪技术来实现以假乱真的效果。然而,受限于算力,功耗,和成本,过去的消费级GPU始终难以提供足够强大的硬件支持,实时光线追踪始终也只能是游戏从业者们心中一个可望而不可即的梦想。
PC端游戏中关闭/打开光线追踪的效果对比 [3]
今天,得益于桌面及移动GPU硬件的迅猛发展,在算力层面上实时光追终于成为了可能。通过自研的延迟渲染着色管线,腾讯游戏CROS引擎团队开发了新一代光栅化-光线追踪混合渲染技术,在充分发掘移动GPU渲染潜力的同时,又能利用新近推出的硬件光追加速特性,以相对极低的功耗实现画质的飞跃。
混合渲染管线总览
全新自研渲染管线 - 追踪游戏中的每一条光线
利用光追技术,腾讯游戏在手机实时渲染引擎中完美呈现了软阴影和环境光遮蔽的效果。软阴影与硬阴影是一组相互对应的概念:过去的游戏设计中,通常把光源看做是一个没有体积的点,这样的简化是为了让渲染引擎能够快速地完成基本的光影计算,缺点是无法逼真地描绘出半影区,进而无法呈现出真实世界中柔和的阴影过渡。利用光追技术,全新升级的引擎已经能够模拟自然界任意形状的光源与场景物体交互所产生的柔和阴影,过去生硬的阴影边缘,已不再是美术在场景设计时不得不面对的痛点。
光栅化和光追阴影的效果差异 [4]
环境光遮蔽 Ambient Occlusion 是另一个重要的全局光照视觉特征:当物体彼此相交或者非常靠近的时候,交界处周围经由漫反射生成的光线会被彼此遮挡,相应的区域照明效果会变暗,它能够提供场景中关于褶皱、遮挡等细节的信息,对玩家以预期方式感知虚拟环境,从而达成沉浸式的体验有着极大的帮助。传统的屏幕空间环境光遮蔽 Screen Space Ambient Occlusion 技术只能捕捉到屏幕上可见像素的部分遮蔽信息,对于较远处或屏幕空间外的遮蔽处理则无能为力。有了基于光线追踪的新一代环境光遮蔽技术,才让真实且自然的遮蔽渲染成为了可能。
基于光栅化和基于光追的AO效果对比 [5]
开创性的降噪技术 - 大幅提升实时光追性能
尽管拥有了硬件加速,光线追踪在任何平台上对于算力始终是一个巨大的挑战,为了能利用当前有限的硬件资源实时渲染光追场景,只允许引擎向场景中发射少量的光线。这样计算出的最终画面将是充满噪点的,玩家们自然也无法满意。因此,降噪技术成为了实时光追能否成功的关键。基于腾讯游戏CROS引擎团队自研的实时降噪技术,在任何场景中仅需发射数量极为有限的光线(每像素一根光线,1SPP),就能实时生成可以媲美传统电影离线渲染器(遍历计算数百条光线后)才能达成的逼真视觉效果!
实时降噪前后的1SPP光追软阴影对比
实时降噪前后的1SPP光追AO效果对比
更多内容敬请阅读《基于Mali GPU开发移动游戏中的光线追踪内容》
引用:
1) Rasterization: a Practical Implementation (An Overview of the Rasterization Algorithm) (scratchapixel.com)
2) File:Ray trace diagram.svg - Wikimedia Commons
3) Ray Tracing for Windows 10 | Minecraft
4) Hybrid Rendering for Real-Time Ray Tracing | SpringerLink
5) GDC_DXR_deck.pdf (microsoft.com)