3DMark新升级揭示手游优化真相:告别渣优化时代

今天一早,我像往常一样在Google Play商城浏览,寻找有没有什么新鲜有趣的手游。突然,一个软件更新的提示吸引了我的注意——这不是久违的3DMark吗?几个月没更新了,这次直接从1.x版本升级到了2.0,变化还挺大的,我赶紧下载来看看都有哪些新功能。

果不其然,新版手机3DMark的界面发生了翻天覆地的变化:不仅采用了时下流行的卡片式界面,文字描述也更加直观易懂。更重要的是,新版本新增了一个非常关键的测试项目——API Overhead(API负载对比测试)。

在PC上使用过新版3DMark的朋友们可能对这一测试项目并不陌生:它在PC上会使用DX11、DX12和Vulkan三种不同的图形API运行同一段超压力测试,然后对比三种API模式下显卡渲染图像的速度。这样既能看出一块显卡对不同API的支持程度,也能感受到新版API(DX12和Vulkan相对于“老旧”的DX11)在渲染效率上的巨大提升——有时候这种性能差距甚至可以高达数倍到数十倍。这一测试项目也成功促使显卡厂商、游戏开发者和PC玩家转向DX12等新技术、新平台,直接推动了PC游戏平台的技术发展和普及。

尽管安卓旗舰机的图形技术已经更新,但与Windows系统相比,安卓系统并没有DirectX。不过,如今绝大多数安卓手机都内置了两套图形API:即老旧的OpenGL ES和最新的Vulkan。

OpenGL ES的确称得上是“古老”,这项诞生于2003年(OpenGL ES 1.0)的图形标准,基本上就是桌面OpenGL的简化版。因此,它从一开始就注重轻量化、节能和编程简单,而在画面效果和运行效率方面并不是它的强项。事实上,现在绝大多数手机游戏所基于的OpenGL ES 3.0/3.1版本分别于2012、2014年发布,即使是最新版的OpenGL ES 3.2其实也是两年前的产物。

因此,无论是骁龙835还是845,无论是2017年的旗舰还是即将亮相的2018年新机皇,只要使用它们游玩现在的主流手游,实际上都是在用最新的硬件运行几年前的代码——兼容性没问题,但优化得当恐怕只能是奢望。而使用老旧技术带来的直接结果就是卡顿、掉帧、发热、功耗增大——哪怕是再旗舰、再超级的手机,因为运行程序基于的技术太过“OUT”,实际体验也不可能好。

为了解决这个问题,谷歌在几年前就引入了OpenGL ES的替代者,全新的跨平台图形API:Vulkan。从技术上来讲,从OpenGL ES更换为Vulkan,就像电脑上的显卡和游戏从DX10(Windows Vista)一步进化到了DX12(Windows 10)那么大。Vulkan不仅带来了和DX12同级的特效支持,更重要的是它能够在不升级硬件(不更换手机)的前提下,大幅提升应用程序的执行效率,特别是对于手机上流行的八核心CPU优化远比OpenGL ES到位很多。

使用笔者自己的三星S8+手机(非国行,主控Exynos8895,GPU为ARM Mali-G71 MP20)运行新版手机3DMark的API Overhead测试,可以直观地看出,在完全相同的手机硬件上,Vulkan图形API的性能差不多就是OpenGL ES的两倍!

这是什么概念?这就意味着,假设一款中低端的手机在《王者荣耀》里只能跑到30帧,那么如果开发组将游戏的图形API换成Vulkan,同样的手机就能跑到50帧以上!假设一款旗舰机玩《崩坏3》会因为过高的画质设置而有些卡顿,那么如果这个游戏将底层API换成Vulkan,流畅的运行就完全不再是问题!

Vulkan既然这么好,现在有几个手游使用了它呢?笔者查了一下,就俩:《虚荣》和《我守护的一切》——这两个游戏都有国服代理,但是国服《虚荣》没有Vulkan版本,而《我守护的一切》也并不火。

作为游戏开发商,他们肯定比笔者更清楚Vulkan带来的性能改进,但为什么它们不用这一新技术呢?笔者认为主要原因有以下几点:

更新底层技术固然能够带来更好的游戏体验,但并不会带来更多的收益:比起花大成本更换底层API,多出几次活动,多更新几个付费皮肤显然更加“钱途”。

并非所有手机都支持Vulkan图形API:虽然高通骁龙810/652以及之后的手机都能100%兼容这一新技术,但联发科的一些在售的低端主控并不带有Vulkan支持,如果手游转向新技术,就意味着对这部分用户的抛弃。

最重要的是,新技术能够在不更换手机的情况下直接将游戏帧数提升一倍?有这么好的东西,谁还会去换手机啊!