作者:侯鑫,腾讯游戏引擎研发工程师
来源:腾讯技术工程
在很长一段时间里,手机的刷新率都是60Hz,随着硬件设备性能的提升,各种高刷新率的移动设备层出不穷,移动端也能有120Hz的显示设备。那么手机上的游戏真的是FPS越高越好吗?本期我们就来探索这其中的真相。
背景
作为手机游戏开发者,我们的工作中有很多时间都在尝试优化自己的代码。比如让某一段逻辑执行的更快速,或降低一些迭代的频率,减轻CPU负担,抑或通过各种骚操作在不降低画面质量的情况下,减轻GPU负担。
最终的目的都是想让使用不同性能设备的玩家都可以流畅的体验游戏。“卡不卡”也是玩家对游戏产生的第一印象之一,因此,我们的目的就是让游戏以最快的速度运行。
通常,评价一款游戏是否流畅的最直观的指标就是FPS(帧/秒)。那么,FPS真的是越高越好吗?
市面上评测硬件性能都是对比不同硬件下相同画质游戏的FPS,且越高越好(Higher is better)。
对于桌面平台来讲,它有持续稳定的供电与强劲的散热方案,不需要考虑发热与耗电量的问题,可以让硬件自由发挥。其次我们还要考虑显示设备(手机屏幕、电脑屏幕)的刷新率(RefreshRate)。
为了了解帧率(单位是FPS)与刷新率的关系,我们先来看看他们的定义:
1. 帧率(FrameRate)
帧率是GPU和CPU合作在游戏运行时,可产生的图像的数量,计量单位是帧/秒(FramePerSecond),通常是评估硬件性能与游戏体验流畅度的指标。
2. 刷新率(RefreshRate)
刷新率(垂直刷新率、垂直扫描率)表示显示设备一秒内可显示的新图像的数量,计量单位是赫兹(Hz)。
刷新率与帧率是两个独立的概念,帧率表示驱动显示器的设备每秒可产生新图像的数量。
可简单理解为:
① 游戏引擎与驱动是生产者,工作效率用帧率来评价;
② 显示设备是消费者,工作效率用刷新率来评价。
简而言之,我们真正感受到的流畅度会被刷新率限制,当帧率高过刷新率时,显示器每秒所能显示的图像数量仍然是不变的。
3. 画面撕裂(ScreenTearing)
假设你的显示设备刷新率为60Hz,当帧率高过刷新率或游戏运行时的帧时间不是1/60的倍数(2/60、3/60),即其FPS不是:…/120/60/30/20/… 时,就会存在显示器正在刷新图像的同时,新的数据也正由显卡传过来的情况,导致屏幕中有多帧数据同时出现的情况。
如上图所示,B帧渲染较快,在A帧的数据仍在显示器中刷新时,提交了新数据,造成画面撕裂,这种现象就叫做画面撕裂。这种瑕疵最简单的解决方案是垂直同步(VSync)。
4. 垂直同步(Vertical Synchronization)
垂直同步会同步显卡与显示设备的工作:
当显示器在刷新数据时,会让GPU等待,直到完全刷新数据后,让GPU提交新的数据,并在下一个刷新周期刷新。
垂直同步会将游戏的FPS限制为显示设备的刷新率,其最大的问题是会导致玩家输入延迟,因为它会要求显卡在渲染完毕后等待显示设备去刷新数据。
显而易见,这个问题对于竞技游戏的影响是很大的。
本文摘自: 腾讯技术工程(Tencent_TEG),文章作者:侯鑫,腾讯游戏引擎研发工程师。
转载此文目的在于传递更多信息,版权归原作者所有。
原文链接:https://mp.weixin.qq.com/s/tAcJpBGCg4sR5_bA9U0aDw