正文
本文为个人学习总结,有不对的地方欢迎各位大佬批评指正。
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
停止冻结渲染