以下文章来源于腾讯游戏学堂 ,下代作者腾讯游戏学堂 导语 :在今年的移动端游戏开发者大会(GDC 2024)上,来自腾讯游戏的图形突围专家持续带来前沿分享 ,围绕AI 、暗区渲染 、手游实现跨端游戏开发、中的追踪暗区突围(国际服)官方正版动画等游戏技术应用及游戏制作 ,光线引发同业关注 。下代本文为“暗区突围手游 :在移动端打造次世代射击游戏”分享的移动端图文版干货内容。
分享嘉宾:王俊宏 腾讯互娱魔方暗区突围手游项目图形程序负责人 大家好 ,图形突围感谢大家参加本次会议。暗区我叫王俊宏,手游实现是中的追踪魔方工作室暗区突围渲染组的主程。我在腾讯工作了12年,光线一直从事PC和移动游戏开发。下代 我将从介绍《暗区突围》手游和移动光线追踪的背景开始,然后介绍《暗区突围》中的光线追踪,包括光线追踪场景管理、反射 、软阴影 、环境遮挡和优化 ,最后是一些结论。 一、背景介绍 《暗区突围》是一款面向Android和iOS设备的下一代沉浸式第一人称战术射击手游 。该游戏于2022年7月正式发布。制作人孙一鸣去年在GDC上介绍了游戏玩法 。游戏使用的是Unreal Engine 4.26引擎 。也是一款开放世界游戏。例如,最新的关卡矿区 , 大小约为4公里乘以4公里。暗区突围1.0.52.52下载场景中有超过10万个网格实例和3000多个流式加载关卡。因此 ,场景管理将是一个挑战。 我们游戏中的一些重要渲染特性包括:首先,渲染管线采用的是前向渲染管线。其次,我们使用了基于物理的渲染 ,包括基于物理的材质、光照、相机和着色 。例如,这个视频展示了游戏中的自动曝光功能 。 第三个重要特性是动态天气系统 ,我的同事陈家铭在2022年的GDC上介绍过。在这个视频中 ,阳光、天空光和云都会随着时间变化。 最后,我们游戏中的全局光照基于预计算辐照度传输。因此,本尊科技在这个视频中,当天气系统变化时 ,间接光也会有所不同。 接下来,我将介绍移动光线追踪的情况。现在最新的智能手机已经支持硬件加速的Ray Query(也称为Inline Ray Tracing)。Ray Query可以在任何着色器阶段使用 ,例如顶点着色器、像素着色器或计算着色器 。然而,暗区突围公测版在移动设备上调试光线追踪仍然具有挑战性 ,因为大多数截帧工具和GPU性能分析工具都不支持移动端的Vulkan Ray Query 。 在我们集成光线追踪之前 ,有一些准备工作需要完成。首先 ,我们启用了Android的Vulkan API。然后,更新了Shader交叉编译工具到最新的Shader Conductor,以支持光线查询的着色器指令。最后 ,我们扩展了UE4的Vulkan和Metal RHI。 二 、《暗区突围》手游中的光线追踪 现在 ,我来介绍《暗区突围》手游中的光线追踪。在中国,带有光线追踪功能的Android版本已于2023年发布 。而iOS版本的光线追踪功能正在开发中。正如视频所示 ,我们已经集成了光线追踪的反射、软阴影和环境光遮蔽。接下来我将展示在智能手机上拍摄的截图。 ,时长00:22 这是在智能手机上的截图,如果禁用光线查询 ,大理石地板上不会有反射效果 。 但是 ,如果启用了光线查询,我们将获得令人印象深刻的光泽反射效果。 这是另一张在室外拍摄的截图,轮胎、暗区突围端游外挂箱子和地板上没有环境遮挡效果。 当启用光线追踪的环境遮挡时,间接光效果更加逼真。 当禁用光线查询的软阴影时,我们使用CSM阴影和硬件PCF。但是阴影贴图的分辨率不足以为金属栅栏或其他一些细小物体渲染清晰的阴影。 启用光线追踪软阴影后 ,我们可以获得几乎完美的软阴影效果。所有这些可以为玩家创造更加真实和具有沉浸感的体验。 正如我之前提到的 ,对于我们来说,管理光线追踪场景是一个挑战。稍后我将介绍我们所面临的挑战以及应用的优化方法 。 以下是三个主要挑战 :第一个挑战是底层加速结构(BLAS)的内存占用 。第二个挑战是在移动GPU上构建BLAS的计算成本较高 。第三个挑战是在具有太多实例的顶层加速结构(TLAS)中Trace非常耗时。这是在PC上使用NVIDIA Nsight Graphics捕获的截图,显示了我们游戏中部分TLAS实例的情况 。 首先,我将介绍目前场景管理的基本情况 。我们的关卡是由关卡流式加载系统管理的。当加载包时,会加模型的底级LOD 。更高级的模型LOD则由模型流式加载系统加载 。而一些带有遮罩 、世界坐标偏移或透明材质的模型不会创建BLAS。那么,我们能否在加载模型LOD时创建BLAS呢?答案是否定的。因为当加载地图时,会创建超过4700个BLAS ,暗区突围神秘代码显存占用高达4.4GB,然后游戏会因为内存不足而崩溃。 我们使用了一个简单的算法来管理BLAS。在这个图中,P是相机的位置 ,r1是BLAS创建半径,r2是BLAS销毁半径,d是相机到物体边界球的距离 。如果d小于r1,将标记为待创建;如果d大于r1且小于r2,将标记为待保留。然后,我会立即处理待创建请求。但对于没有待创建或保留标记的BLAS ,将会被延迟销毁。这样可以避免物体靠近边缘时频繁创建和销毁。 这里所有参数都是可调的 。经过优化,BLAS的数量从4700个减少到约700个 。视频内存从4.4GB减少到了1.1GB 。 对于TLAS ,我们每帧更新一次,并在构建时启用Fast Trace标记。我们还使用距离剔除和投影角度剔除来优化实例数量 。应用这些优化后,图中TLAS实例数量降为600个左右 。 这是在名为Vivo X90的智能手机上的性能数据。构建BLAS的成本小于0.5毫秒 |