|
在近期由腾讯游戏学堂举办的TGDC2022腾讯游戏开发者大会上,腾讯互娱光子工作室群《Apex Legends Mobile》项目引擎组负责人陈玉钢以《Apex Legends Mobile》项目为例,通过讲述在该项目中解决渲染优化的难点,向行业者展示了如何利用合理的技术手段、借助现有的技术软件、结合主流的技术机制来达到良好的优化效果。
陈玉钢:大家晚上好,我是来自于光子Apex手游项目引擎组的陈玉钢,今天给大家带来的分享是Apex 手游渲染优化。
在分享之前,先给大家介绍一下Apex手游这个项目的优化难点,特别是在渲染优化方面的一些挑战。
首先Apex手游是一个需要高度还原端游的项目,实际上我们也做到了不错的还原度,在这方面众多游戏媒体和玩家也给了我们一些还不错的评价。
左边两张图分别是Apex端游和手游的训练场,相信大家粗略一看已经不太能轻易分辨哪个是手游、哪个是端游。然后端游的场景本身就非常复杂,需要比较好的PC才能跑得起来,为了比较好地还原端游的场景表现,我们的美术、TA、策划在各个层面做了大量的优化,当然引擎底层我们也做了很多针对手机平台的改进。
另外,了解Apex的同学应该都知道,除了场景,最重要的还有大量英雄技能。这些技能通常都有非常高的辨识度,很多技能都有独特的表现需求。比如右边这两张图,上面是恶灵的踏入虚空,在进入虚空状态的时候,整个场景都需要有一个去色的渲染结果;下面是寻血猎犬的扫描,被扫描的那些角色或者目标是需要有一个复杂的描边填色,而且有的时候根据逻辑可能需要有一些穿墙的渲染表现。
端游是可以通过后处理来实现这些效果,但是在手游后处理是非常昂贵的,特别在低端机,基本上都是不能开户处理的,这也对我们的渲染管线优化提出了更高的挑战。
除了来自还原度方面的挑战,同时我们还是一款英雄射击游戏,也就意味着对帧率的要求非常高,在我们的策划看来,30帧和40帧有着完全不同的游戏体验。
我们是希望在主流设备能稳定的跑到40-60帧,新的旗舰手机能跑到90甚至120帧。而由于移动端设备环境特别复杂,散热情况也不是很好,我们甚至遇到过手机壳对帧率的影响,所以即使跑到了60帧,也还远远不够,还需要不断地做功耗上的优化,这样就能给平台层或给环境更多的性能上的容错空间,才能在大部分情况下保持稳定的高帧率。
作为一款公平竞技的游戏,高DAU也是最基础的目标,对于引擎优化来说也就意味着需要比较好的适配性,我们需要兼容到六七年前的设备,确保他们基础的游戏体验。这对我们引擎的伸缩性也有更高的要求。
总的来说,Apex手游在性能上存在三个方面的主要挑战:高度复杂的场景和Gameplay表现,导致基础开销非常高;同时作为一款英雄射击的玩法的游戏,也需要比较高帧率才有较为畅快的游玩体验;而作为主打公平竞技BR玩法的产品,较好的适配性也是必须的。我们团队需要在这三大挑战下,把端游起码要上百W功耗计算能力才能跑动的内容,塞到只有几W功耗预算的手机上,并且能够流畅地跑起来。
在这样的背景下,我们已经进行了各个层面大量的优化。今天给大家分享主要的内容是,我们引擎团队对场景渲染优化和 RenderPass优化两个部分。
场景渲染优化部分。首先会大概介绍一下Apex端游场景特点、手游光照策略,还有内容管理方面的一些细节,包括关卡怎么拆分的,材质怎么合并的,最后详细分享一下我们场景的渲染过程是如何优化的。
因为我们首要目标还是说尽可能还原端游,这里先大概说一下端游场景特点。
首先从场景光照方面,场景中有大量复杂光源,场景光照也特别复杂,但另外一点好在没有日夜变化的需求,相对来说我们就不是那么有必要做动态光照的支持。
从场景内容方面来看,这是开放世界的场景,对象的密度特别高,可以看一下右图,到处都有大量物体,层次结构特别复杂,甚至会导致常规的剔除手段不能很好地工作。这个稍后也会详细说一下。
具体从场景光照方面来看一下。首先从光源角度来看,场景中有大量的大型面光源,尺寸通常可以达到上百米大小;强度和影响范围也是特别大的,比如像右边的岩浆,它可以影响到几百米之外墙壁的shading的结果;色彩也是非常丰富的,除了岩浆,上面还有大的Landmark,一个冰柱,它是偏冷色调的,而且复杂不同色彩的光源经常会交织在一起。
场景也特别复杂,这就导致光线传播过程中的 |
|