UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MaterialAttributeDefinitionMap.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreTypes.h"
7#include "MaterialValueType.h"
8#include "Math/Vector4.h"
9#include "Misc/Guid.h"
10
14
17class UMaterial;
18
20
25
57
77
82{
83public:
85
88
90 static ENGINE_API int32 CompileDefaultExpression(FMaterialCompiler* Compiler, const FGuid& AttributeID);
91
94
96 static ENGINE_API const FString& GetAttributeName(const FGuid& AttributeID);
97
100
103
106
108 static ENGINE_API EMaterialValueType GetValueType(const FGuid& AttributeID);
109
112
114 static ENGINE_API FVector4f GetDefaultValue(const FGuid& AttributeID);
115
118
120 static ENGINE_API EShaderFrequency GetShaderFrequency(const FGuid& AttributeID);
121
124
126 static ENGINE_API int32 GetIndex(const FGuid& AttributeID);
127
130
132 static ENGINE_API uint64 GetBitmask(const FGuid& AttributeID);
133
136
138 static ENGINE_API bool IsAttributeInBitmask(uint64 Bitmask, const FGuid& AttributeID);
139
142
144 static ENGINE_API EMaterialProperty GetProperty(const FGuid& AttributeID);
145
148
151
153 static ENGINE_API void AppendDDCKeyString(FString& String);
154 static ENGINE_API void AppendDDCKey(FShaderKeyGenerator& KeyGen);
155
157 static ENGINE_API void AddCustomAttribute(const FGuid& AttributeID, UClass* ExpressionClass, const FString& AttributeName, const FString& FunctionName, int32 OutputIndex, EMaterialValueType ValueType, const FVector4& DefaultValue, EShaderFrequency ShaderFrequency, bool bNeedsPreviousFrameEvaluation = false, MaterialAttributeBlendFunction BlendFunction = nullptr);
158
160 static ENGINE_API FGuid GetCustomAttributeID(const FString& AttributeName);
161
163 static ENGINE_API const FMaterialCustomOutputAttributeDefintion* GetCustomAttribute(const FString& AttributeName);
164
167
170
172 {
173 return GMaterialPropertyAttributesMap.OrderedVisibleAttributeList;
174 }
175
176#if WITH_EDITOR
183#endif
184
185private:
186 // Customization class for displaying data in the material editor
188
190 static ENGINE_API void GetAttributeNameToIDList(TArray<TPair<FString, FGuid>>& NameToIDList);
191
192 // Internal map management
193 ENGINE_API void InitializeAttributeMap();
194
195 ENGINE_API void Add(const FGuid& AttributeID, const FString& AttributeName, EMaterialProperty Property,
196 EMaterialValueType ValueType, const FVector4& DefaultValue, EShaderFrequency ShaderFrequency,
197 int32 TexCoordIndex = INDEX_NONE, bool bIsHidden = false, MaterialAttributeBlendFunction BlendFunction = nullptr);
198
201
202 // Helper functions to determine display name based on shader model, material domain, etc.
203 static ENGINE_API FText GetAttributeOverrideForMaterial(const FGuid& AttributeID, UMaterial* Material);
205
206#if WITH_EDITOR
207 template<typename ExpressionsArrayType>
209#endif
210
211 static ENGINE_API FMaterialAttributeDefinitionMap GMaterialPropertyAttributesMap;
212
213 TMap<EMaterialProperty, FMaterialAttributeDefintion> AttributeMap; // Fixed map of compile-time definitions
214 TArray<FMaterialCustomOutputAttributeDefintion> CustomAttributes; // Array of custom output definitions
215 TArray<FGuid> OrderedVisibleAttributeList; // List used for consistency with e.g. combobox filling
216
217 FString AttributeDDCString;
218 bool bIsInitialized;
219};
@ 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
EMaterialShadingModel
Definition EngineTypes.h:705
int32(* MaterialAttributeBlendFunction)(FMaterialCompiler *Compiler, int32 A, int32 B, int32 Alpha)
Definition MaterialAttributeDefinitionMap.h:24
EMaterialValueType
Definition MaterialValueType.h:15
EShaderFrequency
Definition RHIDefinitions.h:202
EMaterialProperty
Definition SceneTypes.h:148
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition MaterialAttributeDefinitionMap.h:82
static ENGINE_API FGuid GetID(EMaterialProperty Property)
Definition MaterialAttributeDefinitionMap.cpp:294
static ENGINE_API MaterialAttributeBlendFunction GetBlendFunction(const FGuid &AttributeID)
Definition MaterialAttributeDefinitionMap.cpp:311
static ENGINE_API int32 CompileDefaultExpression(FMaterialCompiler *Compiler, EMaterialProperty Property)
Definition MaterialAttributeDefinitionMap.cpp:139
static ENGINE_API FVector4f GetDefaultValue(EMaterialProperty Property)
Definition MaterialAttributeDefinitionMap.cpp:205
static ENGINE_API EMaterialProperty GetProperty(const FGuid &AttributeID)
Definition MaterialAttributeDefinitionMap.cpp:301
static ENGINE_API void AppendDDCKeyString(FString &String)
Definition MaterialAttributeDefinitionMap.cpp:571
static ENGINE_API void AddCustomAttribute(const FGuid &AttributeID, UClass *ExpressionClass, const FString &AttributeName, const FString &FunctionName, int32 OutputIndex, EMaterialValueType ValueType, const FVector4 &DefaultValue, EShaderFrequency ShaderFrequency, bool bNeedsPreviousFrameEvaluation=false, MaterialAttributeBlendFunction BlendFunction=nullptr)
Definition MaterialAttributeDefinitionMap.cpp:611
static ENGINE_API FGuid GetCustomAttributeID(const FString &AttributeName)
Definition MaterialAttributeDefinitionMap.cpp:642
static ENGINE_API FGuid GetDefaultID()
Definition MaterialAttributeDefinitionMap.cpp:318
static ENGINE_API EShaderFrequency GetShaderFrequency(EMaterialProperty Property)
Definition MaterialAttributeDefinitionMap.cpp:219
static ENGINE_API void AppendDDCKey(FShaderKeyGenerator &KeyGen)
Definition MaterialAttributeDefinitionMap.cpp:577
static ENGINE_API const FString & GetAttributeName(EMaterialProperty Property)
Definition MaterialAttributeDefinitionMap.cpp:153
ENGINE_API FMaterialAttributeDefinitionMap()
Definition MaterialAttributeDefinitionMap.cpp:130
static ENGINE_API EMaterialValueType GetValueType(EMaterialProperty Property)
Definition MaterialAttributeDefinitionMap.cpp:191
static ENGINE_API void GetCustomAttributeList(TArray< FMaterialCustomOutputAttributeDefintion > &CustomAttributeList)
Definition MaterialAttributeDefinitionMap.cpp:681
static ENGINE_API uint64 GetBitmask(EMaterialProperty Property)
Definition MaterialAttributeDefinitionMap.cpp:259
static ENGINE_API const FMaterialCustomOutputAttributeDefintion * GetCustomAttribute(const FString &AttributeName)
Definition MaterialAttributeDefinitionMap.cpp:655
static ENGINE_API FText GetDisplayNameForMaterial(EMaterialProperty Property, UMaterial *Material)
Definition MaterialAttributeDefinitionMap.cpp:167
static ENGINE_API int32 GetIndex(EMaterialProperty Property)
Definition MaterialAttributeDefinitionMap.cpp:232
static const TArray< FGuid > & GetOrderedVisibleAttributeList()
Definition MaterialAttributeDefinitionMap.h:171
static ENGINE_API bool IsAttributeInBitmask(uint64 Bitmask, EMaterialProperty Property)
Definition MaterialAttributeDefinitionMap.cpp:281
friend class FMaterialAttributePropertyDetails
Definition MaterialAttributeDefinitionMap.h:187
Definition MaterialAttributeDefinitionMap.h:30
EShaderFrequency ShaderFrequency
Definition MaterialAttributeDefinitionMap.h:48
EMaterialValueType ValueType
Definition MaterialAttributeDefinitionMap.h:47
int32 TexCoordIndex
Definition MaterialAttributeDefinitionMap.h:49
EMaterialProperty Property
Definition MaterialAttributeDefinitionMap.h:46
FVector4 DefaultValue
Definition MaterialAttributeDefinitionMap.h:44
bool bIsHidden
Definition MaterialAttributeDefinitionMap.h:55
bool operator==(const FMaterialAttributeDefintion &Other) const
Definition MaterialAttributeDefinitionMap.h:38
ENGINE_API int32 CompileDefaultValue(FMaterialCompiler *Compiler) const
Definition MaterialAttributeDefinitionMap.cpp:44
FString AttributeName
Definition MaterialAttributeDefinitionMap.h:45
FGuid AttributeID
Definition MaterialAttributeDefinitionMap.h:43
MaterialAttributeBlendFunction BlendFunction
Definition MaterialAttributeDefinitionMap.h:52
Definition MaterialCompiler.h:109
Definition MaterialAttributeDefinitionMap.h:62
bool operator==(const FMaterialCustomOutputAttributeDefintion &Other) const
Definition MaterialAttributeDefinitionMap.h:67
UClass * CustomOutputExpressionStaticClass
Definition MaterialAttributeDefinitionMap.h:72
FString FunctionName
Definition MaterialAttributeDefinitionMap.h:73
int32 OutputIndex
Definition MaterialAttributeDefinitionMap.h:74
bool bNeedsPreviousFrameEvaluation
Definition MaterialAttributeDefinitionMap.h:75
Definition ShaderKeyGenerator.h:29
Definition Text.h:385
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition Class.h:3793
Definition Material.h:432
int
Definition TestServer.py:515
Definition Guid.h:109
Definition EngineTypes.h:732
Definition UnrealTemplate.h:462
Definition ObjectPtr.h:488
Definition Tuple.h:652