UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
TextureStreamingTypes.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3// Structs and defines used for texture streaming build
4
5#pragma once
6
7#include "CoreMinimal.h"
9#include "Misc/Guid.h"
10#include "HAL/IConsoleManager.h"
11#include "RHIDefinitions.h"
12#include "SceneTypes.h"
13#include "TextureStreamingTypes.generated.h"
14
15class ULevel;
17class UPrimitiveComponent;
18class UTexture;
21struct FSlowTask;
23
25
26class UTexture;
30
31// The PackedRelativeBox value that return the bound unaltered
32inline constexpr uint32 PackedRelativeBox_Identity = 0xffff0000;
33
35USTRUCT()
37{
39
40 UPROPERTY()
42
49 UPROPERTY()
51
52 UPROPERTY()
53 float TexelFactor;
54
61 UPROPERTY()
62 uint32 PackedRelativeBox;
63
66 uint32 bAllowInvalidTexelFactorWhenUnregistered : 1;
67
70 uint32 bAffectedByComponentScale : 1;
71
73 RenderAsset(nullptr),
74 Bounds(ForceInit),
75 TexelFactor(1.0f),
76 PackedRelativeBox(0),
77 bAllowInvalidTexelFactorWhenUnregistered(false),
78 bAffectedByComponentScale(true)
79 {
80 }
81
85 float InTexelFactor,
88 bool bInAffectedByComponentScale = true) :
89 RenderAsset(InAsset),
90 Bounds(InBounds),
91 TexelFactor(InTexelFactor),
92 PackedRelativeBox(InPackedRelativeBox),
93 bAllowInvalidTexelFactorWhenUnregistered(bInAllowInvalidTexelFactorWhenUnregistered),
94 bAffectedByComponentScale(bInAffectedByComponentScale)
95 {
96 }
97
99 {
100 return (TexelFactor > UE_SMALL_NUMBER || (!bOwningCompRegistered && bAllowInvalidTexelFactorWhenUnregistered))
101 && (Bounds.SphereRadius > UE_SMALL_NUMBER || !bOwningCompRegistered)
102 && ensure(FMath::IsFinite(TexelFactor));
103 }
104};
105
106// Invalid streamable texture registration index
108
120
127USTRUCT()
129{
131
132
137 UPROPERTY()
138 uint32 PackedRelativeBox;
139
145 UPROPERTY()
146 int32 TextureLevelIndex;
147
153 UPROPERTY()
154 float TexelFactor;
155
157 PackedRelativeBox(0),
158 TextureLevelIndex(0),
159 TexelFactor(0)
160 {
161 }
162
163#if WITH_EDITOR
172
175#endif
176};
177
178// The max number of uv channels processed in the texture streaming build.
179#define TEXSTREAM_MAX_NUM_UVCHANNELS 4
180// The initial texture scales (must be bigger than actual used values)
181#define TEXSTREAM_INITIAL_GPU_SCALE 256
182// The tile size when outputting the material texture scales.
183#define TEXSTREAM_TILE_RESOLUTION 32
184// The max number of textures processed in the material texture scales build.
185#define TEXSTREAM_MAX_NUM_TEXTURES_PER_MATERIAL 256
186
188{
190
191 // The material
193
194 // The mesh UV channel data
196
197 // The material bounds for the mesh.
199
200 bool IsValid() const { return Material && UVChannelData && PackedRelativeBox != 0; }
201};
202
210
223{
225 const TMap<FGuid, int32>* TextureGuidToLevelIndex;
226
228 bool bUseRelativeBoxes;
229
231 int32 BuildDataTimestamp;
232
234 const TArray<FStreamingTextureBuildInfo>* ComponentBuildData;
235
237 TArray<UTexture*> LevelStreamingTextures;
238
239 struct FTextureBoundState
240 {
241 FTextureBoundState() {}
242
243 FTextureBoundState(UTexture* InTexture) : BuildDataTimestamp(0), BuildDataIndex(0), Texture(InTexture) {}
244
246 int32 BuildDataTimestamp;
248 int32 BuildDataIndex;
251 };
252
253 /*
254 * The component state of the each texture. Used to prevent processing each texture several time.
255 * Also used to find quickly the build data relating to each texture.
256 */
257 TArray<FTextureBoundState> BoundStates;
258
259 EMaterialQualityLevel::Type QualityLevel;
260 ERHIFeatureLevel::Type FeatureLevel;
261 bool bIsBuiltDataValid;
262 bool bForceNoUseBuiltData;
263
264 ENGINE_API int32* GetBuildDataIndexRef(UTexture* Texture, bool bForceUpdate = false);
266
267public:
268
269 // Needs InLevel to use precomputed data from
274
275 void SetForceNoUseBuiltData(bool bValue) { bForceNoUseBuiltData = bValue; }
280
282 ERHIFeatureLevel::Type GetFeatureLevel() { return FeatureLevel; }
283};
284
294
296
305
308
309#if WITH_EDITOR
312
315
318
321#endif
322
325
328
329ENGINE_API uint32 PackRelativeBox(const FVector& RefOrigin, const FVector& RefExtent, const FVector& Origin, const FVector& Extent);
332
335
338
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define ensure( InExpression)
Definition AssertionMacros.h:464
@ INDEX_NONE
Definition CoreMiscDefines.h:150
@ ForceInit
Definition CoreMiscDefines.h:155
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
return true
Definition ExternalRpcRegistry.cpp:601
#define DECLARE_LOG_CATEGORY_EXTERN(CategoryName, DefaultVerbosity, CompileTimeVerbosity)
Definition LogMacros.h:361
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define USTRUCT(...)
Definition ObjectMacros.h:746
#define GENERATED_USTRUCT_BODY(...)
Definition ObjectMacros.h:767
uint64 ComputeHash(const FRHITextureCreateInfo &InCreateInfo, uint64 HeapOffset)
Definition RHICoreTransientResourceAllocator.h:15
ENGINE_API void UnpackRelativeBox(const FBoxSphereBounds &InRefBounds, uint32 InPackedRelBox, FBoxSphereBounds &OutBounds)
Definition TextureStreamingBuild.cpp:389
constexpr uint16 InvalidRegisteredStreamableTexture
Definition TextureStreamingTypes.h:107
ENGINE_API bool BuildTextureStreamingComponentData(UWorld *InWorld, EMaterialQualityLevel::Type QualityLevel, ERHIFeatureLevel::Type FeatureLevel, bool bFullRebuild, FSlowTask &BuildTextureStreamingTask)
Definition TextureStreamingBuild.cpp:217
ENGINE_API TAutoConsoleVariable< int32 > CVarStreamingUseNewMetrics
ENGINE_API TAutoConsoleVariable< int32 > CVarFramesForFullUpdate
TMap< UMaterialInterface *, TArray< FMaterialTextureInfo > > FTexCoordScaleMap
Definition TextureStreamingTypes.h:304
ENGINE_API int64 GetAverageRequiredTexturePoolSize()
Definition TextureStreamingHelpers.cpp:496
ENGINE_API uint32 PackRelativeBox(const FVector &RefOrigin, const FVector &RefExtent, const FVector &Origin, const FVector &Extent)
Definition TextureStreamingBuild.cpp:347
constexpr uint32 PackedRelativeBox_Identity
Definition TextureStreamingTypes.h:32
TMap< UMaterialInterface *, TArray< ULevel * > > FMaterialToLevelsMap
Definition TextureStreamingTypes.h:307
ENGINE_API void CheckTextureStreamingBuildValidity(UWorld *InWorld)
Definition TextureStreamingBuild.cpp:760
TFunction< void(UPrimitiveComponent *, UStreamableRenderAsset *, ELODStreamingCallbackResult)> FLODStreamingCallback
Definition TextureStreamingTypes.h:295
ETextureStreamingBuildType
Definition TextureStreamingTypes.h:204
@ TSB_ValidationOnly
Definition TextureStreamingTypes.h:207
@ TSB_MapBuild
Definition TextureStreamingTypes.h:205
@ TSB_ActorBuild
Definition TextureStreamingTypes.h:206
@ TSB_ViewMode
Definition TextureStreamingTypes.h:208
ELODStreamingCallbackResult
Definition TextureStreamingTypes.h:286
ENGINE_API void ResetAverageRequiredTexturePoolSize()
Definition TextureStreamingHelpers.cpp:487
#define UE_SMALL_NUMBER
Definition UnrealMathUtility.h:130
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Actor.h:257
Definition TextureStreamingTypes.h:223
ENGINE_API ~FStreamingTextureLevelContext()
Definition TextureStreamingBuild.cpp:557
ENGINE_API bool CanUseTextureStreamingBuiltData() const
Definition TextureStreamingBuild.cpp:552
EMaterialQualityLevel::Type GetQualityLevel()
Definition TextureStreamingTypes.h:281
ERHIFeatureLevel::Type GetFeatureLevel()
Definition TextureStreamingTypes.h:282
void SetForceNoUseBuiltData(bool bValue)
Definition TextureStreamingTypes.h:275
ENGINE_API void UpdateContext(EMaterialQualityLevel::Type InQualityLevel, const ULevel *InLevel, const TMap< FGuid, int32 > *InTextureGuidToLevelIndex)
Definition TextureStreamingBuild.cpp:480
ENGINE_API void ProcessMaterial(const FBoxSphereBounds &ComponentBounds, const FPrimitiveMaterialInfo &MaterialData, float ComponentScaling, TArray< FStreamingRenderAssetPrimitiveInfo > &OutStreamingTextures, bool bIsComponentBuildDataValid=false, const UPrimitiveComponent *DebugComponent=nullptr)
Definition TextureStreamingBuild.cpp:645
ENGINE_API void BindBuildData(const TArray< FStreamingTextureBuildInfo > *PreBuiltData)
Definition TextureStreamingBuild.cpp:569
Definition Array.h:670
Definition IConsoleManager.h:1792
Definition AndroidPlatformMisc.h:14
Definition UnrealString.h.inl:34
Definition Level.h:423
Definition MaterialInterface.h:296
Definition StreamableRenderAsset.h:37
Definition Texture.h:1219
Definition World.h:918
Type
Definition SceneTypes.h:132
Type
Definition RHIFeatureLevel.h:20
@ false
Definition radaudio_common.h:23
Definition Guid.h:109
Definition MaterialInterface.h:164
Definition MeshUVChannelInfo.h:13
Definition TextureStreamingTypes.h:188
const FMeshUVChannelInfo * UVChannelData
Definition TextureStreamingTypes.h:195
const UMaterialInterface * Material
Definition TextureStreamingTypes.h:192
uint32 PackedRelativeBox
Definition TextureStreamingTypes.h:198
FPrimitiveMaterialInfo()
Definition TextureStreamingTypes.h:189
bool IsValid() const
Definition TextureStreamingTypes.h:200
Definition SlowTask.h:29
Definition TextureStreamingTypes.h:37
bool CanBeStreamedByDistance(bool bOwningCompRegistered) const
Definition TextureStreamingTypes.h:98
FStreamingRenderAssetPrimitiveInfo(UStreamableRenderAsset *InAsset, const FBoxSphereBounds &InBounds, float InTexelFactor, uint32 InPackedRelativeBox=0, bool bInAllowInvalidTexelFactorWhenUnregistered=false, bool bInAffectedByComponentScale=true)
Definition TextureStreamingTypes.h:82
Definition TextureStreamingTypes.h:129
Definition TextureStreamingTypes.h:113
Definition ObjectPtr.h:488
Definition BoxSphereBounds.h:25