UE4纹理技术及相关命令
纹理(Texture)是材质中使用的图像。一个材质可能会有一张基础颜色的纹理贴图,一张高光纹理和一张法线贴图。除此以外,还有可能有自发光贴图以及粗造度贴图。另外,纹理也可以在材质之外直接使用,如绘制到HUD。
在大多数情况下,纹理在PhotoShop等外部软件里面创建,然后导入虚幻编辑器中。然而,有些纹理(如渲染纹理),则从场景中获取一些信息实时生成出来,并在其他地方使用。
虚幻引擎最大纹理mip数量为15,即最大渲染纹理size为16384。注:能支持多大size取决于图形硬件和驱动,目前PC和主机上顶级显卡最大可支持16384。
详见:UnrealEngine\Engine\Source\Runtime\RHI\Public\RHIDefinitions.h中的enum { MAX_TEXTURE_MIP_COUNT = 15 }
在UnrealEngine\Engine\Config\BaseDeviceProfiles.ini还可以进一步对不同Texture Group的纹理单独配置支持的最大纹理尺寸。
[/Script/Engine.TextureLODSettings] TextureLODGroups=(Group=TEXTUREGROUP_World,MinLODSize=1,MaxLODSize=16384,LODBias=0,MinMagFilter=aniso,MipFilter=point,MipGenSettings=TMGS_SimpleAverage,NumStreamedMips=-1)
FTextureLODGroup中各字段说明:
字段 | 缺省值 | 解释 |
TextureGroup Group | TEXTUREGROUP_World | 纹理分组 |
int32 MinLODMipCount | 0 | 最小Mip索引值 例如:为0时表示最小mip的级别为1 |
int32 MaxLODMipCount | 12 | 最大Mip索引值 例如:为12时表示最大mip的级别为13 |
int32 LODBias | 0 |
Texture Group(纹理分组)的LOD偏移 一个负值或正值,cook时确定要偏移的mip级别数量(会去掉高精度的mip,能有效减小包体) |
int32 LODBias_Smaller | -1 | 【低内存适配】Smaller档位内存(Android、IOS下为3-4GB)手机的LODBias |
int32 LODBias_Smallest | -1 | 【低内存适配】Smallest档位内存(Android为3GB、IOS下为2GB)手机的LODBias |
ETextureSamplerFilter Filter | Mip采样类型 如:Point(最近点采样),linear(线性插值采样)、Anisotropic(各向异性采样) | |
int32 NumStreamedMips | -1 |
NumStreamedMips为允许流送(Streaming)的mip数量。 |
TextureMipGenSettings MipGenSettings | TextureMipGenSettings::TMGS_SimpleAverage | 自动Mip生成的算法 如:SimpleAverage、Sharpen0、...、Sharpen10、NoMipmaps、LeaveExistingMips、Blur1、Blur2、...、Blur5 |
int32 MinLODSize | 1 | 渲染的最小mip的size,以像素为单位指定,为范围1到16384中的2的幂值 |
int32 MaxLODSize | 4096 | 渲染的最大mip的size,以像素为单位指定,为范围1到16384中的2的幂值 |
int32 MaxLODSize_Smaller | -1 | 【低内存适配】Smaller档位内存(Android、IOS下为3-4GB)手机的MaxLODSize |
int32 MaxLODSize_Smallest | -1 | 【低内存适配】Smallest档位内存(Android为3GB、IOS下为2GB)手机的MaxLODSize |
FName MinMagFilter | NAME_Aniso | 缩小或放大某层mip纹理的采样类型 如:Point、Linear、Aniso |
FName MipFilter | NAME_Point | 不同mip层进行混合采样的类型 如:Point、Linear |
ETextureMipLoadOptions MipLoadOptions | ETextureMipLoadOptions::AllMips | mip加载选项 ①Default:使用LODGroup中的设置 ②AllMips:加载所有mips ③OnlyFirstMip:仅加载最高级别的Mip |
mip级别和size的关系如下:
Mip1 | Mip2 | Mip3 | Mip4 | Mip5 | Mip6 | Mip7 | Mip8 | Mip9 | Mip10 | Mip11 | Mip12 | Mip13 | Mip14 | Mip15 |
1x1 | 2x2 | 4x4 | 8x8 | 16x16 | 32x32 | 64x64 | 128x128 | 256x256 | 512x512 | 1024x1024 | 2048x2048 | 4096x4096 | 8192x8192 | 16384x16384 |
即:size=2^(级别-1)。另外,64x64的级别也可以用-1表示(内部转换时,当为-1时会将级别修改为7)
需要注意的是,虚幻引擎对<=7的mip不进行流送,是常驻内存的。
贴图(Texture2D)
注1:Maximum Texture Size为长边的最大纹理size,缺省值为0
注2:使用LeaveExistingMips,可以导入外部制作好的mipmap(只能是ARGB8888格式的dds)
注3:贴图Combined LOD Bias(最终的LOD偏移)最后由贴图属性中的LOD Bias、Num Cinematic Mip Levels(数值为1表示将贴图在游戏中的分辨率降低1个mip等级,而播放过场动画时不做降低)、Texture Group中的LOD Bias叠加得到。
具体计算逻辑详见:UTextureLODSettings::CalculateLODBias函数
注4:烘焙贴图时,会将贴图中的Texture.LODBias +TextureGroup.LODBias个级别的高清mip层都删除掉(防止包体太大)。
在过场动画时,使用的mip层级为剔除完Texture.LODBias +TextureGroup.LODBias后的剩余部分。而其他正常游戏时,使用的mip还要继续去掉NumCinematicMipLevels个高清mip层数。
注5:勾选Never Stream,所有mip将始终常驻内存
注6:更多Texture2D属性字段的说明,详见:纹理属性
MipMap
注1:勾上Mip Level,选择Level级别,会强制使用当前mip级别进行预览。
注2:不勾Mip Level,放大缩小贴图时,会根据MinMagFilter和MipFilter设定的过滤算法(各TextureGroup有指定自己的MinMagFilter和MipFilter),来显示贴图的像素颜色
mip级别和size的关系如下:
级别 | Mip1 | Mip2 | Mip3 | Mip4 | Mip5 | Mip6 | Mip7 | Mip8 | Mip9 | Mip10 | Mip11 | Mip12 | Mip13 |
Level | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
size | 1x1 | 2x2 | 4x4 | 8x8 | 16x16 | 32x32 | 64x64 | 128x128 | 256x256 | 512x512 | 1024x1024 | 2048x2048 | 4096x4096 |
颜色 | 白 | 白 | 白 | 白 | 白 | 白 | 紫 | 靛 | 蓝 | 绿 | 黄 | 橙 | 红 |
以下实验,修改完贴图的Filter之后,需重启编辑器来验证:
Filter为Nearest 注:MinMagFilter=point,MipFilter=point
或Filter为Bi-linear 注:MinMagFilter=linear,MipFilter=point
Filter为Tri-linear 注:MinMagFilter=linear,MipFilter=linear
Filter为Default(From Texture Group) 注:MinMagFilter=aniso,MipFilter=point 或MinMagFilter=aniso,MipFilter=linear
r.MipMapLODBias 0 // 不对mipmap精度进行偏移
r.MipMapLODBias 2 // 将mipmap精度降低2级
r.MipMapLODBias -2 // 将mipmap精度提高2级
贴图数组(TextureArray)
选择分辨率一样的贴图,然后右键选择“Create Texture Array”来创建贴图数组资源
创建出来的贴图数组资源如下:
立方体贴图(CubeMap)
立方体贴图(CubeMap)提供了一种进行环境映射的简单方法,通过这种方法,像天空、周围环境这样的远景可以映射到一个全景贴图上。
在底层,这些贴图存储为6张图片,映射到立方体的内表面上。更多信息详见:立方体贴图
3D贴图(TextureVolume)
3D贴图,又叫体积纹理,是一种特殊类型的资源,可以帮助在2D纹理中存储和使用3D体积信息。更多信息详见:体积纹理
LightMap和ShadowMap
当关卡xxxxx有LightMap(光照贴图)和ShadowMap(阴影贴图)时,会保存在xxxxx_BuiltData.uasset文件中。
在Levels面板中双击xxxxx关卡,可将xxxxx关卡设为当前关卡,然后切换到World Settings面板的Lightmass标签,就可以看到xxxxx关卡的LightMap和ShadowMap。双击这些LightMap和ShadowMap,即可打开。
Lightmass烘焙出的LightMap
Lightmass烘焙出的ShadowMap
注:计算颜色时,直接将LightMap、ShadowMap与BaseColor进行相乘
设备分档(DeviceProfile)
可通过菜单:Window -- Developer Tools -- Device Profiles来打开Device Profiles面板
注:左边面板每项前有一个小尖锥的图标,向下为Pin状态,表明该项会显示在右边list中,向右为UnPin状态,则表示该项不要显示在右边list中
载入Device Profiles面板上数据
按照如下顺序进行覆盖读取(后面覆盖前面的数据):
① 引擎的UnrealEngine\Engine\Config\BaseDeviceProfiles.ini
② 项目的Config\DefaultDeviceProfiles.ini(若存在的话)
③ 项目的Saved\Config\Windows\DeviceProfiles.ini (若存在的话)
保存Device Profiles面板上数据
点击右上角上的Save as Default按钮后,会将Device Profiles面板上的所有值保存到项目的Config\DefaultDeviceProfiles.ini 注:如果没有,则会创建一个
如果修改的数值,没有点击Save as Default按钮,则在关闭编辑器时,会将修改保存在项目的Saved\Config\Windows\DeviceProfiles.ini的临时文件中
继承关系
以Windows平台为例来进行说明
① 名称为Windows、WindowsNoEditor、WindowsServer、WindowsClient都属于Windows类型的平台
② WindowsNoEditor(windows客户端cook版本)、WindowsServer(windows ds cook版本)、WindowsClient会继承并覆写Windows的Profile数值 注:它们的Base Profile Name都为Windows
③ 修改Windows的Profile数值会影响所有的windows类型的程序(后续被覆写的数值除外)
以下为IOS相关的数据:
更多设备描述信息详见:设置设备描述、自定义Android的设备描述和可延展性
控制台变量(Console Variable)
r.TextureStreaming 0 // 关闭texture streaming。即使在纹理从来没有被用于渲染,所有纹理mip都将被完全加载到内存中。内存会暴增。
可进行如下设置来开启项目的TextureStreaming
这个设置会保存到DefaultEngine.ini中
[/Script/Engine.RendererSettings] r.TextureStreaming=True
注1:可通过控制台变量r.TextureStreaming 0/1来动态修改关闭和开启Texture Streaming。关闭后,所有的mip都将被完全加载到内存中。
注2:开启了TextureStreaming之后,引擎会基于纹素大小(texel size)和物体的bounds来计算各个像素(pixel)最适合比例的纹理lod级别。若所需内存超过PoolSize大小,会取更小size的纹理lod级别。
r.Streaming.PoolSize // 查看当前texture streaming内存池的大小 注1:该Pool包含UI纹理、NeverStream纹理、CubeMap和流送纹理。在某些平台上,这个池还可以保存非纹理资源,例如GPU粒子缓冲区和顶点缓冲区。 注2:该Pool为Texture显存的上限。
r.Streaming.PoolSize 0 // 设置texture streaming内存池的大小为不受限制
r.Streaming.PoolSize 100 // 设置texture streaming内存池的大小为100MB 注:也可通过stat streaming来看到其当前大小
Required Pool:纹理流送器需要根据其指标加载的mip数据量。Required Pool超过r.Streaming.PoolSize时,会进行一些妥协,部分纹理将不会以其所要求的分辨率加载。
Visible Mips:可见纹理mip当前占用的内存。这并不包含Forced Mips。
Hidden Mips:非可见纹理mip当前占用的内存。这并不包含Forced Mips。为防止首次显示纹理时出现低精度纹理,流送器会提前预流送纹理,但通常会比所需要的少一个 mip(详见 r.Streaming.HiddenPrimitiveScale)。
Forced Mips:强制流入纹理当前占据的内存。纹理通常通过游戏性机制在一小段时间内强制流入。这并不包含NonStreaming Mips。
Cached Mips:不再需要的纹理mip所占据的缓存。当纹理流送器内存不够时,会被释放用来流入所需的Mips。
Wanted Mips:实际流入的所需池大小。达到 100% 后,流送器将停止发送 IO 请求加载新 mip。Wanted Mips 等于 Visible Mips + Hidden Mips + Forced Mips + UnknownRef Mips
Safety Pool:Engine配置文件中,[TextureStreaming]标签下的MemoryMargin配置的数值。
Temporary Pool:调整纹理大小时流送器可用的额外内存量,由r.Streaming.MaxTempMemoryAllowed 控制。
Streaming Pool:为r.Streaming.PoolSize配置的数值。流送器通常会将所有可用内存用于流送新 mip,或将之前流送的 mip 尽可能久地保存在内存中。
Streaming当前实际占用的内存为:约等于Visible Mips + Hidden Mips + Force Mips + UnknownRef Mips + Cached Mips。
NonStreaming Mips:常驻Mips占用的内存。
Texture使用的内存约等于 Safety Pool(5 MB) + Temporary Pool(50 MB) + Visible Mips(0.15 MB) + Hidden Mips(0.0 MB) + Force Mips(0.0 MB) + UnknownRef Mips(42.68 MB) + Cached Mips(0.0 MB) + NonStreaming Mips(66.4 MB) = 164.23 MB
更多stat streaming说明请参考:报告纹理流送指标
当r.Streaming.PoolSize很小时,会在左上角提示:TEXTURE STREAMING POOL OVER XXX MiB BUDGET
场景中显示的纹理也会变得很糊,效果不好
r.Streaming.PoolSizeForMeshes 1 // Mesh使用独立的PoolSize,为-1(缺省值)时Mesh和Texture共用Pool 单位MB
r.Streaming.FramesForFullUpdate 1000 // 每次完整更新的帧数间隔设为100帧。缺省值为5帧。每次更新都会重新计算每个纹理所需的分辨率,并生成mip加载或卸载请求。较高的值会降低纹理流送器CPU使用率,而较低的值则会提高其反应能力。
r.Streaming.MaxTempMemoryAllowed 30 // 设置更新纹理的临时内存量为30MB,缺省为20MB。设置太大会浪费内存,设置过小则会让纹理流送器的吞吐量低。
r.Streaming.HLODStrategy 0 // 将HLOD的Stream策略为0 注:0 : 允许流送所有mip。 1 : 仅流送最后一个mip,始终加载其他mip。 2 : 不流送任何mip,始终加载所有mip。
r.Streaming.DropMips 2 // 丢掉Cache Mips和Hidden Mips 注:0 : 不丢掉任何mip。 1 : 丢掉缓存的mip。 2 : 丢掉缓存和隐藏的mip。
r.Streaming.HiddenPrimitiveScale 0.8 // 物体不可见(即其边界框被遮挡)时,提前将最大分辨率的0.8倍对应分辨率的mip载入,防止首次显示纹理时出现低精度纹理。
r.Streaming.UsePerTextureBias 1 // 设置为1表示每个贴图使用自己的Bias,不使用全局MipBias
r.Streaming.MipBias 3 // 设置全局的MipBias为3,所有贴图、静态模型都会从最高精度向下偏移3个层级的mip 注1:r.Streaming.UsePerTextureBias需设置为0,该命令才会生效 注2:不影响地形贴图的Bias。不限制HLOD贴图的最大分辨率。对LightMap和ShadowMap仅限制最大分辨率
r.Streaming.TextureMipBias 2 // 设置全局的MipBias为2,所有贴图都会从最高精度向下偏移2个层级的mip 注:uam自己扩展的命令
r.UITextureLODBias 1 // 设置所有UI贴图的MipBias为1 注1:UI贴图需要包含mipmap数据 注2:对已经加载了UI贴图不生效,对后续加载的UI贴图生效
更多控制台变量详见:纹理流送配置
一些全局变量
/** True if the RHI supports texture streaming */ extern RHI_API bool GRHISupportsTextureStreaming; /** Amount of memory allocated by textures. In kilobytes. */ extern RHI_API volatile int32 GCurrentTextureMemorySize; /** Amount of memory allocated by rendertargets. In kilobytes. */ extern RHI_API volatile int32 GCurrentRendertargetMemorySize; /** Current texture streaming pool size, in bytes. 0 means unlimited. */ extern RHI_API int64 GTexturePoolSize;
对于场景中的StaticMesh对象,可勾选Force Mip Streaming,让该物件所有的MipMap贴图常驻内存
注:设置StaticMeshActor的Streaming Distance Multiplier(流送距离乘数)的值,会影响StaticMeshActor的Primitive Distance的数值。
构建纹理流送(Build Texture Streaming)
执行Build Texture Streaming,会将以下信息保存到关卡的umap及BuiltData.uasset文件中
① Primitive的bound
② StaticMesh的纹理坐标大小
③ 对每个纹理采样的纹理坐标的scale
利用这些信息,引擎可以更准确地按照距离选择Texture对应的mip层级 注:如果没有build,引擎会使用保守式启发的算法来选择
画质分档(Scalability)
将Quality分为Low(0)、Medium(1)、High(2)、Epic(3)、Cinematic(4),共五档。
更多信息详见:UnrealEngine\Engine\Source\Runtime\Engine\Public\Scalability.h、UnrealEngine\Engine\Source\Runtime\Engine\Private\Scalability.cpp
在编辑器中设置如下:
当关闭编辑器时,会保存在UnrealEngine\Engine\Saved\Config\Windows\EditorSettings.ini中
[ScalabilityGroups] sg.ResolutionQuality=100.000000 sg.ViewDistanceQuality=3 sg.AntiAliasingQuality=3 sg.ShadowQuality=3 sg.PostProcessQuality=3 sg.TextureQuality=1 sg.EffectsQuality=3 sg.FoliageQuality=3 sg.ShadingQuality=3
具体各级别对应数值配置在:UnrealEngine\Engine\Config\BaseScalability.ini
[TextureQuality@1] r.Streaming.MipBias=1 r.Streaming.AmortizeCPUToGPUCopy=0 r.Streaming.MaxNumTexturesToStreamPerFrame=0 ;每帧流送纹理的最大个数,为0表示不限制 r.Streaming.Boost=1 r.MaxAnisotropy=2 r.VT.MaxAnisotropy=4 r.Streaming.LimitPoolSizeToVRAM=1 r.Streaming.PoolSize=600 r.Streaming.MaxEffectiveScreenSize=0
; ... ... [AntiAliasingQuality@3] r.PostProcessAAQuality=4 [ViewDistanceQuality@3] r.SkeletalMeshLODBias=0 r.ViewDistanceScale=1.0 [ShadowQuality@3] r.LightFunctionQuality=1 r.ShadowQuality=5 r.Shadow.CSM.MaxCascades=10 r.Shadow.MaxResolution=2048 r.Shadow.MaxCSMResolution=2048 r.Shadow.RadiusThreshold=0.01 r.Shadow.DistanceScale=1.0 r.Shadow.CSM.TransitionScale=1.0 r.Shadow.PreShadowResolutionFactor=1.0 r.DistanceFieldShadowing=1 r.DistanceFieldAO=1 r.AOQuality=2 r.VolumetricFog=1 r.VolumetricFog.GridPixelSize=8 r.VolumetricFog.GridSizeZ=128 r.VolumetricFog.HistoryMissSupersampleCount=4 r.LightMaxDrawDistanceScale=1 r.CapsuleShadows=1 [PostProcessQuality@3] r.MotionBlurQuality=4 r.AmbientOcclusionMipLevelFactor=0.4 r.AmbientOcclusionMaxQuality=100 r.AmbientOcclusionLevels=-1 r.AmbientOcclusionRadiusScale=1.0 r.DepthOfFieldQuality=2 r.RenderTargetPoolMin=400 r.LensFlareQuality=2 r.SceneColorFringeQuality=1 r.EyeAdaptationQuality=2 r.BloomQuality=5 r.FastBlurThreshold=100 r.Upscale.Quality=3 r.Tonemapper.GrainQuantization=1 r.LightShaftQuality=1 r.Filter.SizeScale=1 r.Tonemapper.Quality=5 ; DOF settings. r.DOF.Gather.AccumulatorQuality=1 ; higher gathering accumulator quality r.DOF.Gather.PostfilterMethod=1 ; Median3x3 postfilering method r.DOF.Gather.EnableBokehSettings=0 ; no bokeh simulation when gathering r.DOF.Gather.RingCount=4 ; medium number of samples when gathering r.DOF.Scatter.ForegroundCompositing=1 ; additive foreground scattering r.DOF.Scatter.BackgroundCompositing=2 ; additive background scattering r.DOF.Scatter.EnableBokehSettings=1 ; bokeh simulation when scattering r.DOF.Scatter.MaxSpriteRatio=0.1 ; only a maximum of 10% of scattered bokeh r.DOF.Recombine.Quality=1 ; cheap slight out of focus r.DOF.Recombine.EnableBokehSettings=0 ; no bokeh simulation on slight out of focus r.DOF.TemporalAAQuality=1 ; more stable temporal accumulation r.DOF.Kernel.MaxForegroundRadius=0.025 r.DOF.Kernel.MaxBackgroundRadius=0.025 [EffectsQuality@3] r.TranslucencyLightingVolumeDim=64 r.RefractionQuality=2 r.SSR.Quality=3 r.SSR.HalfResSceneColor=0 r.SceneColorFormat=4 r.DetailMode=2 r.TranslucencyVolumeBlur=1 r.MaterialQualityLevel=1 ; High quality r.AnisotropicMaterials=1 r.SSS.Scale=1 r.SSS.SampleSet=2 r.SSS.Quality=1 r.SSS.HalfRes=0 r.SSGI.Quality=3 r.EmitterSpawnRateScale=1.0 r.ParticleLightQuality=2 r.SkyAtmosphere.AerialPerspectiveLUT.FastApplyOnOpaque=1 ; Always have FastSkyLUT 1 in this case to avoid wrong sky r.SkyAtmosphere.AerialPerspectiveLUT.SampleCountMaxPerSlice=4 r.SkyAtmosphere.AerialPerspectiveLUT.DepthResolution=16.0 r.SkyAtmosphere.FastSkyLUT=1 r.SkyAtmosphere.FastSkyLUT.SampleCountMin=4.0 r.SkyAtmosphere.FastSkyLUT.SampleCountMax=128.0 r.SkyAtmosphere.SampleCountMin=4.0 r.SkyAtmosphere.SampleCountMax=128.0 r.SkyAtmosphere.TransmittanceLUT.UseSmallFormat=0 r.SkyAtmosphere.TransmittanceLUT.SampleCount=10.0 r.SkyAtmosphere.MultiScatteringLUT.SampleCount=15.0 fx.Niagara.QualityLevel=3 [FoliageQuality@3] foliage.DensityScale=1.0 grass.DensityScale=1.0 ;foliage.DiscardDataOnLoad=0 ;grass.DiscardDataOnLoad=0 [ShadingQuality@3] r.HairStrands.SkyLighting.IntegrationType=2 r.HairStrands.SkyAO.SampleCount=4 r.HairStrands.Visibility.MSAA.SamplePerPixel=4 r.HairStrands.Interpolation.UseSingleGuide=0
; ... ...
更多信息请查看: 可延展性参考
使用代码来整体一起来设置Quality
FQualityLevels CurrQualityLevels = Scalability::GetQualityLevels(); CurrQualityLevels.SetFromSingleQualityLevel(LevelNum); // LevelNum : 0(Low), 1(Medium), 2(High), 3(Epic), 4(Cinematic) Scalability::SetQualityLevels(CurrQualityLevels, true);
FQualityLevels结构体详见:
/** UnrealEngine\Engine\Source\Runtime\Engine\Public\Scalability.h */ namespace Scalability { // ... ... /** * Structure for holding the state of the engine scalability groups * Actual engine state you can get though GetQualityLevels(). **/ struct ENGINE_API FQualityLevels { float ResolutionQuality; int32 ViewDistanceQuality; int32 AntiAliasingQuality; int32 ShadowQuality; int32 PostProcessQuality; int32 TextureQuality; int32 EffectsQuality; int32 FoliageQuality; int32 ShadingQuality; // ... ... }; // ... ... };
使用控制台命令来设置Quality
SCALABILITY auto // 自动执行Scalability::BenchmarkQualityLevels()来测试cpu和gpu性能,来决定给各个子项分别设置什么档位,并将信息保存ini配置文件中
SCALABILITY reapply // 获取当前Scalability::GetQualityLevels()来设置一遍
SCALABILITY cine // 设置到最高Cinematic档位,并将信息保存ini配置文件中
SCALABILITY N // 当N为1即设置到Medium档位,并将信息保存ini配置文件中
各个子项单独用命令来设置
sg.AntiAliasingQuality | Scalability quality state (internally used by scalability system, ini load/save or using SCALABILITY console command) 0:low, 1:med, 2:high, 3:epic, 4:cinematic, default: 3 |
sg.AntiAliasingQuality.NumLevels | Number of settings quality levels in sg.AntiAliasingQuality default: 5 (0..4) |
sg.EffectsQuality | Scalability quality state (internally used by scalability system, ini load/save or using SCALABILITY console command) 0:low, 1:med, 2:high, 3:epic, 4:cinematic, default: 3 |
sg.EffectsQuality.NumLevels | Number of settings quality levels in sg.EffectsQuality default: 5 (0..4) |
sg.FoliageQuality | Scalability quality state (internally used by scalability system, ini load/save or using SCALABILITY console command) 0:low, 1:med, 2:high, 3:epic, 4:cinematic, default: 3 |
sg.FoliageQuality.NumLevels | Number of settings quality levels in sg.FoliageQuality default: 5 (0..4) |
sg.PostProcessQuality | Scalability quality state (internally used by scalability system, ini load/save or using SCALABILITY console command) 0:low, 1:med, 2:high, 3:epic, 4:cinematic, default: 3 |
sg.PostProcessQuality.NumLevels | Number of settings quality levels in sg.PostProcessQuality default: 5 (0..4) |
sg.ResolutionQuality | Scalability quality state (internally used by scalability system, ini load/save or using SCALABILITY console command) 10..100, default: 100 |
sg.ShadingQuality | Scalability quality state (internally used by scalability system, ini load/save or using SCALABILITY console command) 0:low, 1:med, 2:high, 3:epic, 4:cinematic, default: 3 |
sg.ShadingQuality.NumLevels | Number of settings quality levels in sg.ShadingQuality default: 5 (0..4) |
sg.ShadowQuality | Scalability quality state (internally used by scalability system, ini load/save or using SCALABILITY console command) 0:low, 1:med, 2:high, 3:epic, 4:cinematic, default: 3 |
sg.ShadowQuality.NumLevels | Number of settings quality levels in sg.ShadowQuality default: 5 (0..4) |
sg.TextureQuality | Scalability quality state (internally used by scalability system, ini load/save or using SCALABILITY console command) 0:low, 1:med, 2:high, 3:epic, 4:cinematic, default: 3 |
sg.TextureQuality.NumLevels | Number of settings quality levels in sg.TextureQuality default: 5 (0..4) |
sg.ViewDistanceQuality | Scalability quality state (internally used by scalability system, ini load/save or using SCALABILITY console command) 0:low, 1:med, 2:high, 3:epic, 4:cinematic, default: 3 |
sg.ViewDistanceQuality.NumLevels | Number of settings quality levels in sg.ViewDistanceQuality default: 5 (0..4) |
载入Scalability数据
Windows下会按照如下顺序进行覆盖读取(后面覆盖前面的数据):
① 引擎的UnrealEngine\Engine\Config\BaseScalability.ini
② 项目的Config\DefaultScalability.ini(若存在的话)
③ 项目的Saved\Config\Windows\Scalability.ini (若存在的话)
Android下会按照如下顺序进行覆盖读取(后面覆盖前面的数据):
① 引擎的UnrealEngine\Engine\Config\BaseScalability.ini
② 项目的Config\DefaultScalability.ini(若存在的话)
③ 引擎的UnrealEngine\Engine\Config\Android\AndroidScalability.ini
④ 项目的R6Game\Config\Android\AndroidScalability.ini(若存在的话)
⑤ 项目的Saved\Config\Android\Scalability.ini (若存在的话)
IOS下会按照如下顺序进行覆盖读取(后面覆盖前面的数据):
① 引擎的UnrealEngine\Engine\Config\BaseScalability.ini
② 项目的Config\DefaultScalability.ini(若存在的话)
③ 引擎的UnrealEngine\Engine\Config\IOS\IOSScalability.ini
④ 项目的R6Game\Config\IOS\IOSScalability.ini(若存在的话)
⑤ 项目的Saved\Config\IOS\Scalability.ini (若存在的话)
Exec命令
具体实现详见:UnrealEngine\Engine\Source\Runtime\Engine\Private\Streaming\StreamingManagerTexture.cpp的bool FRenderAssetStreamingManager::Exec函数 注:非SHIPPING包这些命令才有效。
DumpTextureStreamingStats // 打印Texture Streaming池的状态
DumpRenderAssetStreamingStats // 同上
[2022.03.22-15.14.48:879][215]LogTemp: |UnrealEngine.cpp:1969|UEngine::TickDeferredCommands-----------------Exec Commands:DumpTextureStreamingStats [2022.03.22-15.14.48:897][215]-------------------------------------------------------- [2022.03.22-15.14.48:897][215]Texture Streaming Stats: [2022.03.22-15.14.48:897][215]Total Pool Size (aka RenderAssetPool) = 8796093022208.00 MB [2022.03.22-15.14.48:897][215]Non-Streaming Mips = 35.82 MB [2022.03.22-15.14.48:897][215]Remaining Streaming Pool Size = 30.01 MB [2022.03.22-15.14.48:897][215]Streaming Assets, Current/Pool = 3.24 / 30.01 MB (11%) [2022.03.22-15.14.48:897][215]Streaming Assets, Target/Pool = 10.01 / 30.01 MB (33%) [2022.03.22-15.14.48:897][215]--------------------------------------------------------
ListStreamingTextures // 列出进行TextureStreaming的贴图
[2022.03.22-15.24.16:898][705]LogTemp: |UnrealEngine.cpp:1969|UEngine::TickDeferredCommands-----------------Exec Commands:ListStreamingTextures [2022.03.22-15.24.16:916][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [43] : LightMapTexture2D /Game/FrontEnd/Levels/SelectMap/SelectMapLevel_BuiltData.SelectMapLevel_BuiltData:LQ_Lightmap_1_1 [2022.03.22-15.24.16:917][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=1x1 Wanted=1x1 MaxAllowed=2048x2048 BudgetBias=0 Group=TEXTUREGROUP_Lightmap [2022.03.22-15.24.16:917][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [42] : Texture2D /Engine/EngineMaterials/BlendFunc_DefBase.BlendFunc_DefBase [2022.03.22-15.24.16:917][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=1x1 Wanted=1x1 MaxAllowed=16x16 BudgetBias=0 Group=TEXTUREGROUP_World [2022.03.22-15.24.16:917][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [41] : Texture2D /Engine/EngineMaterials/BlendFunc_DefBlend.BlendFunc_DefBlend [2022.03.22-15.24.16:917][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=1x1 Wanted=1x1 MaxAllowed=16x16 BudgetBias=0 Group=TEXTUREGROUP_World [2022.03.22-15.24.16:917][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [4] : Texture2D /Engine/EngineMaterials/DefaultDiffuse.DefaultDiffuse [2022.03.22-15.24.16:917][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=1x1 Wanted=1x1 MaxAllowed=1024x1024 BudgetBias=0 Group=TEXTUREGROUP_World [2022.03.22-15.24.16:918][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [12] : Texture2D /Engine/EngineMaterials/DefaultWhiteGrid.DefaultWhiteGrid [2022.03.22-15.24.16:918][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=1x1 Wanted=1x1 MaxAllowed=128x128 BudgetBias=0 Group=TEXTUREGROUP_World [2022.03.22-15.24.16:918][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [10] : Texture2D /Engine/EngineMaterials/InvalidLightmapSettings.InvalidLightmapSettings [2022.03.22-15.24.16:918][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=1x1 Wanted=1x1 MaxAllowed=512x512 BudgetBias=0 Group=TEXTUREGROUP_World [2022.03.22-15.24.16:918][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [3] : Texture2D /Engine/EngineMaterials/T_Default_Material_Grid_M.T_Default_Material_Grid_M [2022.03.22-15.24.16:918][705]LogContentStreaming: |StreamingManagerTexture.cpp:2189| Current=1x1 Wanted=1x1 MaxAllowed=512x512 LastRenderTime=4274.307 BudgetBias=0 Group=TEXTUREGROUP_World [2022.03.22-15.24.16:918][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [2] : Texture2D /Engine/EngineMaterials/T_Default_Material_Grid_N.T_Default_Material_Grid_N [2022.03.22-15.24.16:918][705]LogContentStreaming: |StreamingManagerTexture.cpp:2189| Current=1x1 Wanted=1x1 MaxAllowed=256x256 LastRenderTime=4274.307 BudgetBias=0 Group=TEXTUREGROUP_WorldNormalMap [2022.03.22-15.24.16:918][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [11] : Texture2D /Engine/EngineMaterials/WeightMapPlaceholderTexture.WeightMapPlaceholderTexture [2022.03.22-15.24.16:919][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=1x1 Wanted=1x1 MaxAllowed=2x2 BudgetBias=0 Group=TEXTUREGROUP_World [2022.03.22-15.24.16:919][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [1] : Texture2D /Engine/EngineResources/Black.Black [2022.03.22-15.24.16:919][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=1x1 Wanted=1x1 MaxAllowed=32x32 BudgetBias=0 Group=TEXTUREGROUP_World [2022.03.22-15.24.16:921][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [5] : Texture2D /Engine/EngineResources/DefaultTexture.DefaultTexture [2022.03.22-15.24.16:921][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=1x1 Wanted=1x1 MaxAllowed=128x128 BudgetBias=0 Group=TEXTUREGROUP_World [2022.03.22-15.24.16:922][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [0] : Texture2D /Engine/EngineResources/WhiteSquareTexture.WhiteSquareTexture [2022.03.22-15.24.16:922][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=1x1 Wanted=1x1 MaxAllowed=32x32 BudgetBias=0 Group=TEXTUREGROUP_World [2022.03.22-15.24.16:922][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [9] : Texture2D /Engine/Functions/Engine_MaterialFunctions02/ExampleContent/Textures/CylindricalNormals.CylindricalNormals [2022.03.22-15.24.16:922][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=1x1 Wanted=1x1 MaxAllowed=1x128 BudgetBias=0 Group=TEXTUREGROUP_WorldNormalMap [2022.03.22-15.24.16:922][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [108] : Texture2D /Game/ArtResource/Assets/Avatar/Gloves/Textures/Chr_M01_Gloves_01_D.Chr_M01_Gloves_01_D [2022.03.22-15.24.16:922][705]LogContentStreaming: |StreamingManagerTexture.cpp:2189| Current=64x64 Wanted=1024x1024 MaxAllowed=1024x1024 LastRenderTime=0.000 BudgetBias=0 Group=TEXTUREGROUP_CharacterDiffuse [2022.03.22-15.24.16:922][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [107] : Texture2D /Game/ArtResource/Assets/Avatar/Gloves/Textures/Chr_M01_Gloves_01_MA.Chr_M01_Gloves_01_MA [2022.03.22-15.24.16:922][705]LogContentStreaming: |StreamingManagerTexture.cpp:2189| Current=64x64 Wanted=512x512 MaxAllowed=512x512 LastRenderTime=0.000 BudgetBias=0 Group=TEXTUREGROUP_CharacterMetallicAndAO [2022.03.22-15.24.16:922][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [106] : Texture2D /Game/ArtResource/Assets/Avatar/Gloves/Textures/Chr_M01_Gloves_01_NR.Chr_M01_Gloves_01_NR [2022.03.22-15.24.16:923][705]LogContentStreaming: |StreamingManagerTexture.cpp:2189| Current=64x64 Wanted=1024x1024 MaxAllowed=1024x1024 LastRenderTime=0.000 BudgetBias=0 Group=TEXTUREGROUP_CharacterNormalAndRoughness [2022.03.22-15.24.16:923][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [89] : Texture2D /Game/ArtResource/Assets/Avatar/Gloves/Textures/Chr_Npc06_Gloves_01_D.Chr_Npc06_Gloves_01_D [2022.03.22-15.24.16:923][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=64x64 Wanted=64x64 MaxAllowed=512x512 BudgetBias=0 Group=TEXTUREGROUP_CharacterDiffuse [2022.03.22-15.24.16:923][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [88] : Texture2D /Game/ArtResource/Assets/Avatar/Gloves/Textures/Chr_Npc06_Gloves_01_MA.Chr_Npc06_Gloves_01_MA [2022.03.22-15.24.16:923][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=64x64 Wanted=64x64 MaxAllowed=256x256 BudgetBias=0 Group=TEXTUREGROUP_CharacterMetallicAndAO [2022.03.22-15.24.16:923][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [87] : Texture2D /Game/ArtResource/Assets/Avatar/Gloves/Textures/Chr_Npc06_Gloves_01_NR.Chr_Npc06_Gloves_01_NR [2022.03.22-15.24.16:923][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=64x64 Wanted=64x64 MaxAllowed=512x512 BudgetBias=0 Group=TEXTUREGROUP_CharacterNormalAndRoughness [2022.03.22-15.24.16:923][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [98] : Texture2D /Game/ArtResource/Assets/Avatar/Hair/Textures/Chr_M01_Hair_Eyebrown_SkinType0_01_D.Chr_M01_Hair_Eyebrown_SkinType0_01_D [2022.03.22-15.24.16:924][705]LogContentStreaming: |StreamingManagerTexture.cpp:2189| Current=64x64 Wanted=512x512 MaxAllowed=512x512 LastRenderTime=0.000 BudgetBias=0 Group=TEXTUREGROUP_CharacterDiffuse [2022.03.22-15.24.16:924][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [97] : Texture2D /Game/ArtResource/Assets/Avatar/Hair/Textures/Chr_M01_Hair_Eyebrown_SkinType0_01_HSR.Chr_M01_Hair_Eyebrown_SkinType0_01_HSR [2022.03.22-15.24.16:924][705]LogContentStreaming: |StreamingManagerTexture.cpp:2189| Current=64x64 Wanted=512x512 MaxAllowed=512x512 LastRenderTime=0.000 BudgetBias=0 Group=TEXTUREGROUP_CharacterHightlightShiftRoot [2022.03.22-15.24.16:924][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [96] : Texture2D /Game/ArtResource/Assets/Avatar/Hair/Textures/Chr_M01_Hair_Eyebrown_SkinType0_01_NR.Chr_M01_Hair_Eyebrown_SkinType0_01_NR [2022.03.22-15.24.16:924][705]LogContentStreaming: |StreamingManagerTexture.cpp:2189| Current=64x64 Wanted=256x256 MaxAllowed=256x256 LastRenderTime=0.000 BudgetBias=0 Group=TEXTUREGROUP_CharacterNormalAndRoughness [2022.03.22-15.24.16:924][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [76] : Texture2D /Game/ArtResource/Assets/Avatar/Hair/Textures/Chr_M01_Hair_Eyebrows_02_HSR.Chr_M01_Hair_Eyebrows_02_HSR [2022.03.22-15.24.16:924][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=64x64 Wanted=64x64 MaxAllowed=512x512 BudgetBias=0 Group=TEXTUREGROUP_CharacterHightlightShiftRoot [2022.03.22-15.24.16:924][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [75] : Texture2D /Game/ArtResource/Assets/Avatar/Hair/Textures/Chr_NPC06_Hair_01_HSR.Chr_NPC06_Hair_01_HSR [2022.03.22-15.24.16:924][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=64x64 Wanted=64x64 MaxAllowed=512x512 BudgetBias=0 Group=TEXTUREGROUP_CharacterHightlightShiftRoot [2022.03.22-15.24.16:925][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [74] : Texture2D /Game/ArtResource/Assets/Avatar/Hair/Textures/Chr_NPC07_Hair_01_NR.Chr_NPC07_Hair_01_NR [2022.03.22-15.24.16:925][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=64x64 Wanted=64x64 MaxAllowed=256x256 BudgetBias=0 Group=TEXTUREGROUP_CharacterNormalAndRoughness [2022.03.22-15.24.16:925][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [77] : Texture2D /Game/ArtResource/Assets/Avatar/Hair/Textures/Chr_NPC07_Hair_Beard_01_HSR.Chr_NPC07_Hair_Beard_01_HSR [2022.03.22-15.24.16:925][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=64x64 Wanted=64x64 MaxAllowed=512x512 BudgetBias=0 Group=TEXTUREGROUP_CharacterHightlightShiftRoot [2022.03.22-15.24.16:925][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [103] : Texture2D /Game/ArtResource/Assets/Avatar/Head/Textures/Chr_M01_Head_SkinType2_02_D.Chr_M01_Head_SkinType2_02_D [2022.03.22-15.24.16:925][705]LogContentStreaming: |StreamingManagerTexture.cpp:2189| Current=64x64 Wanted=1024x1024 MaxAllowed=1024x1024 LastRenderTime=0.000 BudgetBias=0 Group=TEXTUREGROUP_CharacterDiffuse [2022.03.22-15.24.16:925][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [99] : Texture2D /Game/ArtResource/Assets/Avatar/Head/Textures/Chr_M01_Head_SkinType2_02_NR.Chr_M01_Head_SkinType2_02_NR [2022.03.22-15.24.16:925][705]LogContentStreaming: |StreamingManagerTexture.cpp:2189| Current=64x64 Wanted=1024x1024 MaxAllowed=1024x1024 LastRenderTime=0.000 BudgetBias=0 Group=TEXTUREGROUP_CharacterNormalAndRoughness [2022.03.22-15.24.16:925][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [105] : Texture2D /Game/ArtResource/Assets/Avatar/Head/Textures/Chr_M01_Teeth_SkinType0_01_D.Chr_M01_Teeth_SkinType0_01_D [2022.03.22-15.24.16:926][705]LogContentStreaming: |StreamingManagerTexture.cpp:2189| Current=64x64 Wanted=128x128 MaxAllowed=128x128 LastRenderTime=0.000 BudgetBias=0 Group=TEXTUREGROUP_CharacterDiffuse [2022.03.22-15.24.16:926][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [104] : Texture2D /Game/ArtResource/Assets/Avatar/Head/Textures/Chr_M01_Teeth_SkinType0_01_NR.Chr_M01_Teeth_SkinType0_01_NR [2022.03.22-15.24.16:926][705]LogContentStreaming: |StreamingManagerTexture.cpp:2189| Current=64x64 Wanted=128x128 MaxAllowed=128x128 LastRenderTime=0.000 BudgetBias=0 Group=TEXTUREGROUP_CharacterNormalAndRoughness [2022.03.22-15.24.16:926][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [83] : Texture2D /Game/ArtResource/Assets/Avatar/Head/Textures/Chr_NPC07_Head_01_D.Chr_NPC07_Head_01_D [2022.03.22-15.24.16:926][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=64x64 Wanted=64x64 MaxAllowed=256x256 BudgetBias=0 Group=TEXTUREGROUP_CharacterDiffuse [2022.03.22-15.24.16:926][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [82] : Texture2D /Game/ArtResource/Assets/Avatar/Head/Textures/Chr_NPC07_Head_01_MA.Chr_NPC07_Head_01_MA [2022.03.22-15.24.16:926][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=64x64 Wanted=64x64 MaxAllowed=128x128 BudgetBias=0 Group=TEXTUREGROUP_CharacterMetallicAndAO [2022.03.22-15.24.16:926][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [81] : Texture2D /Game/ArtResource/Assets/Avatar/Head/Textures/Chr_NPC07_Head_01_NR.Chr_NPC07_Head_01_NR [2022.03.22-15.24.16:926][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=64x64 Wanted=64x64 MaxAllowed=256x256 BudgetBias=0 Group=TEXTUREGROUP_CharacterNormalAndRoughness [2022.03.22-15.24.16:927][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [86] : Texture2D /Game/ArtResource/Assets/Avatar/Leg/Textures/Chr_Npc06_Leg_01_D.Chr_Npc06_Leg_01_D [2022.03.22-15.24.16:927][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=64x64 Wanted=64x64 MaxAllowed=512x512 BudgetBias=0 Group=TEXTUREGROUP_CharacterDiffuse [2022.03.22-15.24.16:927][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [85] : Texture2D /Game/ArtResource/Assets/Avatar/Leg/Textures/Chr_Npc06_Leg_01_MA.Chr_Npc06_Leg_01_MA [2022.03.22-15.24.16:927][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=64x64 Wanted=64x64 MaxAllowed=256x256 BudgetBias=0 Group=TEXTUREGROUP_CharacterMetallicAndAO [2022.03.22-15.24.16:927][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [84] : Texture2D /Game/ArtResource/Assets/Avatar/Leg/Textures/Chr_Npc06_Leg_01_NR.Chr_Npc06_Leg_01_NR [2022.03.22-15.24.16:927][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=64x64 Wanted=64x64 MaxAllowed=512x512 BudgetBias=0 Group=TEXTUREGROUP_CharacterNormalAndRoughness [2022.03.22-15.24.16:927][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [111] : Texture2D /Game/ArtResource/Assets/Avatar/Leg/Textures/Chr_Npc_Leg_Instructor_01_D.Chr_Npc_Leg_Instructor_01_D [2022.03.22-15.24.16:928][705]LogContentStreaming: |StreamingManagerTexture.cpp:2189| Current=512x512 Wanted=512x512 MaxAllowed=512x512 LastRenderTime=0.000 BudgetBias=0 Group=TEXTUREGROUP_CharacterDiffuse [2022.03.22-15.24.16:928][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [110] : Texture2D /Game/ArtResource/Assets/Avatar/Leg/Textures/Chr_Npc_Leg_Instructor_01_MA.Chr_Npc_Leg_Instructor_01_MA [2022.03.22-15.24.16:928][705]LogContentStreaming: |StreamingManagerTexture.cpp:2189| Current=256x256 Wanted=256x256 MaxAllowed=256x256 LastRenderTime=0.000 BudgetBias=0 Group=TEXTUREGROUP_CharacterMetallicAndAO [2022.03.22-15.24.16:928][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [109] : Texture2D /Game/ArtResource/Assets/Avatar/Leg/Textures/Chr_Npc_Leg_Instructor_01_NR.Chr_Npc_Leg_Instructor_01_NR [2022.03.22-15.24.16:928][705]LogContentStreaming: |StreamingManagerTexture.cpp:2189| Current=512x512 Wanted=512x512 MaxAllowed=512x512 LastRenderTime=0.000 BudgetBias=0 Group=TEXTUREGROUP_CharacterNormalAndRoughness [2022.03.22-15.24.16:928][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [114] : Texture2D /Game/ArtResource/Assets/Avatar/Shoes/Textures/Chr_NPC01_02_shoes_Instructor_D.Chr_NPC01_02_shoes_Instructor_D [2022.03.22-15.24.16:928][705]LogContentStreaming: |StreamingManagerTexture.cpp:2189| Current=256x256 Wanted=256x256 MaxAllowed=256x256 LastRenderTime=0.000 BudgetBias=0 Group=TEXTUREGROUP_CharacterDiffuse [2022.03.22-15.24.16:928][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [113] : Texture2D /Game/ArtResource/Assets/Avatar/Shoes/Textures/Chr_NPC01_02_shoes_Instructor_MA.Chr_NPC01_02_shoes_Instructor_MA [2022.03.22-15.24.16:929][705]LogContentStreaming: |StreamingManagerTexture.cpp:2189| Current=128x128 Wanted=128x128 MaxAllowed=128x128 LastRenderTime=0.000 BudgetBias=0 Group=TEXTUREGROUP_CharacterMetallicAndAO [2022.03.22-15.24.16:929][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [112] : Texture2D /Game/ArtResource/Assets/Avatar/Shoes/Textures/Chr_NPC01_02_shoes_Instructor_NR.Chr_NPC01_02_shoes_Instructor_NR [2022.03.22-15.24.16:929][705]LogContentStreaming: |StreamingManagerTexture.cpp:2189| Current=256x256 Wanted=256x256 MaxAllowed=256x256 LastRenderTime=0.000 BudgetBias=0 Group=TEXTUREGROUP_CharacterNormalAndRoughness [2022.03.22-15.24.16:929][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [73] : Texture2D /Game/ArtResource/Assets/Avatar/Shoes/Textures/Chr_Npc06_shoes_01_D.Chr_Npc06_shoes_01_D [2022.03.22-15.24.16:929][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=64x64 Wanted=64x64 MaxAllowed=256x256 BudgetBias=0 Group=TEXTUREGROUP_CharacterDiffuse [2022.03.22-15.24.16:929][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [72] : Texture2D /Game/ArtResource/Assets/Avatar/Shoes/Textures/Chr_Npc06_shoes_01_MA.Chr_Npc06_shoes_01_MA [2022.03.22-15.24.16:929][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=64x64 Wanted=64x64 MaxAllowed=128x128 BudgetBias=0 Group=TEXTUREGROUP_CharacterMetallicAndAO [2022.03.22-15.24.16:929][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [71] : Texture2D /Game/ArtResource/Assets/Avatar/Shoes/Textures/Chr_Npc06_shoes_01_NR.Chr_Npc06_shoes_01_NR [2022.03.22-15.24.16:929][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=64x64 Wanted=64x64 MaxAllowed=256x256 BudgetBias=0 Group=TEXTUREGROUP_CharacterNormalAndRoughness [2022.03.22-15.24.16:930][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [16] : Texture2D /Game/ArtResource/Assets/Avatar/Torso/Textures/Chr_F01_Torso_01_D.Chr_F01_Torso_01_D [2022.03.22-15.24.16:930][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=64x64 Wanted=64x64 MaxAllowed=1024x1024 BudgetBias=0 Group=TEXTUREGROUP_CharacterDiffuse [2022.03.22-15.24.16:930][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [15] : Texture2D /Game/ArtResource/Assets/Avatar/Torso/Textures/Chr_F01_Torso_01_MA.Chr_F01_Torso_01_MA [2022.03.22-15.24.16:930][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=64x64 Wanted=64x64 MaxAllowed=512x512 BudgetBias=0 Group=TEXTUREGROUP_CharacterMetallicAndAO [2022.03.22-15.24.16:930][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [14] : Texture2D /Game/ArtResource/Assets/Avatar/Torso/Textures/Chr_F01_Torso_01_NR.Chr_F01_Torso_01_NR [2022.03.22-15.24.16:930][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=64x64 Wanted=64x64 MaxAllowed=1024x1024 BudgetBias=0 Group=TEXTUREGROUP_CharacterNormalAndRoughness [2022.03.22-15.24.16:930][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [117] : Texture2D /Game/ArtResource/Assets/Avatar/Torso/Textures/Chr_M01_Torso_01_01_D.Chr_M01_Torso_01_01_D [2022.03.22-15.24.16:930][705]LogContentStreaming: |StreamingManagerTexture.cpp:2189| Current=1024x1024 Wanted=1024x1024 MaxAllowed=1024x1024 LastRenderTime=0.000 BudgetBias=0 Group=TEXTUREGROUP_CharacterDiffuse [2022.03.22-15.24.16:931][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [116] : Texture2D /Game/ArtResource/Assets/Avatar/Torso/Textures/Chr_M01_Torso_01_01_MA.Chr_M01_Torso_01_01_MA [2022.03.22-15.24.16:931][705]LogContentStreaming: |StreamingManagerTexture.cpp:2189| Current=512x512 Wanted=512x512 MaxAllowed=512x512 LastRenderTime=0.000 BudgetBias=0 Group=TEXTUREGROUP_CharacterMetallicAndAO [2022.03.22-15.24.16:931][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [115] : Texture2D /Game/ArtResource/Assets/Avatar/Torso/Textures/Chr_M01_Torso_01_01_NR.Chr_M01_Torso_01_01_NR [2022.03.22-15.24.16:931][705]LogContentStreaming: |StreamingManagerTexture.cpp:2189| Current=1024x1024 Wanted=1024x1024 MaxAllowed=1024x1024 LastRenderTime=0.000 BudgetBias=0 Group=TEXTUREGROUP_CharacterNormalAndRoughness [2022.03.22-15.24.16:931][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [19] : Texture2D /Game/ArtResource/Assets/Avatar/Torso/Textures/Chr_M01_Torso_merge_D.Chr_M01_Torso_Merge_D [2022.03.22-15.24.16:931][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=64x64 Wanted=64x64 MaxAllowed=1024x1024 BudgetBias=0 Group=TEXTUREGROUP_CharacterDiffuse [2022.03.22-15.24.16:931][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [18] : Texture2D /Game/ArtResource/Assets/Avatar/Torso/Textures/Chr_M01_Torso_merge_MA.Chr_M01_Torso_Merge_MA [2022.03.22-15.24.16:931][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=64x64 Wanted=64x64 MaxAllowed=512x512 BudgetBias=0 Group=TEXTUREGROUP_CharacterMetallicAndAO [2022.03.22-15.24.16:932][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [17] : Texture2D /Game/ArtResource/Assets/Avatar/Torso/Textures/Chr_M01_Torso_Merge_NR.Chr_M01_Torso_Merge_NR [2022.03.22-15.24.16:932][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=64x64 Wanted=64x64 MaxAllowed=1024x1024 BudgetBias=0 Group=TEXTUREGROUP_CharacterNormalAndRoughness [2022.03.22-15.24.16:932][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [92] : Texture2D /Game/ArtResource/Assets/Avatar/Torso/Textures/Chr_Npc06_Torso_01_D.Chr_Npc06_Torso_01_D [2022.03.22-15.24.16:932][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=64x64 Wanted=64x64 MaxAllowed=512x512 BudgetBias=0 Group=TEXTUREGROUP_CharacterDiffuse [2022.03.22-15.24.16:932][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [91] : Texture2D /Game/ArtResource/Assets/Avatar/Torso/Textures/Chr_Npc06_Torso_01_MA.Chr_Npc06_Torso_01_MA [2022.03.22-15.24.16:932][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=64x64 Wanted=64x64 MaxAllowed=256x256 BudgetBias=0 Group=TEXTUREGROUP_CharacterMetallicAndAO [2022.03.22-15.24.16:932][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [90] : Texture2D /Game/ArtResource/Assets/Avatar/Torso/Textures/Chr_Npc06_Torso_01_NR.Chr_Npc06_Torso_01_NR [2022.03.22-15.24.16:932][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=64x64 Wanted=64x64 MaxAllowed=512x512 BudgetBias=0 Group=TEXTUREGROUP_CharacterNormalAndRoughness [2022.03.22-15.24.16:932][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [25] : Texture2D /Game/ArtResource/Assets/Effects/SceneEffectsLibrary/UIMap/ResourcePool/Tile/T_FX_Tile_0021.T_FX_Tile_0021 [2022.03.22-15.24.16:933][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=64x64 Wanted=64x64 MaxAllowed=256x256 BudgetBias=0 Group=TEXTUREGROUP_Effects [2022.03.22-15.24.16:933][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [40] : Texture2D /Game/ArtResource/Assets/Effects/SceneEffectsLibrary/UIMap/ResourcePool/Tile/T_FX_Tile_0111.T_FX_Tile_0111 [2022.03.22-15.24.16:933][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=64x64 Wanted=64x64 MaxAllowed=512x512 BudgetBias=0 Group=TEXTUREGROUP_Effects 。。。 。。。 [2022.03.22-15.24.16:939][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [131] : Texture2D /Game/ArtResource/Assets/Effects/SourceMaterial/Textures/MiscTexture/T_SmokeBall_01_8_9.T_SmokeBall_01_8_9 [2022.03.22-15.24.16:940][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=64x64 Wanted=64x64 MaxAllowed=1024x1024 BudgetBias=0 Group=TEXTUREGROUP_Effects [2022.03.22-15.24.16:940][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [129] : Texture2D /Game/ArtResource/Assets/Effects/SourceMaterial/Textures/MiscTexture/TFX_Fire_11.TFX_Fire_11 [2022.03.22-15.24.16:940][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=64x64 Wanted=64x64 MaxAllowed=256x256 BudgetBias=0 Group=TEXTUREGROUP_Effects [2022.03.22-15.24.16:940][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [128] : Texture2D /Game/ArtResource/Assets/Effects/SourceMaterial/Textures/MiscTexture/TFX_Fire_12.TFX_Fire_12 [2022.03.22-15.24.16:940][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=64x64 Wanted=64x64 MaxAllowed=512x512 BudgetBias=0 Group=TEXTUREGROUP_Effects [2022.03.22-15.24.16:940][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [127] : Texture2D /Game/ArtResource/Assets/Effects/SourceMaterial/Textures/MiscTexture/TFX_Fire_13_01.TFX_Fire_13_01 [2022.03.22-15.24.16:940][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=64x64 Wanted=64x64 MaxAllowed=512x512 BudgetBias=0 Group=TEXTUREGROUP_Effects [2022.03.22-15.24.16:940][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [61] : Texture2D /Game/ArtResource/Assets/Effects/SourceMaterial/Textures/MiscTexture/TFX_Mask_07_04.TFX_Mask_07_04 [2022.03.22-15.24.16:941][705]LogContentStreaming: |StreamingManagerTexture.cpp:2198| Current=1x64 Wanted=1x64 MaxAllowed=4x256 BudgetBias=0 Group=TEXTUREGROUP_Effects [2022.03.22-15.24.16:941][705]LogContentStreaming: |StreamingManagerTexture.cpp:2170|Texture [58] : Texture2D /Game/ArtResource/Assets/Effects/SourceMaterial/Textures/MiscTexture/TFX_Mask_10.TFX_Mask_10
InvestigateTexture Chr_M01_Hat_Begadi_Helmbezug_D // 查看名为Chr_M01_Hat_Begadi_Helmbezug_D的贴图目前在内存中的状态
InvestigateRenderAsset Chr_M01_Hat_Begadi_Helmbezug_D // 同上
[2022.03.22-14.13.15:306][494]LogContentStreaming: |StreamingManagerTexture.cpp:2546|Texture: Texture2D /Game/ArtResource/Assets/Equipment/Hat/Textures/Chr_M01_Hat_Begadi_Helmbezug_D.Chr_M01_Hat_Begadi_Helmbezug_D [2022.03.22-14.13.15:306][494]LogContentStreaming: |StreamingManagerTexture.cpp:2558| LOD group: TEXTUREGROUP_CharacterDiffuse [Bucket=Default] [2022.03.22-14.13.15:306][494]LogContentStreaming: |StreamingManagerTexture.cpp:2580| Force all mips: bForceFullyLoad [2022.03.22-14.13.15:307][494]LogContentStreaming: |StreamingManagerTexture.cpp:2589| Current size [Mips]: 256x256 [9] [2022.03.22-14.13.15:307][494]LogContentStreaming: |StreamingManagerTexture.cpp:2590| Wanted size [Mips]: 256x256 [9] [2022.03.22-14.13.15:307][494]LogContentStreaming: |StreamingManagerTexture.cpp:2597| Allowed mips: 7-9 [9] [2022.03.22-14.13.15:307][494]LogContentStreaming: |StreamingManagerTexture.cpp:2598| LoadOrder Priority: 0 [2022.03.22-14.13.15:307][494]LogContentStreaming: |StreamingManagerTexture.cpp:2599| Retention Priority: 3840 [2022.03.22-14.13.15:307][494]LogContentStreaming: |StreamingManagerTexture.cpp:2600| Boost factor: 0.7 [2022.03.22-14.13.15:307][494]LogContentStreaming: |StreamingManagerTexture.cpp:2603| bIs1P: 1 [2022.03.22-14.13.15:307][494]LogContentStreaming: |StreamingManagerTexture.cpp:2724| Mip bias: 0 [LODGroup.Bias:0(1)] [2022.03.22-14.13.15:307][494]LogContentStreaming: |StreamingManagerTexture.cpp:2728| Time: World=15.939 LastUpdate=15.358 [2022.03.22-14.13.15:308][494]LogContentStreaming: |StreamingManagerTexture.cpp:2735| View0: Position=(X=210.072 Y=-55.710 Z=8677.272) ScreenSize=1920.000000 MaxEffectiveScreenSize=0.000000 Boost=1.000000
ListMaterialsWithMissingTextureStreamingData // 列出缺少Texture数据的材质
[2022.03.22-14.25.06:586][869]LogTemp: |UnrealEngine.cpp:1969|UEngine::TickDeferredCommands-----------------Exec Commands:ListMaterialsWithMissingTextureStreamingData [2022.03.22-14.25.06:608][869]Listing all materials with not texture streaming data. [2022.03.22-14.25.06:609][869]Run "BuildMaterialTextureStreamingData" in the editor to fix the issue [2022.03.22-14.25.06:609][869]Note that some materials might have no that even after rebuild. [2022.03.22-14.25.06:610][869]Material /Engine/EngineMaterials/WorldGridMaterial.WorldGridMaterial [2022.03.22-14.25.06:610][869]Material /Engine/EngineMaterials/DefaultDeferredDecalMaterial.DefaultDeferredDecalMaterial [2022.03.22-14.25.06:610][869]Material /Engine/EngineMaterials/DefaultPostProcessMaterial.DefaultPostProcessMaterial [2022.03.22-14.25.06:610][869]Material /Paper2D/DefaultSpriteMaterial.DefaultSpriteMaterial [2022.03.22-14.25.06:611][869]Material /MFClimate/OldSunSky/M_Sky.M_Sky [2022.03.22-14.25.06:611][869]Material /Engine/EngineMaterials/Widget3DPassThrough.Widget3DPassThrough [2022.03.22-14.25.06:611][869]Material /Engine/EngineMaterials/M_InvalidLightmapSettings.M_InvalidLightmapSettings [2022.03.22-14.25.06:611][869]Material /Game/Startup/UI/Atlas/S_Startup/M_UI_WorldUV.M_UI_WorldUV 。。。 。。。 [2022.03.22-14.25.06:617][869]MaterialInstanceConstant /Game/ArtResource/Assets/Weapons/ShotGuns/MP133/Materials/MI_WP_weapon_izhmeh_mp133_12g.MI_WP_weapon_izhmeh_mp133_12g [2022.03.22-14.25.06:617][869]MaterialInstanceConstant /Game/ArtResource/Assets/Weapons/ShotGuns/MP133/Materials/MI_MP133_Far.MI_MP133_Far [2022.03.22-14.25.06:617][869]MaterialInstanceConstant /Game/ArtResource/Assets/Weapons/ShotGuns/MP133/Materials/MI_WP_mag_mp133_izhmeh_12g_6.MI_WP_mag_mp133_izhmeh_12g_6 [2022.03.22-14.25.06:617][869]MaterialInstanceConstant /Game/ArtResource/Assets/Weapons/ShotGuns/MP133/Materials/MI_WP_handguard_mp133_custom_rail.MI_WP_handguard_mp133_custom_rail [2022.03.22-14.25.06:617][869]MaterialInstanceConstant /Game/ArtResource/Assets/Weapons/ShotGuns/MP133/Materials/MI_WP_barrel_mp133_660mm.MI_WP_barrel_mp133_660mm [2022.03.22-14.25.06:618][869]MaterialInstanceConstant /Game/ArtResource/Assets/Weapons/ShotGuns/MP133/Materials/MI_WP_stock_mp133_plastic_long.MI_WP_stock_mp133_plastic_long
StreamingManagerMemory // 打印所有StreamingMananger共占用的内存
[2022.03.22-14.31.47:067][821]LogTemp: |UnrealEngine.cpp:1969|UEngine::TickDeferredCommands-----------------Exec Commands:StreamingManagerMemory [2022.03.22-14.31.47:085][821]StreamingManagerTexture: 80.90 KB used
PauseTextureStreaming // 暂停或开启TextureStreaming 注:暂停之后,装备新枪AK74N后,其颜色贴图WP_weapon_izhmash_aks74n_545x39_D的Current Size为精度非常低的Mip了
PauseRenderAssetStreaming // 同上
[2022.03.22-14.38.35:253][126]LogTemp: |UnrealEngine.cpp:1969|UEngine::TickDeferredCommands-----------------Exec Commands:InvestigateTexture WP_weapon_izhmash_aks74n_545x39_D [2022.03.22-14.38.35:265][126]LogContentStreaming: |StreamingManagerTexture.cpp:2546|Texture: Texture2D /Game/ArtResource/Assets/Weapons/AssaultRifles_Carbines/AK74N/Textures/WP_weapon_izhmash_aks74n_545x39_D.WP_weapon_izhmash_aks74n_545x39_D [2022.03.22-14.38.35:265][126]LogContentStreaming: |StreamingManagerTexture.cpp:2558| LOD group: TEXTUREGROUP_WeaponDiffuse [Bucket=Default] [2022.03.22-14.38.35:265][126]LogContentStreaming: |StreamingManagerTexture.cpp:2580| Force all mips: bForceFullyLoad [2022.03.22-14.38.35:265][126]LogContentStreaming: |StreamingManagerTexture.cpp:2589| Current size [Mips]: 64x32 [7] [2022.03.22-14.38.35:265][126]LogContentStreaming: |StreamingManagerTexture.cpp:2590| Wanted size [Mips]: 1024x512 [11] [2022.03.22-14.38.35:265][126]LogContentStreaming: |StreamingManagerTexture.cpp:2597| Allowed mips: 7-11 [11] [2022.03.22-14.38.35:265][126]LogContentStreaming: |StreamingManagerTexture.cpp:2598| LoadOrder Priority: 1792 [2022.03.22-14.38.35:266][126]LogContentStreaming: |StreamingManagerTexture.cpp:2599| Retention Priority: 3840 [2022.03.22-14.38.35:266][126]LogContentStreaming: |StreamingManagerTexture.cpp:2600| Boost factor: 0.7 [2022.03.22-14.38.35:266][126]LogContentStreaming: |StreamingManagerTexture.cpp:2603| bIs1P: 0 [2022.03.22-14.38.35:266][126]LogContentStreaming: |StreamingManagerTexture.cpp:2724| Mip bias: 0 [2022.03.22-14.38.35:266][126]LogContentStreaming: |StreamingManagerTexture.cpp:2728| Time: World=1535.741 LastUpdate=1535.074 [2022.03.22-14.38.35:266][126]LogContentStreaming: |StreamingManagerTexture.cpp:2735| View0: Position=(X=210.072 Y=-55.710 Z=8677.272) ScreenSize=1920.000000 MaxEffectiveScreenSize=0.000000 Boost=1.000000
CancelTextureStreaming // 取消当前Texture、StaticMesh、SkeletalMesh、LandscapeLOD的Streaming请求
CancelRenderAssetStreaming // 同上
StreamOut 3 // 试图Streaming Out 3MB的Texture、Mesh内存
[2022.03.22-15.07.39:665][401]LogTemp: |UnrealEngine.cpp:1969|UEngine::TickDeferredCommands-----------------Exec Commands:StreamOut 3 [2022.03.22-15.07.39:676][401]LogContentStreaming: |StreamingManagerTexture.cpp:360|Streaming out texture memory! Saved 3.10 MB. [2022.03.22-15.07.39:677][401]Tried to stream out 3 MB of texture/mesh data: Succeeded
ResetMaxEverRequiredTextures // reset曾经请求的最大纹理size为0
ResetMaxEverRequiredRenderAssetMemory // 同上
[2022.03.22-15.35.04:688][ 31]LogTemp: |UnrealEngine.cpp:1969|UEngine::TickDeferredCommands-----------------Exec Commands:ResetMaxEverRequiredTextures [2022.03.22-15.35.04:708][ 31]OldMax: 13091872 MaxEverRequired Reset.
LightmapStreamingFactor 0.5 // 修改Lightmap(光照贴图)Streaming的因子为0.5 注:缺省值为0.2
[2022.03.22-15.43.15:958][265]LogTemp: |UnrealEngine.cpp:1969|UEngine::TickDeferredCommands-----------------Exec Commands:LightmapStreamingFactor 0.5 [2022.03.22-15.43.15:976][265]Lightmap streaming factor: 0.500 (lower values makes streaming more aggressive).
ShadowmapStreamingFactor 0.5 // 修改Shadowmap(阴影贴图)Streaming的因子为0.5 注:缺省值为0.2
[2022.03.22-15.46.40:526][439]LogTemp: |UnrealEngine.cpp:1969|UEngine::TickDeferredCommands-----------------Exec Commands:ShadowmapStreamingFactor 0.5 [2022.03.22-15.46.40:543][439]Shadowmap streaming factor: 0.500 (lower values makes streaming more aggressive).
NumStreamedMips 38 12 Texture // 修改Group类型为38(TEXTUREGROUP_CharacterDiffuse)的NumStreamedMips的值为12
[2022.03.22-17.30.29:089][616]LogTemp: |UnrealEngine.cpp:1969|UEngine::TickDeferredCommands-----------------Exec Commands:NumStreamedMips 38 12 Texture [2022.03.22-17.30.29:106][616]TEXTUREGROUP_CharacterDiffuse.NumStreamedMips = 12
NumStreamedMips 42 -2 Texture // 查看Group类型为42(TEXTUREGROUP_WeaponDiffuse)的NumStreamedMips的值 注:-2为无效值,此时会打印原有NumStreamedMips的数值
[2022.03.23-10.04.27:938][534]LogTemp: |UnrealEngine.cpp:1969|UEngine::TickDeferredCommands-----------------Exec Commands:NumStreamedMips 42 -2 Texture [2022.03.23-10.04.27:952][534]TEXTUREGROUP_WeaponDiffuse.NumStreamedMips = -1
TrackTexture tgmkaehpa_4K_Albedo // 将名为tgmkaehpa_4K_Albedo的贴图添加到追踪列表
TrackRenderAsset tgmkaehpa_4K_Albedo // 同上
LogTemp: |UnrealEngine.cpp:1969|UEngine::TickDeferredCommands-----------------Exec Commands:TrackTexture tgmkaehpa_4K_Albedo [2022.03.22-17.51.21:445][ 18]Textures or meshes containing "tgmkaehpa_4K_Albedo" are now tracked.
被追踪后,tgmkaehpa_4K_Albedo贴图的streaming行为都会打印到日志中(如下绿色块的log)
Cmd: r.Streaming.PoolSize 10 r.Streaming.PoolSize = "10" LogContentStreaming: Texture pool size now 10 MB LogContentStreaming: Texture: "Texture2D /Game/MS_Vegetables/3D_Asset/07_Pumpkin_tgmkaehpa/tgmkaehpa_4K_Albedo.tgmkaehpa_4K_Albedo", ResidentMips: 12/13, RequestedMips: 12, WantedMips: 11, Boost: 0.7 (updated) Cmd: InvestigateTexture tgmkaehpa_4K_Albedo LogContentStreaming: Texture: Texture2D /Game/MS_Vegetables/3D_Asset/07_Pumpkin_tgmkaehpa/tgmkaehpa_4K_Albedo.tgmkaehpa_4K_Albedo LogContentStreaming: LOD group: TEXTUREGROUP_World [Bucket=Largest] LogContentStreaming: Current size [Mips]: 1024x1024 [11] LogContentStreaming: Wanted size [Mips]: 1024x1024 [11] LogContentStreaming: Allowed mips: 7-13 [13] LogContentStreaming: LoadOrder Priority: 0 LogContentStreaming: Retention Priority: 1536 LogContentStreaming: Boost factor: 0.7 LogContentStreaming: Mip bias: 0 LogContentStreaming: View0: Position=(X=195.453 Y=128.600 Z=300.204) ScreenSize=1069.000000 MaxEffectiveScreenSize=0.000000 Boost=1.000000 LogContentStreaming: DynamicReference= StaticMeshComponent /Temp/Untitled_4.Untitled:PersistentLevel.tgmkaehpa_LOD0_2.StaticMeshComponent0 LogContentStreaming: Size=872.931030, BoundIndex=2 LogContentStreaming: Origin=(X=290.000 Y=60.000 Z=20.000), BoxExtent=(X=80.302 Y=79.913 Z=50.033), TexelSize=376.540497
堆栈如下:
> UE4Editor-Engine-Win64-Debug.dll!TrackRenderAssetEvent(FStreamingRenderAsset * StreamingRenderAsset=0x000002c6b9916390, UStreamableRenderAsset * RenderAsset=0x000002c6afb70b80, bool bForceMipLevelsToBeResident=false, const FRenderAssetStreamingManager * Manager=0x000002c62b319600) Line 305 C++ UE4Editor-Engine-Win64-Debug.dll!FStreamingRenderAsset::StreamWantedMips_Internal(FRenderAssetStreamingManager & Manager={...}, bool bUseCachedData=false) Line 542 C++ UE4Editor-Engine-Win64-Debug.dll!FStreamingRenderAsset::StreamWantedMips(FRenderAssetStreamingManager & Manager={...}) Line 495 C++ UE4Editor-Engine-Win64-Debug.dll!FRenderAssetStreamingManager::StreamRenderAssets(bool bProcessEverything=false) Line 1224 C++ UE4Editor-Engine-Win64-Debug.dll!FRenderAssetStreamingManager::UpdateResourceStreaming(float DeltaTime=0.0182069018, bool bProcessEverything=false) Line 1603 C++ UE4Editor-Engine-Win64-Debug.dll!FStreamingManagerCollection::UpdateResourceStreaming(float DeltaTime=0.0182069018, bool bProcessEverything=false) Line 867 C++ UE4Editor-Engine-Win64-Debug.dll!IStreamingManager::Tick(float DeltaTime=0.0182069018, bool bProcessEverything=false) Line 721 C++ UE4Editor-Engine-Win64-Debug.dll!FStreamingManagerCollection::Tick(float DeltaTime=0.0182069018, bool bProcessEverything=false) Line 836 C++ UE4Editor-UnrealEd-Win64-Debug.dll!UEditorEngine::Tick(float DeltaSeconds=0.0182069018, bool bIdleMode=false) Line 1928 C++ UE4Editor-UnrealEd-Win64-Debug.dll!UUnrealEdEngine::Tick(float DeltaSeconds=0.0182069018, bool bIdleMode=false) Line 426 C++ UE4Editor-Win64-Debug.exe!FEngineLoop::Tick() Line 4836 C++ UE4Editor-Win64-Debug.exe!EngineTick() Line 63 C++ UE4Editor-Win64-Debug.exe!GuardedMain(const wchar_t * CmdLine=0x000002c6053b2080) Line 172 C++ UE4Editor-Win64-Debug.exe!WinMain(HINSTANCE__ * hInInstance=0x00007ff783ad0000, HINSTANCE__ * hPrevInstance=0x0000000000000000, char * __formal=0x000002c6011d48b6, int nCmdShow=10) Line 257 C++
ListTrackedTextures // 打印所有被追踪的贴图资源
ListTrackedRenderAssets // 同上
[2022.03.22-22.49.14:854][284]LogTemp: |UnrealEngine.cpp:1969|UEngine::TickDeferredCommands-----------------Exec Commands:ListTrackedTextures [2022.03.22-22.49.14:872][284]Chr_M01_Hat_Begadi_Helmbezug_D [2022.03.22-22.49.14:873][284]Chr_M01_Hat_Begadi_Helmbezug_MA [2022.03.22-22.49.14:873][284]2 render assets are being tracked.
DebugTrackedTextures // 调试所有被追踪的贴图资源 注:需开启ENABLE_TEXTURE_TRACKING_BROKEN宏,默认没有开启,该功能暂不可用
DebugTrackedRenderAssets // 同上
UntrackTexture Chr_M01_Hat_Begadi_Helmbezug_MA // 将名为Chr_M01_Hat_Begadi_Helmbezug_MA的贴图从追踪列表中移除
[2022.03.22-22.59.55:424][294]LogTemp: |UnrealEngine.cpp:1969|UEngine::TickDeferredCommands-----------------Exec Commands:UntrackTexture Chr_M01_Hat_Begadi_Helmbezug_MA [2022.03.22-22.59.55:482][294]Textures or meshes containing "Chr_M01_Hat_Begadi_Helmbezug_MA" are no longer tracked.