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