UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MaterialFunction.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"
7#include "UObject/Object.h"
8#include "Misc/Guid.h"
9#include "Templates/Casts.h"
11#include "StaticParameterSet.h"
12#include "MaterialDomain.h"
13#include "MaterialExpression.h"
14#include "MaterialFunction.generated.h"
15
16class UMaterial;
17class UTexture;
20
21UCLASS(MinimalAPI, Optional)
23{
25
26public:
27 UPROPERTY()
28 FMaterialExpressionCollection ExpressionCollection;
29
30 //~ Begin UObject Interface.
32 //~ End UObject Interface.
33};
34
38UCLASS(BlueprintType, hidecategories=object, MinimalAPI)
40{
42
43#if WITH_EDITORONLY_DATA
44 virtual const UClass* GetEditorOnlyDataClass() const override { return UMaterialFunctionEditorOnlyData::StaticClass(); }
45
48#endif // WITH_EDITORONLY_DATA
49
50#if WITH_EDITORONLY_DATA
54#endif // WITH_EDITORONLY_DATA
55
57 UPROPERTY(EditAnywhere, Category=MaterialFunction, AssetRegistrySearchable)
58 FString Description;
59
61 UPROPERTY(EditAnywhere, Category=MaterialFunction, AssetRegistrySearchable)
62 FString UserExposedCaption;
63
65 UPROPERTY(EditAnywhere, Category=MaterialFunction, AssetRegistrySearchable)
66 uint8 bExposeToLibrary:1;
67
68#if WITH_EDITORONLY_DATA
69 UE_DEPRECATED(5.6, "bPrefixParameterNames has been deprecated.")
70 UPROPERTY()
72#endif // WITH_EDITORONLY_DATA
73
74 UE_DEPRECATED(5.8, "Experimental bEnableExecWire is no longer supported.")
75 UPROPERTY(EditAnywhere, Category = MaterialFunction)
76 uint8 bEnableExecWire : 1;
77
78 UPROPERTY(EditAnywhere, Category = MaterialFunction)
79 uint8 bEnableNewHLSLGenerator : 1;
80
81#if WITH_EDITORONLY_DATA
86 UPROPERTY(AssetRegistrySearchable)
88
93 UPROPERTY(EditAnywhere, Category=MaterialFunction, AssetRegistrySearchable)
95#endif
96
97#if WITH_EDITORONLY_DATA
100
101 // The UMaterial which represents this function while the function itself is open in the material editor
103
104 UPROPERTY()
106
108 UPROPERTY(EditAnywhere, Category = Preview, AssetRegistrySearchable)
110
112 UPROPERTY(EditAnywhere, Category = Preview, AssetRegistrySearchable)
114
115 class UMaterialGraph* MaterialGraph = nullptr;
116
117 /* Whether all expressions in the function loaded correctly. */
119
120private:
124#endif // WITH_EDITORONLY_DATA
125
126public:
127 //~ Begin UObject Interface.
128#if WITH_EDITOR
129 virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
130#endif // WITH_EDITOR
131 virtual void PreSave(FObjectPreSaveContext ObjectSaveContext) override;
132 virtual void Serialize(FArchive& Ar) override;
133 virtual void PostLoad() override;
134#if WITH_EDITORONLY_DATA
136#endif
137 //~ End UObject Interface.
138
139 void SetMaterialFunctionUsage(EMaterialFunctionUsage Usage) { MaterialFunctionUsage = Usage; }
140
141 //~ Begin UMaterialFunctionInterface interface
142 virtual EMaterialFunctionUsage GetMaterialFunctionUsage() override { return MaterialFunctionUsage; }
143
144#if WITH_EDITOR
146 virtual void UpdateFromFunctionResource() override;
147
150
152#endif
153
154 virtual bool ValidateFunctionUsage(class FMaterialCompiler* Compiler, const FFunctionExpressionOutput& Output) override;
155
156#if WITH_EDITOR
157 virtual int32 Compile(class FMaterialCompiler* Compiler, const struct FFunctionExpressionOutput& Output) override;
158
161
162 virtual void UnlinkFromCaller() override;
163#endif
164
165#if WITH_EDITORONLY_DATA
167 virtual bool IsDependent(UMaterialFunctionInterface* OtherFunction) override;
168
176 ENGINE_API virtual bool IterateDependentFunctions(TFunctionRef<bool(UMaterialFunctionInterface*)> Predicate) const override;
177
180
182 virtual FString GetUserExposedCaption() const override { return UserExposedCaption; }
183
186
187#endif // WITH_EDITORONLY_DATA
188
189#if WITH_EDITOR
190 virtual UMaterialInterface* GetPreviewMaterial() override;
191
192 virtual void UpdateInputOutputTypes() override;
193
195
199 virtual bool HasFlippedCoordinates() const override;
200#endif
201
202 virtual UMaterialFunction* GetBaseFunction(FMFRecursionGuard RecursionGuard = FMFRecursionGuard()) override { return this; }
203 virtual const UMaterialFunction* GetBaseFunction(FMFRecursionGuard RecursionGuard = FMFRecursionGuard()) const override { return this; }
204#if WITH_EDITORONLY_DATA
207
211#endif // WITH_EDITORONLY_DATA
212 //~ End UMaterialFunctionInterface interface
213
214
215#if WITH_EDITOR
216 ENGINE_API bool SetParameterValueEditorOnly(const FName& ParameterName, const FMaterialParameterMetadata& Meta);
223 ENGINE_API bool SetStaticComponentMaskParameterValueEditorOnly(FName ParameterName, bool R, bool G, bool B, bool A, FGuid OutExpressionGuid);
225
226 inline bool GetReentrantFlag() const { return bReentrantFlag; }
227 inline void SetReentrantFlag(bool bIsReentrant) { bReentrantFlag = bIsReentrant; }
228
229 virtual bool IsUsingNewHLSLGenerator() const override;
230#endif // WITH_EDITOR
231
232private:
233#if WITH_EDITORONLY_DATA
234 UPROPERTY()
236
237 UPROPERTY()
239#endif // WITH_EDITORONLY_DATA
240};
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
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
TMaterialRecursionGuard< class UMaterialFunctionInterface > FMFRecursionGuard
Definition MaterialFunctionInterface.h:41
EMaterialFunctionUsage
Definition MaterialFunctionInterface.h:33
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define GENERATED_UCLASS_BODY(...)
Definition ObjectMacros.h:768
#define UCLASS(...)
Definition ObjectMacros.h:776
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition Archive.h:1208
Definition MaterialCompiler.h:109
Definition MaterialShared.h:3326
Definition NameTypes.h:617
Definition ObjectSaveContext.h:244
Definition Array.h:670
Definition EnumAsByte.h:22
Definition AssetRegistryState.h:50
Definition Class.h:3793
Definition Font.h:111
Definition MaterialExpressionComment.h:15
Definition MaterialExpression.h:150
Definition MaterialFunction.h:23
Definition MaterialFunctionInterface.h:45
Definition MaterialFunctionInterface.h:59
Definition MaterialFunction.h:40
virtual UMaterialFunction * GetBaseFunction(FMFRecursionGuard RecursionGuard=FMFRecursionGuard()) override
Definition MaterialFunction.h:202
virtual const UMaterialFunction * GetBaseFunction(FMFRecursionGuard RecursionGuard=FMFRecursionGuard()) const override
Definition MaterialFunction.h:203
void SetMaterialFunctionUsage(EMaterialFunctionUsage Usage)
Definition MaterialFunction.h:139
virtual EMaterialFunctionUsage GetMaterialFunctionUsage() override
Definition MaterialFunction.h:142
Definition MaterialInterface.h:296
Definition Material.h:432
Definition RuntimeVirtualTexture.h:18
Definition SparseVolumeTexture.h:309
Definition Texture.h:1219
Definition MaterialExpressionMaterialFunctionCall.h:53
Definition Guid.h:109
Definition Color.h:48
Definition MaterialExpression.h:123
Definition MaterialParameters.h:446
Definition UnrealType.h:6865
Definition MaterialRecursionGuard.h:11
Definition ObjectPtr.h:488