Unreal 入门-性能分析

来源:互联网 发布:六爻排盘软件哪个好 编辑:程序博客网 时间:2024/06/14 14:09

命令:stat unit

stat_unit.png

游戏的实际单帧时间由这三者之一限制:Game(CPU 游戏线程),Draw(CPU 渲染线程)或者 GPU(GPU)。 图中我们可以看到 GPU是限制主因(三者最大的一个)。为了取得更少的 单帧 时间,在这个情形下必须先优化 GPU 的负载。


视图模式

视图模式就是一系列的 Show Flag 的预设组合。编辑器界面中,和 Show Flag 单独分开,也可以直接使用 ViewMode 的命令行来切换。 对于性能比较有用的是:WireframeLightComplexityShaderComplexity 和 Lit。(分别是线框模式,光照复杂度模式,Shader 复杂度模式 和 正常的光照模式)

ViewModes.png

几个不同的视图模式(按阅读顺序):光照模式,光照复杂度(越暗越好),线框模式,Shader 复杂度(绿色代表性能优良)

命令 StartFPSChart 和 StopFPSChart


然后用微软的 Excel 打开结果文件 .csv (保存在 [ProjectFolder]\Saved\Cooked\Android_ES31\SubwayPatrol\Saved\Profiling\FPSChartStats 处)。 在这里例子中,我们删掉了头四行,选择全部,并插入了一个线状图的散列表。


fpschart.png命令行:StartFPSChart, StopFPSChart


命令:stat Game

CPU 受限,需要找到引起此问题的游戏代码(如蓝图、光线投射、物理、AI、内存分配)

blob.png


命令spacer.png描述stat Anim显示蒙皮网格体每个标记所需的计算时间。stat D3D11RHI / stat OpenGLDirect3D 11 或 OpenGL RHI。stat DumpEvents [-ms=0.1] [-all]发生事件调用时(如从蓝图调用,或调用 PhysX 任务函数),它们将被写入日志。stat DumpFrame接收指令后立即执行渲染的帧信息将被写入日志。stat DumpHitches基于 t.HitchThreshold 检测到“故障”时,将其写入日志。stat Engine显示总体渲染 stats,如帧长、以及被渲染的三角形数量。stat Game反馈诸多游戏标记所消耗的时间。stat Grouped禁用 stat Slow。stat Hitches设置 t.HitchThreshold,定义故障的时间(以秒为单位)。还将把所有故障转存至 log/visual studio debug,如 [0327.87] LogEngine:Warning:HITCH @ 00m:01s:643ms,1643,72,2.stat InitViews显示可视性剔除所花费的时间和效率。关于渲染线程性能,可视部分数量是最重要的个体 stat,它由 STAT INITVIEWS 下的可视静态网格体元素支配,但可视动态原语也对其存在影响。stat LightRendering反馈灯光和阴影所需的渲染时间。stat Memory显示虚幻引擎中诸多子系统的内存使用情况。stat Particles显示粒子计算时间和 sprite 渲染时间。stat SceneRendering显示总体渲染统计。可从此处着手寻找渲染过程中性能较慢的大体区域。stat SceneUpdate显示更新世界场景的信息,包括添加、更新和移除灯光,以及在场景中添加和移除原语所花费的时间。stat ShadowRendering显示阴影计算时间,与实际阴影渲染时间分开(已包含在 stat LightRendering 中)。stat Slow [-ms=0.3] [-maxdepth=5]

此命令将显示游戏线程和渲染线程的统计。所有 stats 将作为一个 stats 大群组进行渲染。无法访问分析工具或日志文件、或需要测试游戏的基础性能时,此命令十分实用。

以下是运行游戏中的实例:

statSlow1.png

此命令可进行如下配置:

stat slow [-ms=1.0] [-maxdepth=4]

默认只显示大于 1.0 毫秒的 stat 项目,以及超过 4 个关卡未被套入的 stat 项目。

注意:降低毫秒或增加深度均可能对整体性能产生影响。

Stat slow 对低于 0.1 毫秒的内容进行过滤,以增强性能并避免混乱。以下是减少 -ms 和增加 -maxdepth 所获得的结果:

stat slow -ms=0.3 -maxdepth=5

statSlow2.png

Stat slow 会占用大量屏幕空间,再次使用 stat slow(或 stat Grouped)将移除所有可视 stats 群组。此外,如启用其他 stats 群组,stat slow 也将被禁用。

stat Streaming显示流资源的诸多统计,如流纹理使用的内存量、或场景中流纹理的数量。stat StreamingDetails流的细节统计,将总体纹理流分解为更细致的群组(光照图、静态纹理、动态纹理)。stat Unit整体帧长、游戏线程时长、渲染线程时长、GPU 时长。stat UnitGraph查看带统计单元数据的图表,使用 stat Raw 查看未过滤的数据。


命令:ProfileGPU


附加说明:

几个对分析最有用的变量:


控制台变量描述r.SetRes改变屏幕,或窗口的分辨率。r.VSync开启/关闭垂直同步(可能依赖于是否原生全屏)。r.ScreenPercentage用于减小内部实际渲染分辨率,画面会在重新放大。r.AllowOcclusionQueries用于禁用遮挡(可以让场景运行的更慢)。r.TiledDeferredShading能够关闭基于 Tile 的延迟光照技术(GPU粒子的光影则没有退回方法)。r.TiledDeferredShading.MinimumCount能够调整使用多少灯光应用在基于 Tile 的延迟光照技术(视觉上并没有差异但性能会有不同)。Pause暂停游戏或者 Matinee(分析时更加稳定,但禁用了 Update/Tick)。Slomo能够对游戏进行加速或者减速播放。r.VisualizeOccludedPrimitives显示被裁剪掉的物件的外盒框。StartFPSChart StopFPSChart请看下文。r.SeparateTranslucency这是一个用于修复半透明情况下景深的问题的功能,如果不需要的时候可以把它关闭,并有其他影响(查阅 SceneColor)。r.Tonemapper.GrainQuantization用于关闭在 Tonemapper 中添加的噪点来避免 Color Banding,由于 8bit 量化和较小的质量改进在输出为 10:10:10 并不必须。r.SceneColorFormat能够选用不同的 SceneColor 格式(默认是 64bit 的最佳质量,并支持屏幕空间子表面散射)。FX.AllowGPUSorting禁用粒子排序(在大量粒子的使用可以妥协使用)。FX.FreezeParticleSimulation禁止粒子的更新。r.SSR.MaxRoughness调整屏幕空间反射(SSR)粗造度的最大值,并覆盖后处理中的该设置。请查阅 Show Flag VisualizeSSR。

命令行选项

有些功能可以在命令行中进行关闭,比如 UE4.exe -NoSound

几个对分析比较有用的开关是:


命令行选项描述-NoSound禁用声音和音乐系统。

-NoTextureStreaming

关闭贴图 steaming(对于隔离问题时很有帮助)。-NoVerifyGC否则需要预期在 Release 版本中每 30 秒会遇到的性能波动。-NoVSync能够更快的渲染但会导致画面撕裂,尤其是在高帧数下。-Streaming在使用 StartFPSChart/StopFPSChart 很有用,能够从一个非 windows 设备上来获取数据并用于进一步检测(假设我们是实时的 cook 数据)。

编译选项

请不要在 Debug 版本下进行性能的分析和测量。为了方便起见,我们建议针对 Development 版本做性能分析。在 Shipping 下的性能实际上会因为开发特性进一步的移除而更快。 测试当然最好是在 Shipping 中完成,但需要一些代码功能被打开才行。(比如控制台,比如 stat unit 功能)。


0 0
原创粉丝点击