【转载】UE4 如何评估画面性能

551 阅读3分钟

原文链接:《UE4 如何评估画面性能》 | 作者:瞎鼓捣的猴子

正文

本文为个人学习总结,有不对的地方欢迎各位大佬批评指正。

1.

在准备场景时应在控制台输入 t.MaxFPS 600 回车 来解锁帧率上限,系统默认上限是 60,可测试目前的操作对帧率(性能)造成什么影响。

当然也不一定非要输入 600,这里是举例说明。

注:输入时,字母与数字间一定要加个空格。

显示/隐藏帧率快捷键:Ctrl+Shift+H ,也可手动在控制台输入 stat fps

2.

控制台输入 stat unit,可查看性能瓶颈位于 GPU 还是 CPU。

Game 表示 CPU,负责场景中物体变换、位置、缩放、破碎等。

GPU 负责光照、材质等。

输入 stat scenerendering 可更加具体查看当前视口性能情况,需要关闭,则再输入一遍指令即可。

3.

材质的统计数据面板也可查看材质性能开销:

例如:Base pass shader : 133 instructions .

就是产生了 133 条指令,上限是 2000 .

除了 模型面数 ,镜头中 模型的数量 也会带来消耗。数量太多,绘制调用的次数就越多。

4.

在利用控制台命令 stat unit 查看完之后,可以输入 stat RHI 来衡量绘制调用。

绘制调用就是每个单独模型都会产生渲染时的调用,调用次数越多,开销越大。

打开 stat RHI 后,在下方会看到

  • Triangles drawn 三角形面数
  • Draw primitive calls 绘制调用次数

2000——3000 次是比较合理的

5.

绘制调用 的影响要比 多边形面数的影响大得多,减少绘制调用次数可选中多个模型右键单击选择 “合并 Actor”,会多出一个新模型,且无法撤回。

可在统计数据中查看哪些模型适合合并,模型越常用,且在同一空间,可将其合并。

比如一个房间里有很多相似的杯子,这个因项目而异哈。

VR 项目可能会多些。

6.

普通 LOD 只会减少模型面数,而 HLOD 可以 同时 减少面数和调用次数。

即多个物体离相机距离较远时自动替换并合并为一个物体,可在 “窗口 → 层级 LOD 大纲视图” 中查看。

7.

渲染前,尤其是室外场景,要设置剔除距离。把视野范围以外的东西,渲染时剔除。

有以下几种方法:

(1)开启世界设置中 “预计算可见性”,放置 Precon Precomputed visibility volume 预计算可视性体积,框住主要物体。能有效的减少渲染的面数,降低渲染线程的时间消耗但会增加内存开销。 该技术的构建时间和内存消耗将会随着场景的增大而 显著增加(实际上由 PrecomputedVisibilityVolum 大小决定),并且该技术仅用于静态物体

此部分参考:UE4 在场景中使用预计算可视性 (PrecomputedVisibility)_jiangdengc 的专栏-CSDN博客

(2)可放置 cull distance volume 剔除距离体积。可大范围整体设置物体的剔除距离,使其在相机看不到的地方不渲染。

只对 静态网格物体 有效。

具体操作方法可参考:UE4 中剔除距离体积(Cull Distance Volume) 是非常有用的优化工具

这里不再赘述。

(3)可选中某一具体模型,在其细节面板的 LOD 中,调节“所需最大绘制距离”,0 则为关闭。

(4)控制台命令:

  • Freeze rendering 冻结渲染
  • Unfreeze rendering 停止冻结渲染