UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MaterialInterface.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3
4#pragma once
5
7#include "CoreMinimal.h"
13#include "UObject/Object.h"
14#include "Misc/Guid.h"
15#include "Misc/Optional.h"
16#include "Templates/UniquePtr.h"
18#include "Engine/EngineTypes.h"
21#include "RenderCommandFence.h"
22#include "SceneTypes.h"
30#include "MeshUVChannelInfo.h"
31#include "RHIFeatureLevel.h"
32#include "PSOPrecache.h"
33#include "StaticParameterSet.h"
35
36#include "MaterialInterface.generated.h"
37
42class FShaderType;
44class UMaterial;
49class UNeuralProfile;
50class UTexture;
58#if WITH_EDITOR
60#endif
61#if WITH_EDITORONLY_DATA
63#endif
68
70
71UENUM(BlueprintType)
100
102
106USTRUCT()
108{
110
111
112 UPROPERTY()
113 float EmissiveBoost;
114
116 UPROPERTY(EditAnywhere, Category=Material)
117 float DiffuseBoost;
118
123 UPROPERTY(EditAnywhere, Category=Material)
124 float ExportResolutionScale;
125
127 UPROPERTY(EditAnywhere, Category = Material)
128 uint8 bCastShadowAsMasked : 1;
129
132 UPROPERTY()
133 uint8 bOverrideCastShadowAsMasked:1;
134
136 UPROPERTY()
137 uint8 bOverrideEmissiveBoost:1;
138
140 UPROPERTY()
141 uint8 bOverrideDiffuseBoost:1;
142
144 UPROPERTY()
145 uint8 bOverrideExportResolutionScale:1;
146
148 : EmissiveBoost(1.0f)
149 , DiffuseBoost(1.0f)
150 , ExportResolutionScale(1.0f)
151 , bCastShadowAsMasked(false)
152 , bOverrideCastShadowAsMasked(false)
153 , bOverrideEmissiveBoost(false)
154 , bOverrideDiffuseBoost(false)
155 , bOverrideExportResolutionScale(false)
156 {}
157};
158
162USTRUCT()
164{
166
167 FMaterialTextureInfo() : SamplingScale(0), UVChannelIndex(INDEX_NONE)
168 {
169#if WITH_EDITORONLY_DATA
170 TextureIndex = INDEX_NONE;
171#endif
172 }
173
175
177 UPROPERTY()
178 float SamplingScale;
179
181 UPROPERTY()
182 int32 UVChannelIndex;
183
185 UPROPERTY()
186 FName TextureName;
187
188#if WITH_EDITORONLY_DATA
190 UPROPERTY()
191 FSoftObjectPath TextureReference;
192
198 int32 TextureIndex;
199#endif
200
202 ENGINE_API bool IsValid(bool bCheckTextureIndex = false) const;
203};
204
206
220
244
245USTRUCT()
247{
249
251 : bIsValid(false)
253 , ChannelMinSamplingScale(InPlace, UE_MAX_FLT)
254 {}
255
257
258 UPROPERTY()
260
261 TStaticArray<float, MAX_TEXCOORDS> ChannelMinSamplingScale;
262};
263
264USTRUCT()
272
275{
277public:
281
282 //~ Begin UObject Interface.
283 ENGINE_API virtual void Serialize(FArchive& Ar) override;
284 //~ End UObject Interface.
285
287
289 bool bLoadedCachedExpressionData = false;
290};
291
293
294UCLASS(abstract, BlueprintType, MinimalAPI, HideCategories = (Thumbnail))
296{
298
299#if WITH_EDITORONLY_DATA
300protected:
302
303 UPROPERTY(VisibleAnywhere, Instanced, Category = Material, meta = (AllowEditInlineCustomization, ShowInnerProperties))
305
306 ENGINE_API virtual const UClass* GetEditorOnlyDataClass() const;
307
308public:
310 virtual const UMaterialInterfaceEditorOnlyData* GetEditorOnlyData() const { return EditorOnlyData; }
311 bool IsEditorOnlyDataValid() const { return EditorOnlyData != nullptr; }
312#endif // WITH_EDITORONLY_DATA
313
314public:
315#if !WITH_EDITOR
317 {
318 return CachedTexturesSamplingInfo.GetPtrOrNull();
319 }
320 ENGINE_API virtual FTextureSamplingInfo CalculateTexturesSamplingInfo(UTexture* Texture);
321#endif
322
324 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Material, meta = (DisplayName = "Subsurface Profile"))
326
330 UPROPERTY()
331 TArray<TObjectPtr<class USubsurfaceProfile>> SubsurfaceProfiles;
332
334 UPROPERTY()
335 TArray<TObjectPtr<class USpecularProfile>> SpecularProfiles;
336
338 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = PostProcessMaterial, meta = (DisplayName = "Neural Profile"))
340
342 FOnBaseMaterialIsSet OnBaseMaterialSetEvent;
343
344 /* -------------------------- */
345
347 FRenderCommandFence ParentRefFence;
348
351 UPROPERTY(EditAnywhere, Category=Lightmass)
353
354#if WITH_EDITORONLY_DATA
358 UPROPERTY()
360#endif
361
363 UPROPERTY()
364 TArray<FMaterialTextureInfo> TextureStreamingData;
365
367 UPROPERTY(EditAnywhere, AdvancedDisplay, Instanced, Category = Material)
369
370#if !WITH_EDITOR
371 ENGINE_API void CacheTexturesSamplingInfo();
372 ENGINE_API virtual bool CanCacheTexturesSamplingInfo() const;
373#endif
374
378
379private:
381 uint32 FeatureLevelsToForceCompile;
382
383public:
384
386 UPROPERTY(meta=(DisplayAfter="NeuralProfile"))
387 uint8 bIncludedInBaseGame : 1;
388
392
393 //~ Begin IInterface_AssetUserData Interface
394 ENGINE_API virtual void AddAssetUserData(UAssetUserData* InUserData) override;
397 //~ End IInterface_AssetUserData Interface
398
399#if WITH_EDITORONLY_DATA
403
405 UPROPERTY(EditAnywhere, Category=Previewing, meta=(AllowedClasses="/Script/Engine.StaticMesh,/Script/Engine.SkeletalMesh", ExactClass="true"))
407
409 UPROPERTY(VisibleAnywhere, Instanced, Category = Thumbnail)
411
412 UPROPERTY()
413 TMap<FString, bool> LayerParameterExpansion;
414
415 UPROPERTY()
416 TMap<FString, bool> ParameterOverviewExpansion;
417
419 UPROPERTY(EditAnywhere, Instanced, Category = ImportSettings)
421
422private:
424 UPROPERTY()
426
427#endif // WITH_EDITORONLY_DATA
428
429private:
431 ENGINE_API static uint32 FeatureLevelsForAllMaterials;
432public:
434 ENGINE_API void SetFeatureLevelToCompile(ERHIFeatureLevel::Type FeatureLevel, bool bShouldCompile);
435
437 ENGINE_API static void SetGlobalRequiredFeatureLevel(ERHIFeatureLevel::Type FeatureLevel, bool bShouldCompile);
438
439 //~ Begin UObject Interface.
440 ENGINE_API virtual void BeginDestroy() override;
441 ENGINE_API virtual void FinishDestroy() override;
442 ENGINE_API virtual bool IsReadyForFinishDestroy() override;
443 ENGINE_API virtual void PostInitProperties() override;
444 ENGINE_API virtual void Serialize(FArchive& Ar) override;
445 ENGINE_API virtual void PostLoad() override;
446#if WITH_EDITORONLY_DATA
448#endif
449
450 ENGINE_API virtual void PostDuplicate(bool bDuplicateForPIE) override;
451 ENGINE_API virtual void PostCDOContruct() override;
452 ENGINE_API virtual bool Rename(const TCHAR* NewName = nullptr, UObject* NewOuter = nullptr, ERenameFlags Flags = REN_None) override;
454
455#if WITH_EDITOR
456 ENGINE_API virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
459#endif // WITH_EDITOR
460#if WITH_EDITOR
462#endif
463 //~ End UObject Interface.
464
465 //~ Begin Begin Interface IBlendableInterface
466 ENGINE_API virtual void OverrideBlendableSettings(class FSceneView& View, float Weight) const override;
467 //~ Begin End Interface IBlendableInterface
468
470 UFUNCTION(BlueprintCallable, Category="Rendering|Material")
471 ENGINE_API UMaterial* GetBaseMaterial();
472
474 ENGINE_API virtual void OnAssignedAsOverride(const UObject* Owner);
476 ENGINE_API virtual void OnRemovedAsOverride(const UObject* Owner);
477
482 virtual class UMaterial* GetMaterial() PURE_VIRTUAL(UMaterialInterface::GetMaterial,return NULL;);
487 virtual const class UMaterial* GetMaterial() const PURE_VIRTUAL(UMaterialInterface::GetMaterial,return NULL;);
488
492 virtual const class UMaterial* GetMaterial_Concurrent(TMicRecursionGuard RecursionGuard = TMicRecursionGuard()) const PURE_VIRTUAL(UMaterialInterface::GetMaterial_Concurrent,return NULL;);
493
494 virtual void GetMaterialInheritanceChain(FMaterialInheritanceChain& OutChain) const PURE_VIRTUAL(UMaterialInterface::GetMaterialInheritanceChain, return;);
495
496 ENGINE_API virtual const FMaterialCachedExpressionData& GetCachedExpressionData(TMicRecursionGuard RecursionGuard = TMicRecursionGuard()) const;
497
498 ENGINE_API bool IsUsingNewHLSLGenerator() const;
499 ENGINE_API bool IsUsingNewTranslatorPrototype() const;
500
501 ENGINE_API const FSubstrateCompilationConfig& GetSubstrateCompilationConfig() const;
502 ENGINE_API void SetSubstrateCompilationConfig(FSubstrateCompilationConfig& SubstrateCompilationConfig);
503
509 virtual bool IsDependent(UMaterialInterface* TestDependency) { return TestDependency == this; }
510
515
521
528 virtual class FMaterialRenderProxy* GetRenderProxy() const PURE_VIRTUAL(UMaterialInterface::GetRenderProxy,return NULL;);
529
534 UFUNCTION(BlueprintCallable, Category = "Physics|Material")
535 virtual UPhysicalMaterial* GetPhysicalMaterial() const PURE_VIRTUAL(UMaterialInterface::GetPhysicalMaterial,return NULL;);
536
541 UFUNCTION(BlueprintCallable, Category = "Physics|Material")
542 virtual UPhysicalMaterialMask* GetPhysicalMaterialMask() const PURE_VIRTUAL(UMaterialInterface::GetPhysicalMaterialMask, return nullptr;);
543
548 UFUNCTION(BlueprintCallable, Category = "Physics|Material")
549 virtual UPhysicalMaterial* GetPhysicalMaterialFromMap(int32 Index) const PURE_VIRTUAL(UMaterialInterface::GetPhysicalMaterialFromMap, return nullptr;);
550
557 void GetQualityLevelUsage(TArray<bool, TInlineAllocator<EMaterialQualityLevel::Num> >& QualityLevelsUsed, EShaderPlatform ShaderPlatform, bool bCooking = false);
558
559 inline void GetQualityLevelUsageForCooking(TArray<bool, TInlineAllocator<EMaterialQualityLevel::Num> >& QualityLevelsUsed, EShaderPlatform ShaderPlatform)
560 {
561 GetQualityLevelUsage(QualityLevelsUsed, ShaderPlatform, true);
562 }
563
564 UE_DEPRECATED(5.7, "Deprecated: Use the version with the optional parameters InSpecificQualityLevel and InSpecificShaderPlatform. If unset, we search used textures for this material for all Quality Levels and Shader Platforms.")
565 virtual void GetUsedTextures(TArray<UTexture*>& OutTextures, EMaterialQualityLevel::Type QualityLevel, bool bAllQualityLevels, ERHIFeatureLevel::Type FeatureLevel, bool bAllFeatureLevels) const final {}
566
573 PURE_VIRTUAL(UMaterialInterface::GetUsedTextures, );
579 UE_DEPRECATED(5.7, "Please use GetUsedTexturesAndIndices with EShaderPlatform argument and not ERHIFeatureLevel::Type")
580 ENGINE_API virtual void GetUsedTexturesAndIndices(TArray<UTexture*>& OutTextures, TArray< TArray<int32> >& OutIndices, EMaterialQualityLevel::Type QualityLevel, ERHIFeatureLevel::Type FeatureLevel) const final;
582
589 virtual void OverrideTexture(const UTexture* InTextureToOverride, UTexture* OverrideTexture, ERHIFeatureLevel::Type InFeatureLevel) PURE_VIRTUAL(UMaterialInterface::OverrideTexture, return;);
590
596 UE_DEPRECATED(5.7, "Please use SetNumericParameterDefault/ClearNumericParameterDefault instead with EShaderPlatform argument and not ERHIFeatureLevel::Type")
597 virtual void OverrideNumericParameterDefault(EMaterialParameterType Type, const FHashedMaterialParameterInfo& ParameterInfo, const UE::Shader::FValue& Value, bool bOverride, ERHIFeatureLevel::Type FeatureLevel) final {}
600
612
617 UE_DEPRECATED(5.7, "Please use GetMaterialResource with EShaderPlatform argument and not ERHIFeatureLevel::Type")
618 virtual FMaterialResource* GetMaterialResource(ERHIFeatureLevel::Type InFeatureLevel, EMaterialQualityLevel::Type QualityLevel = EMaterialQualityLevel::Num) final { return NULL; }
620
625 UE_DEPRECATED(5.7, "Please use GetMaterialResource with EShaderPlatform argument and not ERHIFeatureLevel::Type")
626 virtual const FMaterialResource* GetMaterialResource(ERHIFeatureLevel::Type InFeatureLevel, EMaterialQualityLevel::Type QualityLevel = EMaterialQualityLevel::Num) const final { return NULL; }
628
634
639 virtual UMaterialInterface* GetNaniteOverride(TMicRecursionGuard RecursionGuard = TMicRecursionGuard()) const PURE_VIRTUAL(UMaterialInterface::GetNaniteOverride, return nullptr;);
640
642 UFUNCTION(BlueprintCallable, Category = "Rendering|Material")
643 UMaterialInterface* GetNaniteOverideMaterial() const { return GetNaniteOverride(); }
644
649 {
650 return PrecachePSOs(MakeArrayView(&VertexFactoryType, 1), PreCacheParams);
651 }
653 {
654 TArray<FMaterialPSOPrecacheRequestID> MaterialPSOPrecacheRequestIDs;
655 return PrecachePSOs(VertexFactoryTypes, PreCacheParams, MaterialPSOPrecacheRequestIDs);
656 }
657
662
664 {
665 FPSOPrecacheVertexFactoryDataList VertexFactoryDataList;
666 VertexFactoryDataList.SetNum(VertexFactoryTypes.Num());
667 for (int i = 0; i < VertexFactoryTypes.Num(); ++i)
668 {
669 VertexFactoryDataList[i].VertexFactoryType = VertexFactoryTypes[i];
670 }
671 return PrecachePSOs(VertexFactoryDataList, PreCacheParams, PSOPrecachePriority, OutMaterialPSORequestIDs);
672 }
674
675#if WITH_EDITORONLY_DATA
680
689
697 ENGINE_API bool GetStaticComponentMaskParameterValue(const FHashedMaterialParameterInfo& ParameterInfo, bool& R, bool& G, bool& B, bool& A, FGuid& OutExpressionGuid, bool bOveriddenOnly = false) const;
698#endif // WITH_EDITORONLY_DATA
699
700#if WITH_EDITOR
709
717 virtual bool GetGroupSortPriority(const FString& InGroupName, int32& OutSortPriority) const
718 PURE_VIRTUAL(UMaterialInterface::GetGroupSortPriority, return false;);
719#endif // WITH_EDITOR
720
725 ENGINE_API void GetAllDoubleVectorParameterInfo(TArray<FMaterialParameterInfo>& OutParameterInfo, TArray<FGuid>& OutParameterIds) const;
727 ENGINE_API void GetAllTextureCollectionParameterInfo(TArray<FMaterialParameterInfo>& OutParameterInfo, TArray<FGuid>& OutParameterIds) const;
728 ENGINE_API void GetAllParameterCollectionParameterInfo(TArray<FMaterialParameterInfo>& OutParameterInfo, TArray<FGuid>& OutParameterIds) const;
729 ENGINE_API void GetAllRuntimeVirtualTextureParameterInfo(TArray<FMaterialParameterInfo>& OutParameterInfo, TArray<FGuid>& OutParameterIds) const;
730 ENGINE_API void GetAllSparseVolumeTextureParameterInfo(TArray<FMaterialParameterInfo>& OutParameterInfo, TArray<FGuid>& OutParameterIds) const;
732
733#if WITH_EDITORONLY_DATA
736
737 virtual bool IterateDependentFunctions(TFunctionRef<bool(UMaterialFunctionInterface*)> Predicate) const
738 PURE_VIRTUAL(UMaterialInterface::IterateDependentFunctions,return false;);
740 PURE_VIRTUAL(UMaterialInterface::GetDependentFunctions,return;);
741#endif // WITH_EDITORONLY_DATA
742
743 ENGINE_API bool GetParameterDefaultValue(EMaterialParameterType Type, const FMemoryImageMaterialParameterInfo& ParameterInfo, FMaterialParameterMetadata& OutValue) const;
744 ENGINE_API bool GetScalarParameterDefaultValue(const FHashedMaterialParameterInfo& ParameterInfo, float& OutValue) const;
745 ENGINE_API bool GetVectorParameterDefaultValue(const FHashedMaterialParameterInfo& ParameterInfo, FLinearColor& OutValue) const;
746 ENGINE_API bool GetDoubleVectorParameterDefaultValue(const FHashedMaterialParameterInfo& ParameterInfo, FVector4d& OutValue) const;
747 ENGINE_API bool GetTextureParameterDefaultValue(const FHashedMaterialParameterInfo& ParameterInfo, class UTexture*& OutValue) const;
748 ENGINE_API bool GetTextureCollectionParameterDefaultValue(const FHashedMaterialParameterInfo& ParameterInfo, class UTextureCollection*& OutValue) const;
749 ENGINE_API bool GetParameterCollectionParameterDefaultValue(const FHashedMaterialParameterInfo& ParameterInfo, class UMaterialParameterCollection*& OutValue) const;
750 ENGINE_API bool GetRuntimeVirtualTextureParameterDefaultValue(const FHashedMaterialParameterInfo& ParameterInfo, class URuntimeVirtualTexture*& OutValue) const;
751 ENGINE_API bool GetSparseVolumeTextureParameterDefaultValue(const FHashedMaterialParameterInfo& ParameterInfo, class USparseVolumeTexture*& OutValue) const;
752 ENGINE_API bool GetFontParameterDefaultValue(const FHashedMaterialParameterInfo& ParameterInfo, class UFont*& OutFontValue, int32& OutFontPage) const;
753
754#if WITH_EDITOR
757
760#endif // WITH_EDITOR
761
763 ENGINE_API TArrayView<const TObjectPtr<UObject>> GetReferencedTextures() const;
764
765 ENGINE_API TConstArrayView<TObjectPtr<UTextureCollection>> GetReferencedTextureCollections() const;
766
767 virtual void SaveShaderStableKeysInner(const class ITargetPlatform* TP, const struct FStableShaderKeyAndValue& SaveKeyVal)
768 PURE_VIRTUAL(UMaterialInterface::SaveShaderStableKeysInner, );
769
770 UFUNCTION(BlueprintCallable, Category = "Rendering|Material")
772
774 UE_DEPRECATED(5.7, "Please use GetRelevance with EShaderPlatform argument and not ERHIFeatureLevel::Type")
776 ENGINE_API FMaterialRelevance GetRelevance(EShaderPlatform ShaderPlatform) const;
777
779 UE_DEPRECATED(5.7, "Please use GetRelevance_Concurrent with EShaderPlatform argument and not ERHIFeatureLevel::Type")
780 ENGINE_API FMaterialRelevance GetRelevance_Concurrent(ERHIFeatureLevel::Type InFeatureLevel) const;
781 ENGINE_API FMaterialRelevance GetRelevance_Concurrent(EShaderPlatform ShaderPlatform) const;
782
784 UE_DEPRECATED(5.7, "Please use IsUsingWorldPositionOffset_Concurrent with EShaderPlatform argument and not ERHIFeatureLevel::Type")
785 ENGINE_API bool IsUsingWorldPositionOffset_Concurrent(ERHIFeatureLevel::Type InFeatureLevel) const;
786 ENGINE_API bool IsUsingWorldPositionOffset_Concurrent(EShaderPlatform InShaderPlatform) const;
787
788 ENGINE_API bool IsUsingTemporalResponsiveness_Concurrent(EShaderPlatform InShaderPlatform) const;
789 ENGINE_API bool IsUsingMotionVectorWorldOffset_Concurrent(EShaderPlatform InShaderPlatform) const;
790
791#if !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
796 virtual void LogMaterialsAndTextures(FOutputDevice& Ar, int32 Indent) const {}
797#endif
798
799 virtual void DumpDebugInfo(FOutputDevice& OutputDevice) const {}
800
801private:
802 // might get called from game or render thread
803 UE_DEPRECATED(5.7, "Please use GetRelevance_Internal with EShaderPlatform argument and not ERHIFeatureLevel::Type")
804 FMaterialRelevance GetRelevance_Internal(const UMaterial* Material, ERHIFeatureLevel::Type InFeatureLevel) const;
805 FMaterialRelevance GetRelevance_Internal(const UMaterial* Material, EShaderPlatform ShaderPlatform) const;
806
807public:
808
809 int32 GetWidth() const;
810 int32 GetHeight() const;
811
812 const FGuid& GetLightingGuid() const
813 {
814#if WITH_EDITORONLY_DATA
815 return LightingGuid;
816#else
817 static const FGuid NullGuid( 0, 0, 0, 0 );
818 return NullGuid;
819#endif // WITH_EDITORONLY_DATA
820 }
821
823 {
824#if WITH_EDITORONLY_DATA
826#endif // WITH_EDITORONLY_DATA
827 }
828
836 ENGINE_API virtual void GetLightingGuidChain(bool bIncludeTextures, TArray<FGuid>& OutGuids) const;
837
838#if WITH_EDITOR
839 ENGINE_API virtual uint32 ComputeAllStateCRC() const;
840#endif // WITH_EDITOR
841
851 {
852 return false;
853 }
854
857 {
858 return LightmassSettings.bOverrideCastShadowAsMasked;
859 }
860
862 inline bool GetOverrideEmissiveBoost() const
863 {
864 return LightmassSettings.bOverrideEmissiveBoost;
865 }
866
868 inline bool GetOverrideDiffuseBoost() const
869 {
870 return LightmassSettings.bOverrideDiffuseBoost;
871 }
872
875 {
876 return LightmassSettings.bOverrideExportResolutionScale;
877 }
878
880 virtual bool GetCastShadowAsMasked() const
881 {
882 return LightmassSettings.bCastShadowAsMasked;
883 }
884
886 virtual float GetEmissiveBoost() const
887 {
888 return
889 LightmassSettings.EmissiveBoost;
890 }
891
893 virtual float GetDiffuseBoost() const
894 {
895 return LightmassSettings.DiffuseBoost;
896 }
897
899 virtual float GetExportResolutionScale() const
900 {
901 return FMath::Clamp(LightmassSettings.ExportResolutionScale, .1f, 10.0f);
902 }
903
909
915
921
927
930 {
931 LightmassSettings.bCastShadowAsMasked = InCastShadowAsMasked;
932 }
933
936 {
937 LightmassSettings.EmissiveBoost = InEmissiveBoost;
938 }
939
942 {
943 LightmassSettings.DiffuseBoost = InDiffuseBoost;
944 }
945
951
952#if WITH_EDITOR
965 PURE_VIRTUAL(UMaterialInterface::GetTexturesInPropertyChain,return false;);
966
967 ENGINE_API bool GetGroupName(const FHashedMaterialParameterInfo& ParameterInfo, FName& GroupName) const;
968 ENGINE_API bool GetParameterDesc(const FHashedMaterialParameterInfo& ParameterInfo, FString& OutDesc) const;
970#endif // WITH_EDITOR
971
973
974 ENGINE_API bool GetScalarParameterValue(const FHashedMaterialParameterInfo& ParameterInfo, float& OutValue, bool bOveriddenOnly = false) const;
975#if WITH_EDITOR
977#endif // WITH_EDITOR
978 ENGINE_API bool GetVectorParameterValue(const FHashedMaterialParameterInfo& ParameterInfo, FLinearColor& OutValue, bool bOveriddenOnly = false) const;
979#if WITH_EDITOR
982#endif
983 ENGINE_API bool GetDoubleVectorParameterValue(const FHashedMaterialParameterInfo& ParameterInfo, FVector4d& OutValue, bool bOveriddenOnly = false) const;
984#if WITH_EDITOR
987#endif // WITH_EDITOR
988 ENGINE_API virtual bool GetTextureParameterValue(const FHashedMaterialParameterInfo& ParameterInfo, class UTexture*& OutValue, bool bOveriddenOnly = false) const;
989 ENGINE_API virtual bool GetTextureCollectionParameterValue(const FHashedMaterialParameterInfo& ParameterInfo, class UTextureCollection*& OutValue, bool bOveriddenOnly = false) const;
990 ENGINE_API virtual bool GetParameterCollectionParameterValue(const FHashedMaterialParameterInfo& ParameterInfo, class UMaterialParameterCollection*& OutValue, bool bOveriddenOnly = false) const;
991 ENGINE_API bool GetRuntimeVirtualTextureParameterValue(const FHashedMaterialParameterInfo& ParameterInfo, class URuntimeVirtualTexture*& OutValue, bool bOveriddenOnly = false) const;
992 ENGINE_API bool GetSparseVolumeTextureParameterValue(const FHashedMaterialParameterInfo& ParameterInfo, class USparseVolumeTexture*& OutValue, bool bOveriddenOnly = false) const;
993#if WITH_EDITOR
995#endif
996 ENGINE_API bool GetFontParameterValue(const FHashedMaterialParameterInfo& ParameterInfo,class UFont*& OutFontValue, int32& OutFontPage, bool bOveriddenOnly = false) const;
997
998 ENGINE_API virtual bool GetRefractionSettings(float& OutBiasValue) const;
1002 ENGINE_API virtual int32 GetBlendablePriority(const UMaterial* Base) const;
1003
1007 ENGINE_API virtual float GetOpacityMaskClipValue() const;
1008 ENGINE_API virtual bool GetCastDynamicShadowAsMasked() const;
1009 UFUNCTION(BlueprintCallable, Category = "Rendering|Material")
1010 ENGINE_API virtual EBlendMode GetBlendMode() const;
1011 ENGINE_API virtual FMaterialShadingModelField GetShadingModels() const;
1012 ENGINE_API virtual bool IsShadingModelFromMaterialExpression() const;
1013 ENGINE_API virtual bool IsTwoSided() const;
1014 ENGINE_API virtual bool IsThinSurface() const;
1015 ENGINE_API virtual bool IsDitheredLODTransition() const;
1016 ENGINE_API virtual bool IsTranslucencyWritingCustomDepth() const;
1017 ENGINE_API virtual bool IsTranslucencyWritingVelocity() const;
1018 ENGINE_API virtual bool IsTranslucencyVelocityFromDepth() const;
1019 ENGINE_API virtual bool IsTranslucencyWritingFrontLayerTransparency() const;
1020 ENGINE_API virtual bool IsMasked() const;
1021 ENGINE_API virtual bool IsDeferredDecal() const;
1022 ENGINE_API virtual bool IsUIMaterial() const;
1023 ENGINE_API virtual bool IsPostProcessMaterial() const;
1024 ENGINE_API virtual bool WritesToRuntimeVirtualTexture() const;
1025 ENGINE_API virtual bool HasMeshPaintTexture() const;
1026 ENGINE_API virtual bool HasCustomPrimitiveData() const;
1027 ENGINE_API virtual FDisplacementScaling GetDisplacementScaling() const;
1028 ENGINE_API virtual bool IsDisplacementFadeEnabled() const;
1029 ENGINE_API virtual FDisplacementFadeRange GetDisplacementFadeRange() const;
1030 ENGINE_API virtual float GetMaxWorldPositionOffsetDisplacement() const;
1031 ENGINE_API virtual bool ShouldAlwaysEvaluateWorldPositionOffset() const;
1032 ENGINE_API virtual bool HasVertexInterpolator() const;
1033 ENGINE_API virtual bool HasCustomizedUVs() const;
1034 ENGINE_API virtual bool HasPixelAnimation() const;
1035 ENGINE_API virtual USubsurfaceProfile* GetSubsurfaceProfile_Internal() const;
1036 ENGINE_API virtual USubsurfaceProfile* GetSubsurfaceProfileRoot_Internal() const;
1037 ENGINE_API virtual uint32 NumSubsurfaceProfileRoot_Internal() const;
1038 ENGINE_API virtual USubsurfaceProfile* GetSubsurfaceProfileRoot_Internal(uint32 Index) const;
1039 ENGINE_API virtual USubsurfaceProfile* GetSubsurfaceProfileOverride_Internal() const;
1040 ENGINE_API virtual uint32 NumSpecularProfile_Internal() const;
1041 ENGINE_API virtual USpecularProfile* GetSpecularProfile_Internal(uint32 Index) const;
1042 ENGINE_API virtual USpecularProfile* GetSpecularProfileOverride_Internal() const;
1043 ENGINE_API virtual UNeuralProfile* GetNeuralProfile_Internal() const;
1044 ENGINE_API virtual bool CastsRayTracedShadows() const;
1045 ENGINE_API virtual bool IsTessellationEnabled() const;
1046 ENGINE_API virtual bool HasSubstrateRoughnessTracking() const;
1047 ENGINE_API virtual bool IsCompatibleWithLumenCardSharing() const;
1048
1059 UFUNCTION(BlueprintCallable, Category = "Rendering|Material")
1061
1069 ENGINE_API static void RecacheAllMaterialUniformExpressions(bool bRecreateUniformBuffer);
1070
1092
1100 virtual void RecacheUniformExpressions(bool bRecreateUniformBuffer) const {}
1101
1110
1111#if WITH_EDITOR
1114#endif
1115
1126 virtual bool IsComplete() const { return true; }
1127
1128#if WITH_EDITOR
1129 virtual bool IsCompiling() const { return false; };
1130#else
1131 inline bool IsCompiling() const { return false; }
1132#endif
1133
1143 ENGINE_API void EnsureIsComplete();
1144
1145#if WITH_EDITOR
1148#endif // WITH_EDITOR
1149
1153 ENGINE_API static void AssertDefaultMaterialsExist();
1154
1158 ENGINE_API static void AssertDefaultMaterialsPostLoaded();
1159
1163 ENGINE_API static void InitDefaultMaterials();
1164
1168 ENGINE_API static bool IsDefaultMaterialInitialized();
1169
1173 ENGINE_API static void PrecacheDefaultMaterialPSOs();
1174
1176 ENGINE_API virtual bool IsPropertyActive(EMaterialProperty InProperty) const;
1177
1178#if WITH_EDITOR
1181
1183 ENGINE_API virtual int32 CompilePropertyEx( class FMaterialCompiler* Compiler, const FGuid& AttributeID );
1184
1186 virtual bool ShouldForcePlanePreview()
1187 {
1189 }
1190
1193 {
1195 };
1196#endif // WITH_EDITOR
1197
1199 ENGINE_API static uint32 GetFeatureLevelsToCompileForAllMaterials();
1200
1203
1206
1209
1211 ENGINE_API void AnalyzeMaterialCompilationInCallback(TFunctionRef<void (FMaterialCompiler*)> InCompilationCallback, FMaterialAnalysisResult& OutResult);
1212
1214 UE_DEPRECATED(5.7, "Please use AnalyzeMaterialTranslationOutput with ValidationMode argument")
1215 ENGINE_API void AnalyzeMaterialTranslationOutput(FMaterialResource* MaterialResource, EShaderPlatform ShaderPlatform, FMaterialAnalysisResult& OutResult);
1216 ENGINE_API void AnalyzeMaterialTranslationOutput(FMaterialResource* MaterialResource, EShaderPlatform ShaderPlatform, bool ValidationMode, FMaterialAnalysisResult& OutResult);
1217
1218#if WITH_EDITOR
1221#endif // WITH_EDITOR
1222
1224 template <typename FunctionType>
1226 {
1227 uint32 FeatureLevels = GetFeatureLevelsToCompileForAllMaterials();
1228 while (FeatureLevels != 0)
1229 {
1231 }
1232 }
1233
1236 {
1237 check(SamplerTypeEnum);
1238 return SamplerTypeEnum;
1239 }
1240
1242 ENGINE_API bool UseAnyStreamingTexture() const;
1244 inline bool HasTextureStreamingData() const { return TextureStreamingData.Num() != 0; }
1246 inline const TArray<FMaterialTextureInfo>& GetTextureStreamingData() const { return TextureStreamingData; }
1247 inline TArray<FMaterialTextureInfo>& GetTextureStreamingData() { return TextureStreamingData; }
1249 ENGINE_API bool FindTextureStreamingDataIndexRange(FName TextureName, int32& LowerIndex, int32& HigherIndex) const;
1250
1252 ENGINE_API void SetTextureStreamingData(const TArray<FMaterialTextureInfo>& InTextureStreamingData);
1253
1261 ENGINE_API virtual float GetTextureDensity(FName TextureName, const struct FMeshUVChannelInfo& UVChannelData) const;
1262
1263#if !WITH_EDITOR
1264 ENGINE_API float GetTextureDensityWithCache(const FTextureSamplingInfo& TextureSamplingInfo, const FMeshUVChannelInfo& UVChannelData) const;
1265#endif
1266
1267 ENGINE_API virtual void PreSave(FObjectPreSaveContext ObjectSaveContext) override;
1268
1275 ENGINE_API void SortTextureStreamingData(bool bForceSort, bool bFinalSort);
1276
1277#if WITH_EDITOR
1288#endif // WITH_EDITOR
1289
1291 ENGINE_API static void FilterOutPlatformShadingModels(EShaderPlatform Platform, FMaterialShadingModelField& ShadingModels);
1292
1293#if WITH_EDITOR
1295#endif // WITH_EDITOR
1296
1297protected:
1299 ENGINE_API uint32 GetFeatureLevelsToCompileForRendering() const;
1300
1301 void UpdateMaterialRenderProxy(FMaterialRenderProxy& Proxy);
1302
1304 bool bLoadedCachedExpressionData = false;
1305
1312
1313private:
1317 static void PostLoadDefaultMaterials();
1318
1322 static UEnum* SamplerTypeEnum;
1323
1324#if WITH_EDITOR
1325public:
1331
1332protected:
1335
1336private:
1341#endif
1342};
1343
1345{
1346
1348extern void SerializeInlineShaderMaps(
1349 FArchive& Ar,
1351 const FName& SerializingAsset = NAME_None
1352#if WITH_EDITOR
1354#endif
1355);
1356
1357}
1358
1361
1362UE_DEPRECATED(5.7, "Please use FindMaterialResource with EShaderPlatform argument and not ERHIFeatureLevel::Type")
1364UE_DEPRECATED(5.7, "Please use FindMaterialResource with EShaderPlatform argument and not ERHIFeatureLevel::Type")
1366
1369
1370UE_DEPRECATED(5.7, "Please use FindOrCreateMaterialResource with EShaderPlatform argument and not ERHIFeatureLevel::Type")
1375 EMaterialQualityLevel::Type QualityLevel);
1376
1381 EMaterialQualityLevel::Type QualityLevel);
1382
1383#if UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_5_6
1385#endif
#define NULL
Definition oodle2base.h:134
constexpr auto MakeArrayView(OtherRangeType &&Other)
Definition ArrayView.h:873
#define checkSlow(expr)
Definition AssertionMacros.h:332
#define check(expr)
Definition AssertionMacros.h:314
EBlendableLocation
Definition BlendableInterface.h:15
#define WITH_EDITOR
Definition Build.h:67
ENoInit
Definition CoreMiscDefines.h:158
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define PURE_VIRTUAL(func,...)
Definition CoreMiscDefines.h:103
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
@ InPlace
Definition CoreMiscDefines.h:162
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
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_OneParam(DelegateName, Param1Type)
Definition DelegateCombinations.h:49
EBlendMode
Definition EngineTypes.h:245
void ProcessSerializedInlineShaderMaps(UMaterialInterface *Owner, TArray< FMaterialResource > &LoadedResources, TArray< FMaterialResource * > &OutMaterialResourcesLoaded)
Definition Material.cpp:898
TArray< FMaterialResource * > FMaterialResourceDeferredDeletionArray
Definition MaterialInterface.h:69
EMaterialUsage
Definition MaterialInterface.h:73
@ MATUSAGE_MeshParticles
Definition MaterialInterface.h:77
@ MATUSAGE_StaticLighting
Definition MaterialInterface.h:78
@ MATUSAGE_InstancedStaticMeshes
Definition MaterialInterface.h:81
@ MATUSAGE_StaticMesh
Definition MaterialInterface.h:96
@ MATUSAGE_ParticleSprites
Definition MaterialInterface.h:75
@ MATUSAGE_NiagaraMeshParticles
Definition MaterialInterface.h:86
@ MATUSAGE_GeometryCache
Definition MaterialInterface.h:87
@ MATUSAGE_MorphTargets
Definition MaterialInterface.h:79
@ MATUSAGE_GeometryCollections
Definition MaterialInterface.h:82
@ MATUSAGE_LidarPointCloud
Definition MaterialInterface.h:90
@ MATUSAGE_HairStrands
Definition MaterialInterface.h:89
@ MATUSAGE_HeterogeneousVolumes
Definition MaterialInterface.h:95
@ MATUSAGE_MAX
Definition MaterialInterface.h:98
@ MATUSAGE_NiagaraRibbons
Definition MaterialInterface.h:85
@ MATUSAGE_SplineMesh
Definition MaterialInterface.h:80
@ MATUSAGE_VirtualHeightfieldMesh
Definition MaterialInterface.h:91
@ MATUSAGE_Water
Definition MaterialInterface.h:88
@ MATUSAGE_VolumetricCloud
Definition MaterialInterface.h:94
@ MATUSAGE_Clothing
Definition MaterialInterface.h:83
@ MATUSAGE_BeamTrails
Definition MaterialInterface.h:76
@ MATUSAGE_SkeletalMesh
Definition MaterialInterface.h:74
@ MATUSAGE_NiagaraSprites
Definition MaterialInterface.h:84
@ MATUSAGE_Voxels
Definition MaterialInterface.h:93
@ MATUSAGE_Nanite
Definition MaterialInterface.h:92
ENGINE_API FMaterialResource * FindOrCreateMaterialResource(TArray< FMaterialResource * > &MaterialResources, UMaterial *OwnerMaterial, UMaterialInstance *OwnerMaterialInstance, ERHIFeatureLevel::Type InFeatureLevel, EMaterialQualityLevel::Type QualityLevel)
Definition Material.cpp:1014
TMaterialRecursionGuard< class UMaterialInterface > TMicRecursionGuard
Definition MaterialInterface.h:205
FMaterialResource * FindMaterialResource(const TArray< FMaterialResource * > &MaterialResources, ERHIFeatureLevel::Type InFeatureLevel, EMaterialQualityLevel::Type QualityLevel, bool bAllowDefaultQuality)
Definition Material.cpp:973
ENGINE_API EMaterialQualityLevel::Type GetCurrentMaterialQualityLevelChecked()
Definition MaterialInterface.cpp:97
EMaterialGetParameterValueFlags
Definition MaterialParameters.h:260
EMaterialParameterType
Definition MaterialParameters.h:187
EMaterialParameterAssociation
Definition MaterialParameters.h:25
EMaterialShaderPrecompileMode
Definition MaterialShaderPrecompileMode.h:7
@ MAX_TEXCOORDS
Definition MeshUVChannelInfo.h:8
@ Num
Definition MetalRHIPrivate.h:234
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
uint32 ERenameFlags
Definition ObjectMacros.h:2302
#define REN_None
Definition ObjectMacros.h:2305
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UFUNCTION(...)
Definition ObjectMacros.h:745
#define GENERATED_UCLASS_BODY(...)
Definition ObjectMacros.h:768
#define UCLASS(...)
Definition ObjectMacros.h:776
#define UENUM(...)
Definition ObjectMacros.h:749
#define USTRUCT(...)
Definition ObjectMacros.h:746
#define GENERATED_USTRUCT_BODY(...)
Definition ObjectMacros.h:767
EPSOPrecachePriority
Definition PipelineStateCache.h:33
EShaderPlatform
Definition RHIShaderPlatform.h:11
EMaterialProperty
Definition SceneTypes.h:148
USkinnedMeshComponent float
Definition SkinnedMeshComponent.h:60
TArray< FGraphEventRef, TInlineAllocator< 4 > > FGraphEventArray
Definition TaskGraphInterfaces.h:258
#define UE_MAX_FLT
Definition UnrealMathUtility.h:147
uint8_t uint8
Definition binka_ue_file_header.h:8
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Archive.h:1208
Definition AssetRegistryTagsContext.h:98
Definition MaterialCompiler.h:109
Definition MaterialRenderProxy.h:102
virtual bool GetUserSceneTextureOverride(FName &InOutValue) const
Definition MaterialRenderProxy.h:178
virtual bool GetParameterValue(EMaterialParameterType Type, const FHashedMaterialParameterInfo &ParameterInfo, FMaterialParameterValue &OutValue, const FMaterialRenderContext &Context) const =0
virtual ENGINE_API int32 GetBlendablePriority(const FMaterial *Base) const
Definition MaterialRenderProxy.cpp:308
virtual ENGINE_API EBlendableLocation GetBlendableLocation(const FMaterial *Base) const
Definition MaterialRenderProxy.cpp:302
ENGINE_API FName GetUserSceneTextureOutput(const FMaterial *Base) const
Definition MaterialRenderProxy.cpp:284
Definition MaterialShared.h:3076
Definition NameTypes.h:617
Definition ObjectSaveContext.h:244
Definition UnrealType.h:3087
Definition OutputDevice.h:133
Definition UObjectGlobals.h:2492
Definition RenderCommandFence.h:15
Definition SceneView.h:1425
Definition Shader.h:1931
Definition Shader.h:1238
Definition ObjectMacros.h:180
Definition VertexFactory.h:314
Definition BlendableInterface.h:96
Definition Interface_AssetUserData.h:20
Definition ArrayView.h:139
Definition Array.h:670
void SetNum(SizeType NewNum, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2308
Definition AssetRegistryState.h:50
Definition UnrealString.h.inl:34
Definition SharedPointer.h:692
Definition ContainerAllocationPolicies.h:894
Definition StaticArray.h:26
Definition SubclassOf.h:30
Definition UniquePtr.h:107
Definition AssetImportData.h:72
Definition AssetUserData.h:18
Definition Class.h:3793
Definition Class.h:2791
Definition Font.h:111
Definition MaterialExpressionCustomOutput.h:15
Definition MaterialFunctionInterface.h:59
Definition MaterialInstance.h:627
Definition MaterialInterface.h:275
TSharedPtr< FMaterialCachedExpressionEditorOnlyData > CachedExpressionData
Definition MaterialInterface.h:286
Definition MaterialInterface.h:296
TArray< FMaterialTextureInfo > & GetTextureStreamingData()
Definition MaterialInterface.h:1247
virtual float GetExportResolutionScale() const
Definition MaterialInterface.h:899
virtual FMaterialResource * GetMaterialResource(EShaderPlatform InShaderPlatform, EMaterialQualityLevel::Type QualityLevel=EMaterialQualityLevel::Num)
Definition MaterialInterface.h:619
virtual bool GetMaterialLayers(FMaterialLayersFunctions &OutLayers, TMicRecursionGuard RecursionGuard=TMicRecursionGuard()) const PURE_VIRTUAL(UMaterialInterface
Definition MaterialInterface.h:633
const FMaterialCachedTexturesSamplingInfo * GetCachedTexturesSamplingInfo() const
Definition MaterialInterface.h:316
virtual void GetDependencies(TSet< UMaterialInterface * > &Dependencies) PURE_VIRTUAL(UMaterialInterface
Definition MaterialInterface.h:520
virtual float GetDiffuseBoost() const
Definition MaterialInterface.h:893
void SetExportResolutionScale(float InExportResolutionScale)
Definition MaterialInterface.h:947
void SetOverrideExportResolutionScale(bool bInOverrideExportResolutionScale)
Definition MaterialInterface.h:923
void SetEmissiveBoost(float InEmissiveBoost)
Definition MaterialInterface.h:935
void SetOverrideDiffuseBoost(bool bInOverrideDiffuseBoost)
Definition MaterialInterface.h:917
bool GetOverrideDiffuseBoost() const
Definition MaterialInterface.h:868
virtual bool IsDependent_Concurrent(UMaterialInterface *TestDependency, TMicRecursionGuard RecursionGuard=TMicRecursionGuard())
Definition MaterialInterface.h:514
virtual void LogMaterialsAndTextures(FOutputDevice &Ar, int32 Indent) const
Definition MaterialInterface.h:796
void SetCastShadowAsMasked(bool InCastShadowAsMasked)
Definition MaterialInterface.h:929
void SetDiffuseBoost(float InDiffuseBoost)
Definition MaterialInterface.h:941
virtual void SetNumericParameterDefault(EMaterialParameterType Type, const FHashedMaterialParameterInfo &ParameterInfo, const UE::Shader::FValue &Value, EShaderPlatform InShaderPlatform) PURE_VIRTUAL(UMaterialInterface
Definition MaterialInterface.h:598
virtual void CacheShaders(EMaterialShaderPrecompileMode CompileMode=EMaterialShaderPrecompileMode::Default)
Submits remaining shaders for recompilation.
Definition MaterialInterface.h:1109
const TArray< FMaterialTextureInfo > & GetTextureStreamingData() const
Definition MaterialInterface.h:1246
static UEnum * GetSamplerTypeEnum()
Definition MaterialInterface.h:1235
FGraphEventArray PrecachePSOs(const TConstArrayView< const FVertexFactoryType * > &VertexFactoryTypes, const struct FPSOPrecacheParams &PreCacheParams, TArray< FMaterialPSOPrecacheRequestID > &OutMaterialPSORequestIDs)
Definition MaterialInterface.h:658
virtual bool GetCastShadowAsMasked() const
Definition MaterialInterface.h:880
bool HasTextureStreamingData() const
Definition MaterialInterface.h:1244
bool GetOverrideEmissiveBoost() const
Definition MaterialInterface.h:862
void SetOverrideEmissiveBoost(bool bInOverrideEmissiveBoost)
Definition MaterialInterface.h:911
bool IsCompiling() const
Definition MaterialInterface.h:1131
virtual bool IsComplete() const
Checks to see if this material has all its shaders cached.
Definition MaterialInterface.h:1126
virtual void ClearNumericParameterDefault(EMaterialParameterType Type, const FHashedMaterialParameterInfo &ParameterInfo, EShaderPlatform InShaderPlatform) PURE_VIRTUAL(UMaterialInterface
Definition MaterialInterface.h:599
virtual bool CheckMaterialUsage(const EMaterialUsage Usage) PURE_VIRTUAL(UMaterialInterface
Definition MaterialInterface.h:607
FGraphEventArray PrecachePSOs(const TConstArrayView< const FVertexFactoryType * > &VertexFactoryTypes, const struct FPSOPrecacheParams &PreCacheParams)
Definition MaterialInterface.h:652
void SetLightingGuid()
Definition MaterialInterface.h:822
FGraphEventArray PrecachePSOs(const TConstArrayView< const FVertexFactoryType * > &VertexFactoryTypes, const struct FPSOPrecacheParams &PreCacheParams, EPSOPrecachePriority PSOPrecachePriority, TArray< FMaterialPSOPrecacheRequestID > &OutMaterialPSORequestIDs)
Definition MaterialInterface.h:663
virtual bool UpdateLightmassTextureTracking()
Definition MaterialInterface.h:850
FGraphEventArray PrecachePSOs(const FVertexFactoryType *VertexFactoryType, const struct FPSOPrecacheParams &PreCacheParams)
Definition MaterialInterface.h:648
virtual FGraphEventArray PrecachePSOs(const FPSOPrecacheVertexFactoryDataList &VertexFactoryDataList, const struct FPSOPrecacheParams &PreCacheParams, EPSOPrecachePriority Priority, TArray< FMaterialPSOPrecacheRequestID > &OutMaterialPSORequestIDs)
Definition MaterialInterface.h:673
static void IterateOverActiveFeatureLevels(FunctionType InHandler)
Definition MaterialInterface.h:1225
virtual float GetEmissiveBoost() const
Definition MaterialInterface.h:886
virtual bool CheckMaterialUsage_Concurrent(const EMaterialUsage Usage) const PURE_VIRTUAL(UMaterialInterface
Definition MaterialInterface.h:611
virtual const FMaterialResource * GetMaterialResource(EShaderPlatform InShaderPlatform, EMaterialQualityLevel::Type QualityLevel=EMaterialQualityLevel::Num) const
Definition MaterialInterface.h:627
bool GetOverrideCastShadowAsMasked() const
Definition MaterialInterface.h:856
TUniquePtr< FMaterialCachedExpressionData > CachedExpressionData
Definition MaterialInterface.h:1311
virtual class FMaterialRenderProxy * GetRenderProxy() const PURE_VIRTUAL(UMaterialInterface
Definition MaterialInterface.h:528
void SetOverrideCastShadowAsMasked(bool bInOverrideCastShadowAsMasked)
Definition MaterialInterface.h:905
bool GetOverrideExportResolutionScale() const
Definition MaterialInterface.h:874
virtual void DumpDebugInfo(FOutputDevice &OutputDevice) const
Definition MaterialInterface.h:799
Definition MaterialParameterCollection.h:79
Definition Material.h:432
Definition NeuralProfile.h:141
Definition Object.h:95
virtual COREUOBJECT_API bool Rename(const TCHAR *NewName=nullptr, UObject *NewOuter=nullptr, ERenameFlags Flags=REN_None)
Definition Obj.cpp:245
virtual void PostDuplicate(bool bDuplicateForPIE)
Definition Object.h:538
virtual bool IsReadyForFinishDestroy()
Definition Object.h:373
virtual COREUOBJECT_API void BeginDestroy()
Definition Obj.cpp:1071
virtual COREUOBJECT_API void GetAssetRegistryTags(FAssetRegistryTagsContext Context) const
Definition Obj.cpp:2423
virtual COREUOBJECT_API void FinishDestroy()
Definition Obj.cpp:1101
virtual void PostCDOContruct()
Definition Object.h:234
static COREUOBJECT_API void AddReferencedObjects(UObject *InThis, FReferenceCollector &Collector)
Definition GarbageCollection.cpp:6401
virtual COREUOBJECT_API void PostInitProperties()
Definition UObjectGlobals.cpp:3961
Definition PhysicalMaterialMask.h:22
Definition PhysicalMaterial.h:104
Definition RuntimeVirtualTexture.h:18
Definition SparseVolumeTexture.h:309
Definition SpecularProfile.h:74
Definition SubsurfaceProfile.h:170
Definition TextureCollection.h:47
Definition Texture.h:1219
Definition ThumbnailInfo.h:16
Definition World.h:918
Definition DebugViewModeHelpers.h:17
Type
Definition SceneTypes.h:132
@ Num
Definition SceneTypes.h:137
Definition SceneComponent.h:24
Type
Definition RHIFeatureLevel.h:20
@ Num
Definition RHIFeatureLevel.h:54
Definition NeuralProfile.h:157
Definition SubsurfaceProfile.h:321
Definition Material.cpp:823
Definition AdvancedWidgetsModule.cpp:13
@ false
Definition radaudio_common.h:23
U16 Index
Definition radfft.cpp:71
static UE_FORCEINLINE_HINT uint32 GetAndClearNextBit(uint32 &Mask)
Definition BitArray.h:28
Definition MaterialShared.h:1020
Definition EngineTypes.h:3237
Definition EngineTypes.h:3204
Definition Guid.h:109
static CORE_API FGuid NewGuid()
Definition Guid.cpp:236
Definition MaterialInterface.h:108
uint8 bOverrideDiffuseBoost
Definition MaterialInterface.h:141
uint8 bOverrideExportResolutionScale
Definition MaterialInterface.h:145
uint8 bOverrideEmissiveBoost
Definition MaterialInterface.h:137
uint8 bOverrideCastShadowAsMasked
Definition MaterialInterface.h:133
float EmissiveBoost
Definition MaterialInterface.h:113
uint8 bCastShadowAsMasked
Definition MaterialInterface.h:128
float ExportResolutionScale
Definition MaterialInterface.h:124
float DiffuseBoost
Definition MaterialInterface.h:117
Definition Color.h:48
Definition MaterialInterface.h:225
uint16 EstimatedNumTextureSamplesVS
Definition MaterialInterface.h:239
bool bTranslationSuccess
Definition MaterialInterface.h:236
TBitArray TextureCoordinates
Definition MaterialInterface.h:227
bool bRequiresVertexData
Definition MaterialInterface.h:233
FMaterialShadingModelField ShadingModels
Definition MaterialInterface.h:230
uint16 EstimatedNumTextureSamplesPS
Definition MaterialInterface.h:242
Definition MaterialCachedData.h:199
Definition MaterialCachedData.h:137
Definition MaterialInterface.h:266
Definition MaterialInterface.h:209
const FMaterialCachedExpressionData * CachedExpressionData
Definition MaterialInterface.h:213
const UMaterial * GetBaseMaterial() const
Definition MaterialInterface.h:217
const UMaterial * BaseMaterial
Definition MaterialInterface.h:211
TArray< const class UMaterialInstance *, TInlineAllocator< 16 > > MaterialInstances
Definition MaterialInterface.h:215
const FMaterialCachedExpressionData & GetCachedExpressionData() const
Definition MaterialInterface.h:218
A structure that holds reflection information about a material. This structure is typically populated...
Definition MaterialInsights.h:21
Definition MaterialLayersFunctions.h:221
Definition MaterialParameters.h:33
Definition MaterialParameters.h:446
Definition MaterialRelevance.h:13
Definition MaterialShared.h:3393
Definition EngineTypes.h:732
Definition MaterialInterface.h:164
FMaterialTextureInfo(ENoInit)
Definition MaterialInterface.h:174
static constexpr UE_FORCEINLINE_HINT T Clamp(const T X, const T MinValue, const T MaxValue)
Definition UnrealMathUtility.h:592
Definition MaterialParameters.h:96
Definition MeshUVChannelInfo.h:13
Definition PSOPrecache.h:30
Definition MaterialParameters.h:279
Definition UnrealType.h:6865
Definition SoftObjectPath.h:56
Definition ShaderCodeLibrary.h:118
Definition StaticParameterSet.h:462
Definition MaterialParameters.h:503
Definition MaterialInterface.h:247
bool bIsValid
Definition MaterialInterface.h:256
Definition MaterialRecursionGuard.h:11
Definition ObjectPtr.h:488
Definition Optional.h:131
Definition SoftObjectPtr.h:174
Definition ShaderTypes.h:368