首页 > 其他 > 详细

UE4打印到HUD的Stat命令

时间:2021-03-29 14:04:29      阅读:82      评论:0      收藏:0      [点我收藏+]

Stat命令(chs  en)提供了游戏和引擎各个方面的实时统计信息,输入不同参数会在屏幕HUD上显示对应统计数据。

非Shipping、非Test包才会启用STATS宏,统计逻辑才会编译进可执行二进制中,才能使用Stat命令相关的功能

若想让Shipping和Test包也有Stat命令功能,可在UnrealEngine\Engine\Source\Runtime\Core\Public\Misc\Build.h中将FORCE_USE_STATS宏定义成1

/** Compile flag to force stats to be compiled */
#ifndef FORCE_USE_STATS
    #define FORCE_USE_STATS 1
#endif

 

统计相关的所有逻辑在:UnrealEngine\Engine\Source\Runtime\Core\Public\Stats\*.hUnrealEngine\Engine\Source\Runtime\Core\Private\Stats\*.cpp

Stat类别定义在:UnrealEngine\Engine\Source\Runtime\Core\Public\Stats\Stats2.h

Stat命令的HUD绘制逻辑在StatsRender2.cpp中,3种Title头的渲染在以下函数中:

Counters   Average   Max  Min     // RenderCounterHeadings      进度条的百分比为:Average / t.TargetFrameTimeThreshold 

Memory Counters   UsedMax   Mem%   MemPool   Pool Capacity   // RenderMemoryHeadings     如:Stat memory用的是该Title头

Cycle counters (flat) | Cycle counters (hierarchy)   CallCount    InclusiveAvg  InclusiveMax   [ExclusiveAvg   ExclusiveMax]    // RenderGroupedHeadings   进度条的百分比为:InclusiveAvg / t.TargetFrameTimeThreshold  

注:t.TargetFrameTimeThreshold的缺省值为33.9 ms

各统计项解释:

Counters:当前统计项名称
Average:最近60帧记录中的平均值
Max:最近60帧记录中的最大值
Min:最近60帧记录中的最小值

Memory Counters:当前统计项名称
UsedMax:最近60帧记录中内存使用的最大值
Mem%:UsedMax在Pool Capacity中的占比

Cycle counters (flat):当前统计项名称
Cycle counters (hierarchy) :当前统计项名称(树型结构)
CallCount :最近60帧记录的平均调用次数
InclusiveAvg:最近60帧记录的平均包含时间消耗
InclusiveMax:最近60帧记录中的最大包含时间消耗
ExclusiveAvg:最近60帧记录的平均独占时间消耗
ExclusiveMax:最近60帧记录中的最大独占时间消耗

技术分享图片

 

技术分享图片

 

技术分享图片

 

Stat的Engine命令执行在UEngine::HandleStatCommand函数中

 

DECLARE_STATS_GROUP(TEXT("AI"),STATGROUP_AI, STATCAT_Advanced);   // 会定义一个类型为FStatGroup_STATGROUP_AI的结构体   那么就可以在控制台下执行Stat AI命令

 

打开控制台输入框方法

在PC上按 快捷键 ,手机上四指在屏幕上同时按下

 

一些统计项解释

GT:Game Thread

RT:Render Thread 

AT:Any Thread

TTF:True Type(TTF)字体资源

OTF:Open Type(OTF) 字体资源

 

Stat None
关闭所有统计数据的显示

对于Stat xxx命令,执行一次会开启xxx,再执行一次会关闭xxx

 

Stat fps   // 显示每秒帧数(FPS)计数器

显示当前平均帧率和每帧平均绘制时长

技术分享图片

 

平均帧率由全局变量float GAverageFPS来计算,GAverageFPS = 1000.f / GAverageMS

平均绘制时长由全局变量float GAverageMS来计算

技术分享图片

上面的设置是针对游戏的,修改后配置会保存在DefaultEngine.ini的如下标签中

[/Script/Engine.Engine]
bSmoothFrameRate=True
MinDesiredFrameRate=38.000000
SmoothedFrameRateRange=(LowerBound=(Type=Inclusive,Value=21.426044),UpperBound=(Type=Exclusive,Value=74.614174))

 

对于编辑的场景(EWorldType::Editor)或PIE游戏(EWorldType::PIE),会保存在DefaultEngine.ini的如下标签中

[/Script/UnrealEd.EditorEngine]
bSmoothFrameRate=True
SmoothedFrameRateRange=(LowerBound=(Type="ERangeBoundTypes::Inclusive",Value=8),UpperBound=(Type="ERangeBoundTypes::Inclusive",Value=110))

关掉Smooth Frame Rate,能获得精确的测量值,不然它会强行限帧到Min{SmoothedFrameRateRange}~Max{SmoothedFrameRateRange},导致瞬间峰值过滤掉。

 

Stat UNIT

技术分享图片  技术分享图片

                                       Android                                                                                                  Standalone(Windows)

 

逻辑详见:UnrealEngine\Engine\Source\Runtime\Engine\Private\UnrealClient.cpp的FStatUnitData::DrawStat函数

Frame:一帧游所花费的总时间。由于Game线程和Draw线程在完成一帧之前保持同步。Frame = MAX{Game, Draw, GPU}

Game:GameThread线程一帧耗费的时间。如果帧时接近Game线程中显示的时间,则游戏的性能很可能会受到Game线程的阻碍(负面影响)。

Draw:RenderThread线程一帧耗费的时间。如果帧时接近Draw线程中显示的时间,则游戏的性能很可能会受到渲染线程的阻碍

RHIT:RHIThread线程一帧耗费的时间(当使用独立的RHIThread才显示该项)。通常,RHI线程时间会被同步到帧上,因此它很可能与帧时相同。

Mem:VMRSS,Resident Set Size 实际使用物理内存(包含共享库占用的内存)

Draws:DrawCall数   数值来自于int32 GNumDrawCallsRHI变量

Prims:图元个数   数值来自于int32 GNumPrimitivesDrawnRHI变量

GPU:GPU渲染一帧时间。GPU时间用来衡量显卡渲染场景需要多长时间。由于GPU时间会被同步到帧上,它很可能与帧时相同。

DynRes:动态分辨率。如果支持(并启用),DynRes 将显示主要屏幕百分比和次要屏幕百分比。

 

Android平台不显示GPU统计项,可通过如下方式来开启:

① 注释掉SupportsDisjointTimeQueries函数

技术分享图片

 

 

② 在UnrealEngine\Engine\Config\BaseDeviceProfiles.ini中开启r.DisjointTimerQueries

[Android DeviceProfile]
DeviceType=Android
+CVars=r.DisjointTimerQueries=1

 

Stat UnitMax

技术分享图片     技术分享图片

                                       Android                                                                                                  Standalone(Windows) 

每一行最后数值为最近200次采样中的最大值 

Mem行第一个值为VmRSS(进程当前使用的物理内存的大小);第二个值为VmHWM(进程所使用的物理内存的峰值)

VMem行第一个值为VmSize(进程当前使用的虚拟内存的大小);第二个值为VmPeak(进程所使用的虚拟内存的峰值)

 

Stat UnitTime /  Stat UnitGraph

技术分享图片

Android:在Stat Unit基础上,添加了左上角实时绘制出Frame、Game、Draw、RHIT曲线的功能

技术分享图片

Standalone(Windows):在Stat Unit基础上,添加了左下角实时绘制出Frame、Game、Draw、GPU曲线的功能

 

Stat Raw   // 未过滤数据的Stat UnitGraph

技术分享图片

 

技术分享图片

 

Stat Detailed   // 功能等价于Stat fps  + Stat UnitMax  +  Stat UnitTime /  Stat UnitGraph

技术分享图片

                                                                                                      Android

技术分享图片

                                                                                          Standalone(Windows)

 

Stat AI    // 显示感知系统和整体AI的性能信息

技术分享图片

 

Stat Al_EQS   // 显示环境查询系统(EQS)的性能、调试和内存统计数据
Stat AICrowd  // 显示群集管理器的性能和步骤信息

技术分享图片


Stat Anim   // 显示每次tick蒙皮网格体需要多长时间进行计算

技术分享图片

技术分享图片

注:默认一个Group最多显示的行数为25,可通过执行控制台变量stats.MaxPerGroup=xx来指定新的最大行数为xx


Stat AsyncLoad   // 显示异步加载的性能统计数据      注:默认不开启,需手动开启

技术分享图片


Stat AsyncLoadGameThread

技术分享图片

技术分享图片

 

Stat AsyncIO

技术分享图片

 

Stat Audio   // 音频统计数据,如声波实例或缓冲区性能

技术分享图片

技术分享图片

 

Stat AudioStreaming

Stat AudioThreadCommands

技术分享图片

Stat Canvas  // 画布统计数据,显示画布用户界面项(例如图块、边框和文本)的性能信息

技术分享图片

 

Stat Chaos

技术分享图片

 

Stat Character

技术分享图片

技术分享图片

 

Stat Collision   // 显示碰撞的性能、调试和内存信息

技术分享图片

技术分享图片

 

Stat CollisionTags

技术分享图片

技术分享图片


Stat ColorList

技术分享图片

 

Stat CommandListMarkers   // 显示命令列表及命令性能信息

技术分享图片

 

技术分享图片


Stat Component   // 显示组件列表及组件性能信息

技术分享图片

 

Stat Compression  // 显示压缩统计数据

技术分享图片

 

Stat CrunchMemory

技术分享图片

 

Stat CPULoad // 显示CPU利用率


Stat CPUStalls  // 显示有关CPU停转的信息

技术分享图片


Stat D3D11RHI // 显示Direct3D 11 RHI统计数据

技术分享图片


Stat DDC   // 显示派生数据缓存(DDC)统计数据

技术分享图片


Stat Engine   // 显示一般渲染状态,例如帧时间,以及正在渲染的三角形数量的计数器

技术分享图片

 

Stat Foliage

技术分享图片

 

Stat Game // 提供有关各个游戏Tick需要多长时间的反馈

技术分享图片


Stat GameplayTags   // 显示游戏进程标签信息

技术分享图片

技术分享图片


Stat GC   // 显示垃圾回收统计数据

技术分享图片

技术分享图片


Stat GeometryCache   // 显示几何体缓存系统的性能和内存统计数据

技术分享图片

技术分享图片

 

Stat GPU // 显示帧的GPU统计数据   注:android平台上没有输出

技术分享图片


Stat GPUParticles   // 显示GPU粒子的性能信息

技术分享图片

 

Stat GPUSkinCache

技术分享图片

 

Stat IMEWindows  // 显示Windows文本输入法系统的信息

技术分享图片

 

Stat InitViews  // 显示有关可见性剔除花费了多长时间以及效果如何的信息。可见分段计数是渲染线程性能方面最重要的一个统计量,它由STAT INITVIEWS下的可见静态网格体元素控制;不过,可见动态原语也有影响

技术分享图片

技术分享图片


Stat KismetCompiler   // 显示Kismet编译器信息

技术分享图片

 

Stat KismetReinstancer  // 显示Kismet Reinstancer信息

技术分享图片


Stat Landscape

技术分享图片

技术分享图片


Stat LEVELS // 显示level streaming信息

技术分享图片

关卡颜色代码说明

绿色:关卡已加载并可见。
红色:关卡已卸载。
橙色:关卡正在变成可见的过程中。
黄色:关卡已加载,但不可见。
蓝色:关卡已卸载,但仍驻留在内存中,当发生垃圾回收时将清除它。
紫色:关卡是预加载的。

 

Stat LightRendering   // 提供有关渲染光照和阴影需要多长时间的反馈

技术分享图片


Stat LinkerCount   // 显示linker计数器

技术分享图片

技术分享图片


Stat LinkerLoad   // 显示linker加载信息

技术分享图片

 

Stat LLM   // 显示低级内存追踪器(LLM)计数器

技术分享图片

 

Stat LLMFULL   // 显示整个LLM计数器组

技术分享图片

 

Stat LLMOverhead   // 显示LLM开销计数器

技术分享图片


Stat LLMPlatform   // 显示LLM平台计数器

技术分享图片


Stat LoadTime   // 显示加载时间性能信息

技术分享图片

技术分享图片

 

Stat LoadTimeVerbose

技术分享图片


Stat MapBuildData    // 显示地图的编译数据

技术分享图片

技术分享图片

 

Stat MathVerbose   // 显示数学运算的性能信息

技术分享图片


Stat Media

技术分享图片


Stat Memory // 显示有关虚幻引擎中各个子系统使用多少内存的统计数据

技术分享图片

技术分享图片

 

Stat MemoryAllocator

技术分享图片

 

Stat MemoryPlatform   // 显示内存平台信息

技术分享图片

 

技术分享图片


Stat MemoryStaticMesh  // 显示有关静态网格体的内存统计数据

技术分享图片

 

技术分享图片


Stat NamedEvents // 为外部分析器启用指定事件

技术分享图片

 

Stat Navigation   // 显示导航系统的性能和内存信息

技术分享图片


Stat NET   // 显示网络系统统计数据

技术分享图片


Stat Niagara

技术分享图片

技术分享图片


Stat NiagaraOverview

技术分享图片

 

Stat object   // 显示对象内存和性能信息

技术分享图片


Stat ObjectVerbose   // 默认是关闭的   需手动开启

技术分享图片


Stat Online   // 显示在线系统计数器

技术分享图片

 

Stat Packet

技术分享图片

 

Stat PakFile   // 显示Pakfile系统统计数据

技术分享图片

 

Stat ParallelCommandListMarkers  // 显示并行命令列表及并行命令性能信息

技术分享图片
Stat PARTICLES   // 显示粒子系统性能信息

技术分享图片

 

技术分享图片

Stat ParticleMem

技术分享图片


Stat Physics // 显示物理性能统计数据

技术分享图片


Stat PhysXTasks   // 显示PhysX任务信息

技术分享图片


Stat PhysXVehicleManager   // 显示PhysX载具管理器的统计数据

技术分享图片


Stat PlayerController   // 显示玩家控制器性能信息

技术分享图片


Stat PSCWorIdMan
Stat Quick   // 快速显示总体性能数据组

技术分享图片

 

技术分享图片

 

Stat RDG

技术分享图片

 

Stat RenderTargetPool   // 显示渲染目标池的内存和性能统计数据

技术分享图片


Stat RenderThreadCommands   // 列出渲染线程命令及性能信息,找出耗时较高的Comand

技术分享图片


Stat RHI   // 显示RHI内存和性能统计数据

技术分享图片


Stat RHICMDLIST   // 显示RHI命令列表及性能统计数据

技术分享图片

 

技术分享图片

 

Stat SceneMemory   // 显示场景内存计数器

技术分享图片


Stat SceneRendering   // 显示一般渲染统计数据。这是一个很好的起点,可以发现渲染过程中性能低下的一般方面

技术分享图片

 

技术分享图片

 

Stat SceneUpdate   // 显示有关更新场景的信息,包括添加、更新和删除光源以及添加和删除场景中的原语所花费的时间

技术分享图片


Stat SCRIPT   // 显示脚本统计数据
Stat ShaderCompiling   // 显示着色器编译信息

技术分享图片 技术分享图片

 

技术分享图片

 

Stat PipelineStateCache

技术分享图片


Stat Shaders   // 显示着色器压缩统计数据

技术分享图片

技术分享图片


Stat ShadowRendering   // 显示阴影计算花费多长时间,该时间不同于 stat LightRendering 中包括的实际阴影渲染时间

技术分享图片

 

 技术分享图片


Stat ShadowRenderingVerbose

技术分享图片

 

Stat Slate   // 显示Slate性能统计数据

技术分享图片

 

Stat SlateVerbose   // 默认不开启,需手动开启

技术分享图片

 

Stat SlateMemory   // 显示Slate内存计数器

技术分享图片


Stat SoundCues // 显示活动的Sound Cue

技术分享图片


Stat SoundMixes // 显示活动的SoundMix

技术分享图片


Stat SoundModulators // Shows modulator debug info as provided by active audio modulation plugin

技术分享图片


Stat SoundModulatorsHelp // Shows modulator debug help provided by active audio modulation plugin
Stat SoundReverb // Shows active SoundReverb

技术分享图片


Stat Sounds // <sort=class l distance l name l prioritytime l volume l waves> <-debug> shows all active sounds. Displays value sorted by when sort is set  // 显示活动的SoundCue和SoundWave

技术分享图片


Stat SoundWaves // 显示活动的SoundWave

技术分享图片

 

Stat splitscreen   // 显示分屏信息

Stat StatSystem   // 显示统计系统的性能和内存信息

技术分享图片

 

Stat Streaming // 显示流送资源的基本统计数据,例如使用了多少内存流送纹理,或者场景中有多少流送纹理。

技术分享图片


Stat StreamingDetails // 有关流送的更详细的统计信息,例如将一般纹理流分解为更具体的组(光照贴图、静态纹理和动态纹理)

技术分享图片


Stat StreamingDetailsVerbose

技术分享图片

 

Stat StreamingOverview   // 显示流送资源的统计数据概述

技术分享图片


Stat Summary

技术分享图片

 

Stat TargetPlatform   // 显示目标平台信息

技术分享图片


Stat TaskGraphTasks  // 显示TaskGraph任务的性能数据

技术分享图片

 

Stat Text   // 显示文本的性能统计数据

技术分享图片


Stat TextureGroup   // 显示纹理组内存计数器

技术分享图片

 

Stat TexturePool

技术分享图片


Stat Threading   // 显示线程处理信息

技术分享图片


Stat ThreadPoolAsyncTasks   // 显示ThreadPool Async任务计数器

技术分享图片


Stat Threads   // 显示线程信息

技术分享图片

 

Stat Tickables    // 显示Tickable的性能统计数据

技术分享图片

技术分享图片

 

Stat TickGroups   // 显示Tick组的性能统计数据

技术分享图片

 

Stat Timecode

技术分享图片

 

Stat UI    // 显示UI性能信息

技术分享图片

 

Stat UObjectHash   // 显示散列的UObject信息   默认不打开,需手动开启

技术分享图片


Stat uobjects   // 显示游戏中UObject的性能统计数据

技术分享图片

 

Stat Version

技术分享图片

 

Stat VirtualTextureMemory

技术分享图片

 

Stat VTP

技术分享图片

 

Stat AndroidCPU

技术分享图片

 

Stat OpenGLRHI

技术分享图片

 

Stat MetalRHI

技术分享图片

 

Stat VulkanMemoryRaw

技术分享图片

 

Stat VulkanMemory

技术分享图片

 

Stat VulkanPSO

技术分享图片

 

Stat VulkanRHI

技术分享图片

 

Stat D3D12RayTracing

技术分享图片

 

Stat D3D12RHI

技术分享图片

 

Stat D3D12Memory

技术分享图片

 

Stat D3D12PipelineState

技术分享图片


Stat D3D12DescriptorHeap

技术分享图片

 

UE4打印到HUD的Stat命令

原文:https://www.cnblogs.com/kekec/p/14591872.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!