腾讯互娱魔方暗区突围手游项目图形程序负责人王俊宏分享光线追踪技术
我将从介绍《暗区突围》手游和移动光线追踪的背景开始,然后介绍《暗区突围》中的光线追踪,包括光线追踪场景管理、反射、软阴影、环境遮挡和优化,最后是一些结论。二、《暗区突围》手游中的光线追踪现在,我来介绍《暗区突围》手游中的光线追踪。
《暗区突围》这款手游挺火的,里面的光线追踪技术挺有意思的,有很多值得深究的点。不光是技术本身挺酷的,还有背后那些为了实现这些技术而克服的困难。
《暗区突围》手游背景
《暗区突围》这款手游在游戏圈里可是挺火的。游戏里打造了超独特的场景,像是那些特定地方,就有超过10万个网格实例和3000多个流式加载关卡,数量可不少。这种复杂的场景设计让玩家感觉超级真实,沉浸感十足。好多玩家在各个地方,比如那些复杂的室内场景,都能明显感觉到游戏环境的用心。而且,它用的渲染管线是前向渲染管线,这个特点也让游戏画面看起来特别不一样。
![]()
游戏开发这事,得考虑的东西可多了。它用的全球光照技术,是那种预先计算过的辐照度传输。这设计得可精了,能让游戏里的光照看起来特别真实。好多开发者都花了大把的时间和精力在这些基础设置上,才让游戏在画面效果,尤其是光照上表现得那么出色。
![]()
![]()
移动光线追踪背景
![]()
![]()
移动光线追踪技术在游戏界正成为一股新潮流。随着智能手机性能的持续升级,玩家们对更逼真的画面效果要求越来越高。不过,这技术的发展可不是一马平川。在移动设备上研发光线追踪技术,挑战重重暗区外挂,比如对光线查询的支持还不是很到位。调试光线追踪在移动设备上常常是个棘手活儿。市面上大部分的截帧工具和GPU性能分析工具都不兼容移动端的RayQuery,这简直就像是在开发者前进的道路上设置了重重关卡。
![]()
游戏中的光线追踪场景管理
![]()
《暗区突围》里暗区突围辅助,光线追踪场景管理那可真是挺考验人的。就拿顶层加速结构(TLAS)来说,实例太多,追踪起来特别费时间。比如,你看看PC上捕获的TLAS实例,就能感受到这其中的复杂程度。这还涉及到实例的加载和调整。在加载包的时候,模型的基础LOD也会被调整。这个场景里,还得考虑半径、距离这些因素。比如,P是相机的位置,r1是BLAS创建半径,r2是BLAS销毁半径,d是相机到物体边界球的距离,这些数据都是场景管理的关键。
为了提升实例数量质量,我们采用了距离筛选和投影角度筛选的方法。这改动效果显著!以前图里的TLAS实例可多了去了,现在经过这些优化,数量减少到了大约600个,这样一来,场景管理的压力可减轻了不少。
![]()
光线追踪中的反射
现在的渲染方式是正向渲染,这给反射效果的制作带来了不小的难题。为了在游戏里实现反射效果,开发者得打造一个混合的渲染管道。这个管道由好几个步骤组成。第一步是基础渲染,也就是获取必要的像素信息。这可是实现反射的关键,就像盖楼得先打好地基一样。
![]()
接下来是QueryScenePass和可见性解析Pass等步骤。在QueryScenePass阶段,我们会发射光线来获取屏幕空间中每个像素的网格和三角形信息。而在可见性解析Pass阶段,我们会为每个像素计算反射颜色。此外,在运行过程中,我们还要完成许多其他任务,比如收集用于反射着色的绘制指令,以及在每一帧重新分配网格实例ID和命中组ID等。
![]()
软阴影和环境遮挡相关
游戏中软阴影可真是个关键角色!就拿《暗区突围》来说,要是把光线查询的软阴影给禁了,那咱们就只能用CSM阴影和硬件PCF了。可是一旦开了光线追踪软阴影,效果简直就完美得不得了!一对比,这光线追踪软阴影的优势立马就显现出来了。
![]()
环境遮挡这部分,虽然没太多单独的讲解,但在光线追踪的整体框架里,它跟软阴影这类技术可是相互影响、互相配合的。这样一合作,咱们就能在游戏里呈现出更真实的光照和场景效果。
![]()
光线追踪的优化
这游戏里对光线追踪做了挺多优化。因为没有RTPSO这种管线状态对象,咱们就用QueryScenePass来代替。再说了,咱们还用GPU遮挡查询删掉了那些看不见的网格绘制命令,这样一来,省了不少不必要的计算。
深度测试能帮忙去掉多余的渲染,这可是个关键手段。就拿深度缓冲区来说,它记着网格的绘制ID。经过一番优化暗区突围辅助,可见性解析的绘制调用数从600多个降到差不多110个,这样一来,游戏性能大幅提升,还降低了因为过多渲染和纹理采样造成的能耗。
![]()
咱们从之前的分析里头能瞧出来,《暗区突围》这款手游在光线追踪技术上下了不少功夫。读者朋友们,你们说,随着游戏技术的进步,光线追踪技术将来还能给我们带来哪些让人眼前一亮的画面升级?咱们都来点个赞、转发一下,还在评论区聊聊看法!
![]()

