UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MaterialCachedData.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
9#include "Misc/Guid.h"
12#include "SceneTypes.h"
13#include "MaterialCachedData.generated.h"
14
15class UTexture;
19class UFont;
20class UMaterial;
31
33USTRUCT()
46inline bool operator==(const FMaterialFunctionInfo& Lhs, const FMaterialFunctionInfo& Rhs)
47{
48 return Lhs.Function == Rhs.Function;
49}
50inline bool operator!=(const FMaterialFunctionInfo& Lhs, const FMaterialFunctionInfo& Rhs)
51{
52 return !operator==(Lhs, Rhs);
53}
54
56USTRUCT()
58{
62 UPROPERTY()
63 FGuid StateId;
64
66 UPROPERTY()
68
69 bool operator==(const FMaterialParameterCollectionInfo& Other) const
70 {
71 return StateId == Other.StateId && ParameterCollection == Other.ParameterCollection;
72 }
73};
74
75USTRUCT()
77{
79
83 : Description(InDescription)
84 , Group(InGroup)
85 , SortPriority(InSortPriority)
86 , AssetIndex(InAssetIndex)
87 , ExpressionGuid(InGuid)
88 {}
89
90 UPROPERTY()
91 FString Description;
92
93 UPROPERTY()
95
96 UPROPERTY()
97 int32 SortPriority = 0;
98
99 UPROPERTY()
100 int32 AssetIndex = INDEX_NONE;
101
102 UPROPERTY()
103 FGuid ExpressionGuid;
104};
105
106USTRUCT()
108{
110
111 ENGINE_API static const FMaterialCachedParameterEntry EmptyData;
112
113 // This is used to map FMaterialParameterInfos to indices, which are then used to index various TArrays containing values for each type of parameter
114 // (ExpressionGuids and Overrides, along with ScalarValues, VectorValues, etc)
115 UPROPERTY()
116 TSet<FMaterialParameterInfo> ParameterInfoSet;
117};
118
119USTRUCT()
127
129{
130 const UMaterialFunctionInterface* CurrentFunction = nullptr;
131 const FMaterialLayersFunctions* LayerOverrides = nullptr;
132 bool bUpdateFunctionExpressions = true;
133};
134
135USTRUCT()
137{
139
141
142 UPROPERTY()
144
145 UPROPERTY()
147
148 UPROPERTY()
149 TArray<bool> StaticSwitchValues_DEPRECATED;
150
151 UPROPERTY()
152 TArray<FStaticComponentMaskValue> StaticComponentMaskValues;
153
154 UPROPERTY()
155 TArray<FVector2D> ScalarMinMaxValues;
156
157 UPROPERTY()
158 TArray<TSoftObjectPtr<UObject>> ScalarEnumerationValues;
159
160 UPROPERTY()
161 TArray<int32> ScalarEnumerationIndexValues;
162
163 UPROPERTY()
165
166 UPROPERTY()
168
169 UPROPERTY()
170 TArray<FParameterChannelNames> VectorChannelNameValues;
171
172 UPROPERTY()
173 TArray<bool> VectorUsedAsChannelMaskValues;
174
175 UPROPERTY()
176 TArray<FParameterChannelNames> TextureChannelNameValues;
177
178 UPROPERTY()
180
181 UPROPERTY()
182 TArray<FString> AssetPaths;
183
184 UPROPERTY()
185 TArray<FName> LandscapeLayerNames;
186
187 UPROPERTY()
188 TSet<FString> ExpressionIncludeFilePaths;
189
190 UPROPERTY()
191 TSet<FName> UserSceneTextureInputs;
192
193 UPROPERTY()
194 TArray<FName> ShaderTags;
195};
196
197USTRUCT()
199{
201
202 ENGINE_API static const FMaterialCachedExpressionData EmptyData;
203
205
206#if WITH_EDITOR
211
212 void Validate(const UMaterialInterface& Material);
213
216
218 {
221 }
222#endif // WITH_EDITOR
223
224#if WITH_EDITORONLY_DATA
225 inline FMaterialCachedParameterEntry& GetParameterTypeEntry(EMaterialParameterType Type)
226 {
227 const int32 TypeIndex = (int32)Type;
228 if (TypeIndex < NumMaterialRuntimeParameterTypes)
229 {
230 return RuntimeEntries[TypeIndex];
231 }
233 return EditorOnlyData->EditorOnlyEntries[TypeIndex - NumMaterialRuntimeParameterTypes];
234 }
236 {
238 return EditorOnlyData->EditorEntries[(int32)Type];
239 }
240
241 inline const FMaterialCachedParameterEntry& GetParameterTypeEntry(EMaterialParameterType Type) const
242 {
243 return const_cast<FMaterialCachedExpressionData*>(this)->GetParameterTypeEntry(Type);
244 }
246 {
248 return EditorOnlyData->EditorEntries[(int32)Type];
249 }
250#else
252#endif
253
254 inline int32 GetNumParameters(EMaterialParameterType Type) const { return GetParameterTypeEntry(Type).ParameterInfoSet.Num(); }
256 ENGINE_API bool GetParameterValue(EMaterialParameterType Type, const FMemoryImageMaterialParameterInfo& ParameterInfo, FMaterialParameterMetadata& OutResult) const;
257 void GetParameterValueByIndex(EMaterialParameterType Type, int32 ParameterIndex, FMaterialParameterMetadata& OutResult) const;
258 const FGuid& GetExpressionGuid(EMaterialParameterType Type, int32 Index) const;
263
264 ENGINE_API void AddReferencedObjects(FReferenceCollector& Collector);
265
267 void AppendReferencedFunctionIdsTo(TArray<FGuid>& OutIds) const;
268
270 void AppendReferencedParameterCollectionIdsTo(TArray<FGuid>& OutIds) const;
271
273 void GetExternalCodeReferencesHash(FSHAHash& OutHash) const;
274
276 {
277 return ((PropertyConnectedMask >> (uint64)Property) & 0x1) != 0;
278 }
279
281 {
282 PropertyConnectedMask |= (1ull << (uint64)Property);
283 }
284
285 bool Serialize(FArchive& Ar);
286 void PostSerialize(const FArchive& Ar);
287
288#if WITH_EDITORONLY_DATA
290#endif // WITH_EDITORONLY_DATA
291
292 UPROPERTY()
294
295 UPROPERTY()
296 TArray<int32> ScalarPrimitiveDataIndexValues;
297
298 UPROPERTY()
299 TArray<int32> VectorPrimitiveDataIndexValues;
300
301 UPROPERTY()
302 TArray<float> ScalarValues;
303
304 UPROPERTY()
305 TArray<bool> StaticSwitchValues;
306
307 UPROPERTY()
308 TArray<bool> DynamicSwitchValues;
309
310 UPROPERTY()
311 TArray<FLinearColor> VectorValues;
312
313 UPROPERTY()
314 TArray<FVector4d> DoubleVectorValues;
315
316 UPROPERTY()
318
319 UPROPERTY()
320 TArray<TSoftObjectPtr<UTextureCollection>> TextureCollectionValues;
321
322 UPROPERTY()
324
325 UPROPERTY()
327
328 UPROPERTY()
329 TArray<int32> FontPageValues;
330
331 UPROPERTY()
332 TArray<TSoftObjectPtr<URuntimeVirtualTexture>> RuntimeVirtualTextureValues;
333
334 UPROPERTY()
335 TArray<TSoftObjectPtr<USparseVolumeTexture>> SparseVolumeTextureValues;
336
338 UPROPERTY()
339 TArray<TObjectPtr<UObject>> ReferencedTextures;
340
341 UPROPERTY()
342 TArray<TObjectPtr<UTextureCollection>> ReferencedTextureCollections;
343
345 UPROPERTY()
346 TArray<TObjectPtr<UClass>> ReferencedExternalCodeExpressionClasses;
347
349 UPROPERTY()
351
353 UPROPERTY()
354 uint32 FunctionInfosStateCRC;
355
357 UPROPERTY()
358 TArray<FMaterialParameterCollectionInfo> ParameterCollectionInfos;
359
360 UPROPERTY()
362
363 UPROPERTY()
365
366 UPROPERTY()
368
369 UPROPERTY()
370 TArray<FName> DynamicParameterNames;
371
372 UPROPERTY()
373 TArray<bool> QualityLevelsUsed;
374
375 UPROPERTY()
376 uint64 MaterialCacheUVCoordinatesUsedMask = 0x0;
377
378 UPROPERTY()
379 uint32 bHasMaterialLayers : 1;
380
381 UPROPERTY()
382 uint32 bHasRuntimeVirtualTextureOutput : 1;
383
384 UPROPERTY()
385 uint32 bHasFirstPersonOutput : 1;
386
387 UPROPERTY()
388 uint32 bUsesTemporalResponsiveness : 1;
389
390 UPROPERTY()
391 uint32 bUsesMotionVectorWorldOffset : 1;
392
393 UPROPERTY()
394 uint32 bSamplesMaterialCache : 1;
395
396 UPROPERTY()
397 uint32 bHasMaterialCacheOutput : 1;
398
399 UPROPERTY()
400 uint32 bMaterialCacheHasNonUVDerivedExpression : 1;
401
402 UPROPERTY()
403 uint32 bHasSceneColor : 1;
404
405 UPROPERTY()
406 uint32 bHasPerInstanceCustomData : 1;
407
408 UPROPERTY()
409 uint32 bHasPerInstanceRandom : 1;
410
411 UPROPERTY()
412 uint32 bHasVertexInterpolator : 1;
413
414 UPROPERTY()
415 uint32 bHasCustomizedUVs : 1;
416
417 UPROPERTY()
418 uint32 bHasMeshPaintTexture : 1;
419
420 UPROPERTY()
421 uint32 bHasWorldPosition : 1;
422
423 UPROPERTY()
424 uint32 PropertyConnectedBitmask_DEPRECATED = 0;
425
427 UPROPERTY()
428 uint64 PropertyConnectedMask = 0;
429
430#if WITH_EDITOR
433#endif
434};
435
436template<>
438{
439 enum
440 {
443 };
444};
#define check(expr)
Definition AssertionMacros.h:314
@ INDEX_NONE
Definition CoreMiscDefines.h:150
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
bool operator!=(const FMaterialFunctionInfo &Lhs, const FMaterialFunctionInfo &Rhs)
Definition MaterialCachedData.h:50
bool operator==(const FMaterialFunctionInfo &Lhs, const FMaterialFunctionInfo &Rhs)
Definition MaterialCachedData.h:46
constexpr int32 NumMaterialEditorOnlyParameterTypes
Definition MaterialParameters.h:211
constexpr int32 NumMaterialParameterTypes
Definition MaterialParameters.h:209
EMaterialParameterType
Definition MaterialParameters.h:187
constexpr int32 NumMaterialRuntimeParameterTypes
Definition MaterialParameters.h:210
EMaterialParameterAssociation
Definition MaterialParameters.h:25
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define USTRUCT(...)
Definition ObjectMacros.h:746
#define GENERATED_USTRUCT_BODY(...)
Definition ObjectMacros.h:767
EMaterialProperty
Definition SceneTypes.h:148
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Archive.h:1208
Definition NameTypes.h:617
Definition UObjectGlobals.h:2492
Definition SecureHash.h:226
Definition Text.h:385
Definition MaterialEnumeration.h:11
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition SharedPointer.h:692
Definition Class.h:3793
Definition CurveLinearColorAtlas.h:72
Definition CurveLinearColor.h:29
Definition Font.h:111
Definition LandscapeGrassType.h:172
Definition MaterialCacheVirtualTextureTag.h:13
Definition MaterialExpressionExternalCodeBase.h:11
Definition MaterialExpression.h:150
Definition MaterialFunctionInterface.h:59
Definition MaterialInterface.h:296
Definition MaterialParameterCollection.h:79
Definition Material.h:432
Definition Object.h:95
Definition RuntimeVirtualTexture.h:18
Definition SparseVolumeTexture.h:309
Definition TextureCollection.h:47
Definition Texture.h:1219
U16 Index
Definition radfft.cpp:71
Definition Guid.h:109
Definition Color.h:48
Definition MaterialCachedData.h:129
Definition MaterialCachedData.h:199
void SetPropertyConnected(EMaterialProperty Property)
Definition MaterialCachedData.h:280
const FMaterialCachedParameterEntry & GetParameterTypeEntry(EMaterialParameterType Type) const
Definition MaterialCachedData.h:251
int32 GetNumParameters(EMaterialParameterType Type) const
Definition MaterialCachedData.h:254
bool IsPropertyConnected(EMaterialProperty Property) const
Definition MaterialCachedData.h:275
Definition MaterialCachedData.h:137
Definition MaterialCachedData.h:121
Definition MaterialCachedData.h:77
FMaterialCachedParameterEditorInfo(const FGuid &InGuid, const FString &InDescription, const FName &InGroup, int32 InSortPriority, int32 InAssetIndex)
Definition MaterialCachedData.h:82
Definition MaterialCachedData.h:108
static ENGINE_API const FMaterialCachedParameterEntry EmptyData
Definition MaterialCachedData.h:59
Definition MaterialCachedData.h:35
Definition MaterialLayersFunctions.h:57
Definition MaterialLayersFunctions.h:131
Definition MaterialLayersFunctions.h:221
Definition MaterialCachedData.h:58
Definition MaterialParameters.h:33
Definition MaterialParameters.h:446
Definition MaterialParameters.h:96
Definition MaterialParameters.h:279
Definition MaterialParameters.h:305
Definition StaticParameterSet.h:462
Definition ObjectPtr.h:488
Definition SoftObjectPtr.h:174
Definition StructOpsTypeTraits.h:11
@ WithSerializer
Definition StructOpsTypeTraits.h:23
@ WithPostSerialize
Definition StructOpsTypeTraits.h:25
Definition StructOpsTypeTraits.h:46