UE性能优化CPU篇章

UE性能优化CPU篇章

瓶颈定位

主要定位出性能开销的问题,确定接下来的优化方向,以及后续的细致的分析的具体的优化工作。

每一帧来说,这三者的执行顺序依次为:Game Thread → Draw Thread → GPU Thread,一帧的总耗时,取决于三者中开销最严重、即耗时最长的线程。

手机上的性能问题主要是由这七部分构成:CPU逻辑CPU渲染图形API(提交)GPU渲染内存带宽加载时间

准备工作

PC

1.关闭垂直同步

1
r.VSync 0

2.项目设置中关闭平滑帧

1
ProjectSettings->Engine->General Settings->SmoothFrameRate(平滑帧率)

3.关闭实时

性能优化_1

4.在standalone运行
5.最小化Editor

Android

当运行在手机时,需要打包合适的版本并在实际的运行平台上测试,以保证结果的准确性。
真机调试“使用AGDE在Visual Studio中调试Android项目

常用命令行

命令 描述
Stat FPS 显示帧率(Hz)
Stat Unit 显示Frame,Game,Draw,GPU,Draws,Prims
r.RHI 显示三角形面数,绘制调用次数
stat sceneRendering 显示场景渲染信息,模型Drawcalls等
r.ScreenPercentage 模型100,调整该数值看GPU变化,定位瓶颈是否在GPU
stat game 显示tick的耗时情况

性能分析工具

Windows

CPU : Insight sessionfront visulstudio ProcessExplorer perfDog adk windgb xdb64 ida framepro tracy
Mem : llm memreport visulstudio RAMMap ADK windgb ida tracy
GPU : GPA Nsight renderdoc

Android

cpu : insight sessionfront androidstudio SimplePerf systrace perfetto arm-streamline ida tracy
mem : llm memreport androidstudio perfetto ida tracy
gpu : arm-streamline renderdoc Snapdragon Profiler

iOS

cpu : xcode 套件 tracy
mem : xcode 套件 tracy
gpu : xcode 套件

CPU性能优化

1.GameThread

Game Thread 造成的开销,基本可以归因于 C++ ,蓝图和脚本(Lua)的逻辑处理,瓶颈常见于Tick 和代价复杂的逻辑实现。

a.Tick

控制台命令

1
2
stat game 查看Tick的耗时情况
dumpticks:可将所有正在 tick 的 actor 打印到 log 中

Tick优化

1
2
3
4
5
6
1.timelines
2.timers
3.控制actortick频率
4.事件分发器
5.使用RotatingMovementComponent代替简单移动
6.骨骼动画优化(顶点动画)

性能消耗大的函数

1
2
3
GetAllActorsOfClass
ForLoop
SpawnActor

动画蓝图中多使用带有闪电标识的动画节点

b.复杂逻辑

需要借助 Unreal Frontend Profiler / Unreal Insights 等工具对游戏逻辑中开销较大的代码进行定位

Unreal Frontend Profiler工具

1
2
Stat StartFile --开始录制数据
Stat StopFile --结束录制数据

录制文件正常情况会保存在项目路径/Saved/Profiling/UnrealStats/ 目录下,在windows(窗口)->developer Tools(开发者工具)->Session Frontend(会话前端)中打开
性能优化_3

Unreal Insights 工具

Unreal Insights默认只能在非Shipping版本中使用,可以修改。

官网教程:UnrealInsights(UE4的文档最近抽抽了,打不开,链接是UE5的)

知乎UE4 Unreal Insights基本使用–南山搬山道人

二进制引擎UnrealInsights位置

1
Engine\Binaries[Platform]\UnrealInsights[.exe]

从源码构建

  1. 使用vs,rider等IDE打开Programs文件夹中的UnrealInsights目标文件。
  2. 在命令提示符中 。在您的引擎安装文件夹中使用虚幻构建工具构建Unreal Insights:

在Windows上:

1
Engine/Build/BatchFiles/RunUBT.bat UnrealInsights Win64 Development

在Linux或者Mac上:

1
./Engine/Build/BatchFiles/RunUBT.sh UnrealInsights [Linux|Mac] Development

简单的使用方法

启动命令参数添加-trace或者命令行输入trace.start trace.stop,生成.utrace文件,拖入文件到unreal instight打开查看性能。

例如移动包或者编辑器启动的游戏等可以打开命令窗口输入:

trace.start frame,cpu,gpu | trace.stop 开始停止数据追踪

生成的.utrace文件会出现在项目的默认剖析目录中(…/Saved/Profiling)

数据查看

可以将一个.utrace文件从文件夹拖放到Unreal Insights窗口上,即可启动分析。