UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MaterialParameterCollection.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
7#pragma once
8
9#include "CoreMinimal.h"
11#include "UObject/Object.h"
12#include "HAL/ThreadSafeBool.h"
13#include "Misc/Guid.h"
14#include "Templates/UniquePtr.h"
15#include "RenderCommandFence.h"
16#include "MaterialParameterCollection.generated.h"
17
20
22USTRUCT()
24{
26
31
33 UPROPERTY(EditAnywhere, Category=Parameter)
34 FName ParameterName;
35
37 UPROPERTY(meta = (IgnoreForMemberInitializationTest))
39};
40
42USTRUCT()
44{
46
48 : DefaultValue(0.0f)
49 {
50 ParameterName = FName(TEXT("Scalar"));
51 }
52
53 UPROPERTY(EditAnywhere, Category=Parameter)
54 float DefaultValue;
55};
56
58USTRUCT()
60{
62
64 : DefaultValue(ForceInitToZero)
65 {
66 ParameterName = FName(TEXT("Vector"));
67 }
68
69 UPROPERTY(EditAnywhere, Category=Parameter)
70 FLinearColor DefaultValue;
71};
72
77UCLASS(hidecategories=object, MinimalAPI, BlueprintType)
79{
81
82 friend class FMaterialParameterCollectionDetails;
83
84public:
85
88 FGuid StateId;
89
90 UPROPERTY(EditAnywhere, Category=Material, Meta = (TitleProperty = "ParameterName"))
92
93 UPROPERTY(EditAnywhere, Category=Material, Meta = (TitleProperty = "ParameterName"))
95
96#if WITH_EDITOR
99
101 bool SetScalarParameterDefaultValue(FName ParameterName, const float Value);
102
105
107 bool SetVectorParameterDefaultValue(FName ParameterName, const FLinearColor& Value);
108#endif // WITH_EDITOR
109
111 int32 GetScalarParameterIndexByName(FName ParameterName) const;
112
114 int32 GetVectorParameterIndexByName(FName ParameterName) const;
115
117 UFUNCTION(BlueprintCallable, Category="Rendering|Material", meta=(Keywords="GetScalarParameterNames"))
118 ENGINE_API TArray<FName> GetScalarParameterNames() const;
119
121 UFUNCTION(BlueprintCallable, Category="Rendering|Material", meta=(Keywords="GetVectorParameterNames"))
122 ENGINE_API TArray<FName> GetVectorParameterNames() const;
123
129 UFUNCTION(BlueprintCallable, Category="Rendering|Material", meta=(Keywords="GetFloatParameterDefaultValue"))
130 ENGINE_API float GetScalarParameterDefaultValue(FName ParameterName, bool& bParameterFound) const;
131
137 UFUNCTION(BlueprintCallable, Category="Rendering|Material", meta=(Keywords="GetFloatParameterDefaultValue"))
138 ENGINE_API FLinearColor GetVectorParameterDefaultValue(FName ParameterName, bool& bParameterFound) const;
139
141 UFUNCTION(BlueprintCallable, Category="Rendering|Material")
142 ENGINE_API UMaterialParameterCollection* GetBaseParameterCollection() const;
143
144 //~ Begin UObject Interface.
145#if WITH_EDITOR
146 using Super::PreEditChange;
147 virtual void PreEditChange(FProperty* PropertyThatWillChange) override;
148 virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
149#endif // WITH_EDITOR
150 virtual void PostInitProperties() override;
151 virtual void PostLoad() override;
152 virtual void BeginDestroy() override;
153 virtual bool CanBeInCluster() const override { return false; }
154 //~ End UObject Interface.
155
157 ENGINE_API FName GetParameterName(const FGuid& Id) const;
158
160 ENGINE_API FGuid GetParameterId(FName ParameterName) const;
161
163 ENGINE_API void GetParameterIndex(const FGuid& Id, int32& OutIndex, int32& OutComponentIndex) const;
164
166 ENGINE_API int32 GetTotalVectorStorage() const;
167
169 ENGINE_API void GetParameterNames(TArray<FName>& OutParameterNames, bool bVectorParameters) const;
170
172 ENGINE_API const FCollectionScalarParameter* GetScalarParameterByName(FName ParameterName) const;
173
175 ENGINE_API const FCollectionVectorParameter* GetVectorParameterByName(FName ParameterName) const;
176
179 {
180 check(UniformBufferStruct);
181 return *UniformBufferStruct;
182 }
183
186 {
187 return UniformBufferStruct.IsValid();
188 }
189
191 ENGINE_API void SetupWorldParameterCollectionInstances();
192
194
195 ENGINE_API bool IsInstanceOf(const FGuid& CollectionStateId) const;
196
197#if WITH_EDITOR
199
201 FOnCollectionChanged& OnCollectionChanged() const
202 {
204 }
205#endif
206
207private:
208 virtual ENGINE_API void FinishDestroy() override;
209 virtual ENGINE_API bool IsReadyForFinishDestroy() override;
210
211 template<typename FCollectionParameterType>
213
214 bool UpdateOverrides(UMaterialParameterCollection* BaseCollection);
215
216 UPROPERTY(EditAnywhere, Category=Material, AssetRegistrySearchable)
218
219 UPROPERTY()
220 FGuid BaseStateId;
221
223 UPROPERTY()
224 TMap<FGuid, float> ScalarParameterBaseOverrides;
225
227 UPROPERTY()
228 TMap<FGuid, FLinearColor> VectorParameterBaseOverrides;
229
231 FThreadSafeBool ReleasedByRT;
232
235
236 TUniquePtr<FShaderParametersMetadata> UniformBufferStruct;
237
238#if WITH_EDITOR
241#endif
242
243 void CreateBufferStruct();
244
246 void GetDefaultParameterData(TArray<FVector4f>& ParameterData) const;
247
248 void UpdateDefaultResource(bool bRecreateUniformBuffer);
249};
#define check(expr)
Definition AssertionMacros.h:314
@ ForceInitToZero
Definition CoreMiscDefines.h:156
#define TEXT(x)
Definition Platform.h:1272
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
#define DECLARE_MULTICAST_DELEGATE(DelegateName)
Definition DelegateCombinations.h:23
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define UFUNCTION(...)
Definition ObjectMacros.h:745
#define GENERATED_UCLASS_BODY(...)
Definition ObjectMacros.h:768
#define UCLASS(...)
Definition ObjectMacros.h:776
#define USTRUCT(...)
Definition ObjectMacros.h:746
#define GENERATED_USTRUCT_BODY(...)
Definition ObjectMacros.h:767
int16 GetParameterIndex(const FShaderParameterBindings::FResourceParameter &Parameter)
Definition Shader.h:802
USkinnedMeshComponent float
Definition SkinnedMeshComponent.h:60
Definition ParameterCollection.h:25
Definition NameTypes.h:617
Definition UnrealType.h:174
Definition ShaderParameterMetadata.h:136
Definition ThreadSafeBool.h:17
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition UniquePtr.h:107
Definition MaterialParameterCollection.h:79
virtual bool CanBeInCluster() const override
Definition MaterialParameterCollection.h:153
bool HasValidUniformBufferStruct() const
Definition MaterialParameterCollection.h:185
const FShaderParametersMetadata & GetUniformBufferStruct() const
Definition MaterialParameterCollection.h:178
Definition Object.h:95
static CORE_API void CreateGuid(struct FGuid &Result)
Definition AndroidPlatformMisc.cpp:1126
Definition MaterialParameterCollection.h:24
Definition MaterialParameterCollection.h:44
Definition MaterialParameterCollection.h:60
Definition Guid.h:109
Definition Color.h:48
Definition UnrealType.h:6865
Definition ObjectPtr.h:488