UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MaterialExpressionIO.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"
6#include "UObject/Class.h"
7#include "SceneTypes.h"
8
10
11namespace UE::Shader
12{
13enum class EValueType : uint8;
14struct FValue;
15}
16
17//
18// FExpressionInput
19//
20
21//@warning: FExpressionInput is mirrored in MaterialExpression.h and manually "subclassed" in Material.h (FMaterialInput)
23{
29
35
41
46
48 : OutputIndex(0)
49 , Mask(0)
50 , MaskR(0)
51 , MaskG(0)
52 , MaskB(0)
53 , MaskA(0)
54 {
55 Expression = nullptr;
56 }
57
60
61#if WITH_EDITOR
63
69 bool IsConnected() const
70 {
71 return (nullptr != Expression);
72 }
73
75 bool IsConstant() const { return false; }
76
79
82
84 void SetMask(int32 UseMask, int32 R, int32 G, int32 B, int32 A)
85 {
86 Mask = UseMask;
87 MaskR = R;
88 MaskG = G;
89 MaskB = B;
90 MaskA = A;
91 }
92
95
96#endif // WITH_EDITOR
97};
98
99template<>
109
110//
111// FExpressionOutput
112//
113
115{
122
130
139
141 void SetMask(int32 UseMask, int32 R, int32 G, int32 B, int32 A)
142 {
143 Mask = UseMask;
144 MaskR = R;
145 MaskG = G;
146 MaskB = B;
147 MaskA = A;
148 }
149};
150
151//
152// FMaterialInput
153//
154
155template<class InputType> struct FMaterialInput : FExpressionInput
156{
158 {
159 UseConstant = 0;
160 Constant = {};
161 }
162
163#if WITH_EDITOR
164 bool IsConstant() const { return UseConstant; }
165#endif
166
168 InputType Constant;
169};
170
172{
173#if WITH_EDITOR
175#endif // WITH_EDITOR
177 ENGINE_API bool Serialize(FArchive& Ar);
178 ENGINE_API void DefaultValueChanged(const FString& DefaultValue);
179 ENGINE_API FString GetDefaultValue() const;
180};
181
182template<>
193
195{
196#if WITH_EDITOR
198#endif // WITH_EDITOR
200 ENGINE_API bool Serialize(FArchive& Ar);
201 ENGINE_API void DefaultValueChanged(const FString& DefaultValue);
202 ENGINE_API FString GetDefaultValue() const;
203};
204
205template<>
215
217{
218#if WITH_EDITOR
220#endif // WITH_EDITOR
222 ENGINE_API bool Serialize(FArchive& Ar);
223 ENGINE_API void DefaultValueChanged(const FString& DefaultValue);
225};
226
227template<>
229 : public TStructOpsTypeTraitsBase2<FShadingModelMaterialInput>
230{
231 enum
232 {
234 };
235};
236
237struct FSubstrateMaterialInput : FMaterialInput<uint32> // Still giving it a default type
238{
239#if WITH_EDITOR
241#endif // WITH_EDITOR
243 ENGINE_API bool Serialize(FArchive& Ar);
244 ENGINE_API void DefaultValueChanged(const FString& DefaultValue);
246};
247
248template<>
250 : public TStructOpsTypeTraitsBase2<FSubstrateMaterialInput>
251{
252 enum
253 {
255 };
256};
257
259{
260#if WITH_EDITOR
262#endif // WITH_EDITOR
264 ENGINE_API bool Serialize(FArchive& Ar);
265 ENGINE_API void DefaultValueChanged(const FString& DefaultValue);
266 ENGINE_API FString GetDefaultValue() const;
267};
268
269template<>
279
281{
282#if WITH_EDITOR
284#endif // WITH_EDITOR
286 ENGINE_API bool Serialize(FArchive& Ar);
287 ENGINE_API void DefaultValueChanged(const FString& DefaultValue);
288 ENGINE_API FString GetDefaultValue() const;
289};
290
291template<>
301
303{
306 {
307 // Ensure PropertyConnectedMask can contain all properties.
308 static_assert((uint64)(MP_MaterialAttributes)-1 < (8 * sizeof(PropertyConnectedMask)), "PropertyConnectedMask cannot contain entire EMaterialProperty enumeration.");
309 }
310
311#if WITH_EDITOR
312 ENGINE_API int32 CompileWithDefault(class FMaterialCompiler* Compiler, const FGuid& AttributeID);
313 inline bool IsConnected(EMaterialProperty Property) { return ((PropertyConnectedMask >> (uint64)Property) & 0x1) != 0; }
314 inline bool IsConnected() const { return FExpressionInput::IsConnected(); }
315 inline void SetConnectedProperty(EMaterialProperty Property, bool bIsConnected)
316 {
318 }
319#endif // WITH_EDITOR
320
322 ENGINE_API bool Serialize(FArchive& Ar);
323
324 // Each bit corresponds to EMaterialProperty connection status.
326};
327
328template<>
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
EPropertyObjectReferenceType
Definition ObjectMacros.h:533
EMaterialProperty
Definition SceneTypes.h:148
@ MP_MaterialAttributes
Definition SceneTypes.h:184
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Archive.h:1208
Definition MaterialCompiler.h:109
Definition NameTypes.h:617
Definition MaterialExpression.h:150
FDocument::ValueType FValue
Definition RapidJsonUtils.h:61
Definition SparseVolumeTexture.h:19
EValueType
Definition ShaderTypes.h:94
Definition MaterialExpressionIO.h:172
ENGINE_API FString GetDefaultValue() const
Definition MaterialShared.cpp:549
ENGINE_API void DefaultValueChanged(const FString &DefaultValue)
Definition MaterialShared.cpp:541
Definition MaterialExpressionIO.h:23
int32 OutputIndex
Definition MaterialExpressionIO.h:34
FName InputName
Definition MaterialExpressionIO.h:40
int32 MaskB
Definition MaterialExpressionIO.h:45
class UMaterialExpression * Expression
Definition MaterialExpressionIO.h:28
int32 MaskR
Definition MaterialExpressionIO.h:45
int32 MaskA
Definition MaterialExpressionIO.h:45
int32 MaskG
Definition MaterialExpressionIO.h:45
FExpressionInput()
Definition MaterialExpressionIO.h:47
int32 Mask
Definition MaterialExpressionIO.h:45
Definition MaterialExpressionIO.h:115
FExpressionOutput(FName InOutputName, int32 InMask=0, int32 InMaskR=0, int32 InMaskG=0, int32 InMaskB=0, int32 InMaskA=0)
Definition MaterialExpressionIO.h:131
int32 MaskA
Definition MaterialExpressionIO.h:121
FExpressionOutput(int32 InMask=0, int32 InMaskR=0, int32 InMaskG=0, int32 InMaskB=0, int32 InMaskA=0)
Definition MaterialExpressionIO.h:123
int32 MaskR
Definition MaterialExpressionIO.h:118
int32 MaskB
Definition MaterialExpressionIO.h:120
int32 Mask
Definition MaterialExpressionIO.h:117
void SetMask(int32 UseMask, int32 R, int32 G, int32 B, int32 A)
Definition MaterialExpressionIO.h:141
int32 MaskG
Definition MaterialExpressionIO.h:119
FName OutputName
Definition MaterialExpressionIO.h:116
Definition Guid.h:109
Definition MaterialExpressionIO.h:303
FMaterialAttributesInput()
Definition MaterialExpressionIO.h:304
uint64 PropertyConnectedMask
Definition MaterialExpressionIO.h:325
Definition MaterialExpressionIO.h:156
InputType Constant
Definition MaterialExpressionIO.h:168
FMaterialInput()
Definition MaterialExpressionIO.h:157
uint32 UseConstant
Definition MaterialExpressionIO.h:167
Definition MaterialExpressionIO.h:195
ENGINE_API FString GetDefaultValue() const
Definition MaterialShared.cpp:566
ENGINE_API void DefaultValueChanged(const FString &DefaultValue)
Definition MaterialShared.cpp:558
Definition MaterialExpressionIO.h:217
ENGINE_API FString GetDefaultValue() const
ENGINE_API void DefaultValueChanged(const FString &DefaultValue)
Definition MaterialExpressionIO.h:238
ENGINE_API FString GetDefaultValue() const
ENGINE_API void DefaultValueChanged(const FString &DefaultValue)
Definition MaterialExpressionIO.h:281
ENGINE_API FString GetDefaultValue() const
Definition MaterialShared.cpp:585
ENGINE_API void DefaultValueChanged(const FString &DefaultValue)
Definition MaterialShared.cpp:575
Definition MaterialExpressionIO.h:259
ENGINE_API FString GetDefaultValue() const
Definition MaterialShared.cpp:608
ENGINE_API void DefaultValueChanged(const FString &DefaultValue)
Definition MaterialShared.cpp:594
Definition StructOpsTypeTraits.h:11
@ WithSerializer
Definition StructOpsTypeTraits.h:23
static constexpr EPropertyObjectReferenceType WithSerializerObjectReferences
Definition StructOpsTypeTraits.h:41
Definition StructOpsTypeTraits.h:46