赞
踩
场景总面数和帧率有什么关系?
如何看懂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。
通过以上分析,大家应该很清晰地知道到底是哪个因素导致了帧率的低下。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。