当前位置:   article > 正文

【UE模型优化教程系列】3.一张图搞懂帧率的秘密

【UE模型优化教程系列】3.一张图搞懂帧率的秘密

场景总面数和帧率有什么关系?
如何看懂UE4引擎中直接影响运行性能的统计数据?
影响帧率的关键因素有哪些?

本节以我们本系列教程的街区场景为案例,向大家讲解有关帧率的秘密。

首先,在UE4引擎中,我们如何查看场景的三角面总数?有两个方法:


1、软件左上角的箭头——统计数据——Advanced——Engine。
2、按键盘波浪键调出控制台,输入命令“ stat+空格+engine”,然后点击回车。
按以上方法操作后,就会在画面中出现一个数据表格,找到“Static Mesh Tris”这一栏就是静态网格体的三角面数。在本案例中,实际看到这是一个浮动的统计数据,这是因为它代表的是当前画面内所有面数的总和,它排除了画面外的场景的面数,比如树木,它在画面的边界浮动,所以就造成了统计数据的浮动。

其次,我们来看看该场景的帧率情况。查看方法:


点开软件左右上角的箭头,点击下拉勾选FPS的选项就可以了,也可以通过快捷键“Ctrl + Shift + H”来打开。

但是,看着这些帧率数据,你了解其真正含义吗?


帧率,就是每秒钟屏幕渲染的帧数。如果每秒钟屏幕渲染的帧数越多,帧率就会越大,这个项目就会运行得越流畅。反之,就会越卡顿。想要项目流畅的话,我们一般会让这个项目的帧率保持在60帧左右,这对于体验者来说是一个比较流畅顺滑的体验。如果帧率过低,那就会造成卡顿;但是如果过高,那么其体验效果跟60帧区别不大,但是却会耗费性能资源。

在我们的案例中,可以看到这个项目的帧率大概就只有十几帧,要差不多60、70毫秒才能渲染一帧。这对于项目体验来说是非常差的,运行会非常卡。

那么,究竟是哪些因素导致其帧率这么低?

首先,我们要知道帧是怎么来的。在这个项目所使用的UE4引擎中,渲染一帧画面,包含了这个场景的动画、碰撞、模型阴影、反射、着色等等很多很多元素,可以统计分成三类:Game、Draw Call以及GPU。正文图片中我们绘制了一个流程图,可以很清晰地绘制一帧的过程:
首先是开始绘制,分别给Game、Draw Call还有GPU同时分配任务,这三部分也会同时开始进行任务。Game主要负责处理程序流程;Draw Call主要负责处理阴影、反射和模型数据等等,同时它也会把这些绘制信息发送给GPU;GPU的主要工作就是等待Draw Call的绘制信息,然后负责绘制着色。

从图中我们可以看到:如果Game花费8毫秒处理完成任务,那么它就会在下一层等待其它两个部分完成,如果Draw Call耗费63毫秒完成任务,那么Draw Call也会到下一层继续等待GPU处理完成。GPU因为需要等待Draw Call的绘制信息,所以GPU一般耗费的时间要比Draw Call要多一点,所以这里GPU耗费了68毫秒。等这三个部分全部都处理完成了,才会结束一帧的绘制。所以,绘制一帧的时间,就是上面三个部分中耗费最长的68毫秒。

如何UE4里查看以上三个数据?方法如下:


在键盘上按波浪键调出控制台,输入命令 “stat+空格+unit”,然后点击回车。在画面右上角就会出现四个数据:Frame、Game、Draw以及GPU。Frame就是屏幕每渲染一帧所花费的时间,而下面的 Game、Draw还有GPU就是三种并行的线程。设备会同时执行这几个线程,等三个线程都跑完一次了,才会渲染出一帧。从图中我可以看到,渲染一帧所耗费的时间,主要集中在Draw和GPU。

通过以上分析,大家应该很清晰地知道到底是哪个因素导致了帧率的低下。
 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/591097
推荐阅读
相关标签
  

闽ICP备14008679号