UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
HLSLMaterialTranslator.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2/*=============================================================================
3 HLSLMaterialTranslator.h: Translates material expressions into HLSL code.
4=============================================================================*/
5
6#pragma once
7
8#include "CoreMinimal.h"
9#include "Stats/Stats.h"
10#include "Algo/Transform.h"
11#include "Misc/Guid.h"
12#include "HAL/IConsoleManager.h"
13#include "ShaderParameters.h"
14#include "StaticParameterSet.h"
15#include "MaterialShared.h"
16#include "Stats/StatsMisc.h"
17#include "Materials/Material.h"
25#include "MaterialCompiler.h"
26#include "RenderUtils.h"
27#include "EngineGlobals.h"
28#include "Engine/Engine.h"
29#include "Interfaces/ITargetPlatformManagerModule.h"
30#include "Hash/CityHash.h"
33#include "Containers/Map.h"
34#include "Shader/ShaderTypes.h"
38
39#if WITH_EDITORONLY_DATA
50#include "ParameterCollection.h"
53#include "Containers/HashTable.h"
54#include "Engine/Texture2D.h"
55#include "SubstrateMaterial.h"
57#endif
58
59class Error;
62
63namespace UE::DerivedData
64{
65 class FRequestOwner;
66}
67
68#if WITH_EDITORONLY_DATA
69
71{
74};
75
77{
78public:
81};
82
84{
90
91
93
100 FString DefinitionFinite;
104 FString DefinitionAnalytic;
109 FString SymbolName;
112
115
117
119
123
125 bool bInline;
126 bool bIntermediate;
129
131 {
132 checkf(Variation == CompiledPDV_FiniteDifferences || Variation == CompiledPDV_Analytic, TEXT("Invalid partial derivative variation: %d"), Variation);
134 }
135
137 {
138 checkf(Variation == CompiledPDV_FiniteDifferences || Variation == CompiledPDV_Analytic, TEXT("Invalid partial derivative variation: %d"), Variation);
140 }
141
144 Hash(InHash),
150 Type(InType),
153 ScopeLevel(0),
154 bInline(bInInline),
157 {}
158
161 Hash(InHash),
166 Type(InType),
169 ScopeLevel(0),
170 bInline(false),
173 {}
174};
175
177{
180 FString Implementation;
183};
184
185
187{
190
193
196};
197
199{
200 FString Name;
202};
203
204enum class EMaterialCastFlags : uint32
205{
206 None = 0u,
207 ReplicateScalar = (1u << 0),
208 AllowTruncate = (1u << 1),
209 AllowAppendZeroes = (1u << 2),
210 AllowInteger = (1u << 3),
211
212 ValidCast = ReplicateScalar | AllowTruncate,
213};
215
217{
218 SCC_Default = 0u,
220 SCC_MAX = 2u
221};
222
231{
232 Success,
233 Failure,
235};
236
237class FHLSLMaterialTranslator : public FMaterialCompiler
238{
239 friend class FMaterialDerivativeAutogen;
240protected:
242 {
243 bool operator==(const FMaterialVTSampleInfo&) const = default;
244
246 ETextureMipValueMode MipValueMode = TMVM_None;
247 TextureAddress AddressU = TA_Clamp;
248 TextureAddress AddressV = TA_Clamp;
249 int32 CoordinateIndex = INDEX_NONE;
253 int32 PageTableIndex = INDEX_NONE;
255 bool bAdaptive = false;
256 bool bGenerateFeedback = false;
257 bool bMeshPaint = false;
258 bool bMaterialCache = false;
259 bool bCollection = false;
260 float AspectRatio = 0.0f;
262 };
263
266 {
275 };
276
278 struct FMaterialCacheTag
279 {
282
284 int32 StackIndex = 0;
285 };
286
289
291 EShaderFrequency ShaderFrequency;
302
304
305 // List of Shared pixel properties. Used to share generated code
307
309 FString ResourcesString;
310
311 /* Stack that tracks compiler state specific to the function currently being compiled. */
313
316
317 FStaticParameterSet StaticParameters;
321 EMaterialQualityLevel::Type QualityLevel;
322
324 ERHIFeatureLevel::Type FeatureLevel;
325
327
329
330 TArray<int32> ScopeStack;
331
333
334 // Array of code chunks per material property
336
339
341
342 // Uniform expressions used across all material properties
351
353 TArray<UMaterialParameterCollection*> ParameterCollections;
354
355 // Index of the next symbol to create
357
359 //TArray<FString> CustomExpressionImplementations;
360 //TMap<UMaterialExpressionCustom*, int32> CachedCustomExpressions;
362
369
372
374 TMap<FGuid, FMaterialCacheTag> MaterialCacheTags;
375
379
382
388 uint32 bUsesSceneDepth : 1;
429
436
441
443 // True if the current property requires last frame's information
447 uint32 bUsesPixelDepthOffset : 1;
448 uint32 bUsesWorldPositionOffset : 1;
449 uint32 bUsesDisplacement : 1;
451 uint32 bUsesDistanceCullFade : 1;
456
458 uint32 bUsesAnisotropy : 1;
459
462
467
470
473
476
480
482
485
487 uint32 bUsesFirstPersonInterpolation : 1;
488
496
499
504
506
509
510 struct FEnvironmentDefines;
511
512 // Describe the simplification status. Once the material has been compiled, it can be used to understand if and how it has been simplified.
514 {
515 bool bMaterialFitsInMemoryBudget = false; // Track whether or not the material fits.
516
519 bool bRunFullSimplification = false; // Simple implementation for now: if the material does not fit, we simply everything.
521
523
525 {
526 union
527 {
528 uint32 PackedData;
529 struct
530 {
531 uint32 Index : 16; // Index of the operator
532 uint32 Depth : 16; // Depth of the operator
533 } Data;
534 };
535
537 {
538 return PackedData != B.PackedData;
539 }
540
542 {
543 return PackedData < B.PackedData;
544 }
545 };
547 };
548
551 {
553 FString NormalCode;
554 FString TangentCode;
555 };
556
558 {
560
562
564
574
578 uint32 SubstrateMaterialEffectiveClosureCount; // Also acts as requested
583
586
594
600
605 {
606 FExpressionInput* ExpressionInput = nullptr;
608 };
611
613
614 bool SubstrateGenerateDerivedMaterialOperatorData(FHLSLMaterialTranslator* Compiler);
615
617
619
620 private:
621 void Initialise();
622 };
623 FSubstrateCompilationContext SubstrateCompilationContext[ESubstrateCompilationContext::SCC_MAX];
624
625 ESubstrateCompilationContext CurrentSubstrateCompilationContext = ESubstrateCompilationContext::SCC_Default;
629
632
635
638
639 const ITargetPlatform* TargetPlatform;
640
642 FSubstrateCompilationConfig SubstrateCompilationConfig;
643
646
647public:
652
653 FHLSLMaterialTranslator(FMaterial* InMaterial,
659 const ITargetPlatform* InTargetPlatform = nullptr,
662
664
665 bool ShouldStopTranslating() const override;
666
669
672
675
676 template<typename ExpressionsArrayType>
678
681
682 template<typename ExpressionsArrayType>
684
686
689
691
693
694 // Assign custom interpolators to slots, packing them as much as possible in unused slots.
696
698
699 FString GetMaterialShaderCode();
700
704
705protected:
707
708 bool IsMaterialPropertyUsed(EMaterialProperty Property, int32 PropertyChunkIndex, const FLinearColor& ReferenceValue, int32 NumComponents) const;
709
710 // only used by GetMaterialShaderCode()
711 // @param Index ECompiledMaterialProperty or EMaterialProperty
713
714 // GetParameterCode, with DERIV_BASE_VALUE if necessary
715 virtual FString GetParameterCode(int32 Index, const TCHAR* Default = 0);
716
717 // GetParameterCode, no DERIV_BASE_VALUE
718 virtual FString GetParameterCodeRaw(int32 Index, const TCHAR* Default = 0);
719
720public:
721 // Must always be valid
723
724protected:
726
729
732
733 // GetFixedParameterCode
735
737
739
741
743 const TCHAR* DescribeType(EMaterialValueType Type) const;
744
746 const TCHAR* HLSLTypeString(EMaterialValueType Type) const;
747
750
752
754 int32 ErrorUnlessPlatformSupports(const bool (*SupportFunction)(const FStaticShaderPlatform Platform), const TCHAR* ConditionString);
755
758
759 void AddEstimatedTextureSample(const uint32 Count = 1);
760 void AddLWCFuncUsage(ELWCFunctionKind Kind, const uint32 Count = 1);
761
764
766 FString CreateSymbolName(const TCHAR* SymbolNameHint);
767
768 void AddCodeChunkToCurrentScope(int32 ChunkIndex);
769 void AddCodeChunkToScope(int32 ChunkIndex, int32 ScopeIndex);
770
774
777
778public:
782
783 FString CastValue(const FString& Code, EMaterialValueType SourceType, EMaterialValueType DestType, EMaterialCastFlags Flags);
784
785 // CoerceParameter
787 FString CoerceValue(const FString& Code, EMaterialValueType SourceType, EMaterialValueType DestType, EMaterialCastFlags AdditionalCastFlags = EMaterialCastFlags::None);
788
790
792
793protected:
794
804 int32 AddCodeChunkWithHash(uint64 BaseHash, EMaterialValueType Type, const TCHAR* Format, ...);
805
806 template <typename... Types>
807 int32 AddCodeChunk(EMaterialValueType Type, const TCHAR* Format, Types... Args)
808 {
809 static_assert((TIsValidVariadicFunctionArg<Types>::Value && ...), "Invalid argument(s) passed to AddCodeChunk");
810 return AddCodeChunkInner(Type, EDerivativeStatus::NotAware, false, Format, Args...);
811 }
812
813 template <typename... Types>
814 int32 AddCodeChunkZeroDeriv(EMaterialValueType Type, const TCHAR* Format, Types... Args)
815 {
816 static_assert((TIsValidVariadicFunctionArg<Types>::Value && ...), "Invalid argument(s) passed to AddCodeChunkZeroDeriv");
817 return AddCodeChunkInner(Type, EDerivativeStatus::Zero, false, Format, Args...);
818 }
819
820 template <typename... Types>
821 int32 AddCodeChunkFiniteDeriv(EMaterialValueType Type, const TCHAR* Format, Types... Args)
822 {
823 static_assert((TIsValidVariadicFunctionArg<Types>::Value && ...), "Invalid argument(s) passed to AddCodeChunkFiniteDeriv");
824 return AddCodeChunkInner(Type, EDerivativeStatus::NotValid, false, Format, Args...);
825 }
826
827
832 template <typename... Types>
833 int32 AddInlinedCodeChunk(EMaterialValueType Type, const TCHAR* Format, Types... Args)
834 {
835 static_assert((TIsValidVariadicFunctionArg<Types>::Value && ...), "Invalid argument(s) passed to AddInlinedCodeChunk");
836 return AddCodeChunkInner(Type, EDerivativeStatus::NotAware, true, Format, Args...);
837 }
838
839 template <typename... Types>
841 {
842 static_assert((TIsValidVariadicFunctionArg<Types>::Value && ...), "Invalid argument(s) passed to AddInlinedCodeChunkZeroDeriv");
843 return AddCodeChunkInner(Type, EDerivativeStatus::Zero, true, Format, Args...);
844 }
845
846 template <typename... Types>
848 {
849 static_assert((TIsValidVariadicFunctionArg<Types>::Value && ...), "Invalid argument(s) passed to AddInlinedCodeChunkFiniteDeriv");
850 return AddCodeChunkInner(Type, EDerivativeStatus::NotValid, true, Format, Args...);
851 }
852
853 // Constructs a code chunk that comes from an external HLSL function. Its return type and function implementation is data-driven and defined in BaseEditor.ini.
856
858
859 // AddUniformExpression - Adds an input to the Code array and returns its index.
861
862 // AccessUniformExpression - Adds code to access the value of a uniform expression to the Code array and returns its index.
864
866
867 // GetParameterType
868 virtual EMaterialValueType GetParameterType(int32 Index) const override;
869
870 // GetParameterUniformExpression
871 virtual FMaterialUniformExpression* GetParameterUniformExpression(int32 Index) const override;
872
873 virtual bool GetTextureForExpression(int32 Index, int32& OutTextureIndex, EMaterialSamplerType& OutSamplerType, TOptional<FName>& OutParameterName) const override;
874 virtual bool GetTextureCollectionForExpression(int32 Index, int32& OutTextureCollectionIndex, TOptional<FName>& OutParameterName) const override;
875
876 // GetArithmeticResultType
878
879 // Same as GetConstParameterValue, but ensures that the value that comes out has zero in components that are not included in EMaterialValueType
880 FLinearColor GetTypeMaskedValue(EMaterialValueType Type, FLinearColor ConstValue, bool* OutSuccess);
881
882 // Same as GetConstParameterValue, but ensures that the value that comes out has zero in components that are not included in EMaterialValueType
884
885 // Attempts to fetch the constant value for a parameter code.
886 // returns true if the value was a valid const expression
887 // OutConstValue will only get filled in if it is valid
889
890 // Properly casts a const type to another const type
891 // Returns false if the case fails
895
896 // Returns a constant of the specified typ
898 int32 ConstResultValue(EMaterialValueType Type, float ConstantValue);
899
900
901 // Returns a valid constant result for an arithmetic expression that has a known const value
903 int32 ConstArithmeticResultValue(int LeftEpression, int RightExpression, float ConstantValue);
904
905 // Returns true of the expression results in a specific constant value
906 bool IsExpressionConstantValue(int Code, float ConstantValue);
907
909
911
914
915 // FMaterialCompiler interface.
916
922 virtual void SetMaterialProperty(EMaterialProperty InProperty, EShaderFrequency OverrideShaderFrequency = SF_NumFrequencies, bool bUsePreviousFrameTime = false) override;
923 virtual void PushMaterialAttribute(const FGuid& InAttributeID) override;
924 virtual FGuid PopMaterialAttribute() override;
925 virtual const FGuid GetMaterialAttribute() override;
926 virtual void SetBaseMaterialAttribute(const FGuid& InAttributeID) override;
927
928 virtual UMaterialExpressionCustomOutput* GetTopCustomOutput() override;
929
930 virtual void PushParameterOwner(const FMaterialParameterInfo& InOwnerInfo) override;
931 virtual FMaterialParameterInfo PopParameterOwner() override;
932
934 {
936 return ParameterOwnerStack.Last();
937 }
938
939 virtual EShaderFrequency GetCurrentShaderFrequency() const override;
940
941 bool IsTangentSpaceNormal() const;
942
943 virtual FMaterialShadingModelField GetMaterialShadingModels() const override;
944 virtual FMaterialShadingModelField GetCompiledShadingModels() const override;
945
946 virtual int32 Error(const TCHAR* Text) override;
947
948 virtual void AppendExpressionError(UMaterialExpression* Expression, const TCHAR* Text) override;
949
950 virtual int32 CallExpression(FMaterialExpressionKey ExpressionKey, FMaterialCompiler* Compiler) override;
951
952 virtual int32 CallExpressionExec(UMaterialExpression* Expression) override;
953
954 virtual EMaterialValueType GetType(int32 Code) override;
955 virtual EMaterialQualityLevel::Type GetQualityLevel() override;
956 virtual ERHIFeatureLevel::Type GetFeatureLevel() override;
957 virtual EShaderPlatform GetShaderPlatform() override;
958 virtual const ITargetPlatform* GetTargetPlatform() const override;
959 virtual bool IsMaterialPropertyUsed(EMaterialProperty Property, int32 PropertyChunkIndex) const override;
960
965 virtual int32 ValidCast(int32 Code, EMaterialValueType DestType) override;
966 virtual int32 ForceCast(int32 Code, EMaterialValueType DestType, uint32 ForceCastFlags = 0) override;
967
968 virtual int32 CastShadingModelToFloat(int32 Code) override;
969
970 virtual int32 TruncateLWC(int32 Code) override;
971
973 virtual void PushFunction(FMaterialFunctionCompileState* FunctionState) override;
974
976 virtual FMaterialFunctionCompileState* PopFunction() override;
977
978 virtual int32 GetCurrentFunctionStackDepth() override;
979
980 virtual int32 AccessCollectionParameter(UMaterialParameterCollection* ParameterCollection, int32 ParameterIndex, int32 ComponentIndex) override;
981 virtual int32 CollectionTransform(int32 InputIndex, const TStaticArray<int32, 5>& CollectionParameters, EParameterCollectionTransformType TransformType) override;
982
983 virtual int32 NumericParameter(EMaterialParameterType ParameterType, FName ParameterName, const UE::Shader::FValue& DefaultValue) override;
984 virtual int32 Constant(float X) override;
985 virtual int32 Constant2(float X, float Y) override;
986 virtual int32 Constant3(float X, float Y, float Z) override;
987 virtual int32 Constant4(float X, float Y, float Z, float W) override;
988 virtual int32 GenericConstant(const UE::Shader::FValue& Value) override;
989
990 virtual int32 ViewProperty(EMaterialExposedViewProperty Property, bool bInvProperty) override;
991 virtual int32 IsOrthographic() override;
992
993 virtual int32 GameTime(bool bPeriodic, float Period) override;
994 virtual int32 RealTime(bool bPeriodic, float Period) override;
995 virtual int32 DeltaTime() override;
996
997 virtual int32 PeriodicHint(int32 PeriodicCode) override;
998
999 virtual int32 Sine(int32 X) override;
1000 virtual int32 Cosine(int32 X) override;
1001 virtual int32 Tangent(int32 X) override;
1002 virtual int32 Arcsine(int32 X) override;
1003 virtual int32 ArcsineFast(int32 X) override;
1004 virtual int32 Arccosine(int32 X) override;
1005 virtual int32 ArccosineFast(int32 X) override;
1006 virtual int32 Arctangent(int32 X) override;
1007 virtual int32 ArctangentFast(int32 X) override;
1008 virtual int32 Arctangent2(int32 Y, int32 X) override;
1009 virtual int32 Arctangent2Fast(int32 Y, int32 X) override;
1010 virtual int32 Floor(int32 X) override;
1011 virtual int32 Ceil(int32 X) override;
1012 virtual int32 Round(int32 X) override;
1013 virtual int32 Truncate(int32 X) override;
1014 virtual int32 Sign(int32 X) override;
1015 virtual int32 Frac(int32 X) override;
1016 virtual int32 Fmod(int32 A, int32 B) override;
1017 virtual int32 Modulo(int32 A, int32 B) override;
1018
1025 virtual int32 Abs(int32 X) override;
1026
1027 virtual int32 ReflectionVector() override;
1028
1029 virtual int32 ReflectionAboutCustomWorldNormal(int32 CustomWorldNormal, int32 bNormalizeCustomWorldNormal) override;
1030
1031 virtual int32 CameraVector() override;
1032 virtual int32 LightVector() override;
1033
1034 virtual int32 GetViewportUV() override;
1035
1036 virtual int32 GetPixelPosition() override;
1037
1038 virtual int32 ParticleMacroUV() override;
1039 virtual int32 ParticleSubUV(int32 TextureIndex, EMaterialSamplerType SamplerType, int32 MipValue0Index, int32 MipValue1Index, ETextureMipValueMode MipValueMode, bool bBlend) override;
1040 virtual int32 ParticleSubUVProperty(int32 PropertyIndex) override;
1041 virtual int32 ParticleColor() override;
1042 virtual int32 ParticlePosition(EPositionOrigin OriginType) override;
1043 virtual int32 ParticleRadius() override;
1044
1045 virtual int32 SphericalParticleOpacity(int32 Density) override;
1046
1047 virtual int32 ParticleRelativeTime() override;
1048 virtual int32 ParticleMotionBlurFade() override;
1049 virtual int32 ParticleRandom() override;
1050 virtual int32 ParticleDirection() override;
1051 virtual int32 ParticleSpeed() override;
1052 virtual int32 ParticleSize() override;
1053 virtual int32 ParticleSpriteRotation() override;
1054
1055 virtual int32 LocalPosition(EPositionIncludedOffsets IncludedOffsets, ELocalPositionOrigin OriginType) override;
1057
1058 virtual int32 ObjectWorldPosition(EPositionOrigin OriginType) override;
1059 virtual int32 ObjectRadius() override;
1060 virtual int32 ObjectBounds() override;
1061
1062 virtual int32 ObjectLocalBounds(int32 OutputIndex) override;
1063 virtual int32 InstanceLocalBounds(int32 OutputIndex) override;
1064 virtual int32 PreSkinnedLocalBounds(int32 OutputIndex) override;
1065
1066 virtual int32 DistanceCullFade() override;
1067
1068 virtual int32 ActorWorldPosition(EPositionOrigin OriginType) override;
1069
1070 virtual int32 DynamicBranch(int32 Condition, int32 A, int32 B) override;
1071 virtual int32 If(int32 A, int32 B, int32 AGreaterThanB, int32 AEqualsB, int32 ALessThanB, int32 ThresholdArg) override;
1072
1074
1075#if WITH_EDITOR
1076 virtual int32 MaterialBakingWorldPosition() override;
1077#endif
1078
1079 virtual int32 TextureCoordinate(uint32 CoordinateIndex, bool UnMirrorU, bool UnMirrorV) override;
1080 virtual void SetPotentiallyManipulateTexCoords() override;
1081
1084 const FString& UV_Value,
1085 const FString& UV_Ddx,
1086 const FString& UV_Ddy
1087 );
1088
1089 virtual int32 TextureSample(
1090 int32 TextureIndex,
1091 int32 CoordinateIndex,
1092 EMaterialSamplerType SamplerType,
1095 ETextureMipValueMode MipValueMode = TMVM_None,
1097 ETextureGatherMode GatherMode = TGM_None,
1099 bool AutomaticViewMipBias = false,
1100 bool AdaptiveVirtualTexture = false,
1101 bool EnableFeedback = true
1102 ) override;
1103
1104 virtual int32 TextureProperty(int32 TextureIndex, EMaterialExposedTextureProperty Property) override;
1106
1107 virtual int32 TextureStreamingInfo(int32 TextureReferenceIndex, int32 TextureIndex, int32 CoordinateIndex) override;
1108
1110
1111 virtual int32 MaterialCacheTextureDescriptor(const FMaterialCacheTagLayout& Layout, int32 PrimitiveIDIndex, uint32 LayerIndex) override;
1112 virtual int32 SampleMaterialCache(const FMaterialCacheTagLayout& Layout, int32 PrimitiveIDIndex, int32 TexCoordIndex) override;
1113 virtual int32 DefaultMaterialCacheAttribute(const FMaterialCacheTagLayout& Layout) override;
1114 virtual int32 SetMaterialCacheAttribute(const FMaterialCacheTagLayout& Layout, int32 AttributeSet, int32 AttributeIndex, int32 Value) override;
1115 virtual int32 GetMaterialCacheAttribute(const FMaterialCacheTagLayout& Layout, int32 AttributeSet, int32 AttributeIndex) override;
1116 virtual int32 MaterialCacheOutput(UMaterialExpressionCustomOutput* CustomOutput, const FMaterialCacheTagLayout& Layout, int32 AttributeSet) override;
1117
1118 virtual int32 TextureDecalMipmapLevel(int32 TextureSizeInput) override;
1119 virtual int32 TextureDecalDerivative(bool bDDY) override;
1120
1121 virtual int32 DecalColor() override;
1122 virtual int32 DecalLifetimeOpacity() override;
1123
1124 virtual int32 PixelDepth() override;
1125
1128
1129 virtual int32 SceneDepth(int32 Offset, int32 ViewportUV, bool bUseOffset) override;
1130
1131 // @param SceneTextureId of type ESceneTextureId e.g. PPI_SubsurfaceColor
1132 virtual int32 SceneTextureLookup(int32 ViewportUV, uint32 InSceneTextureId, bool bFiltered, bool bClamped, bool bUnused) override;
1133
1134 virtual int32 GetSceneTextureViewSize(int32 SceneTextureId, bool InvProperty) override;
1135
1136 virtual int32 FindOrAddUserSceneTexture(FName UserSceneTextureName) override;
1137
1138 virtual int32 DBufferTextureLookup(int32 ViewportUV, uint32 DBufferTextureIndex) override;
1139
1140 virtual int32 PathTracingBufferTextureLookup(int32 ViewportUV, uint32 PathTracingBufferTextureIndex) override;
1141
1142 // @param bTextureLookup true: texture, false:no texture lookup, usually to get the size
1143 void UseSceneTextureId(ESceneTextureId SceneTextureId, bool bTextureLookup);
1144
1145 virtual int32 SceneColor(int32 Offset, int32 ViewportUV, bool bUseOffset) override;
1146
1149 virtual int32 TextureParameter(FName ParameterName, UTexture* DefaultValue, int32& TextureReferenceIndex, EMaterialSamplerType SamplerType, ESamplerSourceMode SamplerSource = SSM_FromTextureAsset) override;
1150
1152 virtual int32 TextureCollectionParameter(FName ParameterName, UTextureCollection* DefaultValue, int32& TextureCollectionReferenceIndex) override;
1153 virtual int32 TextureCollectionCount(int32 InTextureCollectionCodeIndex) override;
1154
1155 virtual int32 VirtualTexture(URuntimeVirtualTexture* InTexture, int32 TextureLayerIndex, int32 PageTableLayerIndex, int32& TextureReferenceIndex, EMaterialSamplerType SamplerType) override;
1156 virtual int32 VirtualTextureParameter(FName ParameterName, URuntimeVirtualTexture* DefaultValue, int32 TextureLayerIndex, int32 PageTableLayerIndex, int32& TextureReferenceIndex, EMaterialSamplerType SamplerType) override;
1157 virtual int32 VirtualTextureUniform(int32 TextureIndex, int32 VectorIndex, UE::Shader::EValueType Type) override;
1158 virtual int32 VirtualTextureUniform(FName ParameterName, int32 TextureIndex, int32 VectorIndex, UE::Shader::EValueType Type) override;
1159 virtual int32 VirtualTextureWorldToUV(int32 WorldPositionIndex, int32 P0, int32 P1, int32 P2, EPositionOrigin PositionOrigin) override;
1160 virtual int32 VirtualTextureUnpack(int32 CodeIndex0, int32 CodeIndex1, int32 CodeIndex2, int32 P0, EVirtualTextureUnpackType UnpackType) override;
1161 virtual int32 VirtualTextureCustomData() override;
1162
1163 virtual int32 ExternalTexture(const FGuid& ExternalTextureGuid) override;
1164 virtual int32 ExternalTexture(UTexture* InTexture, int32& TextureReferenceIndex) override;
1165 virtual int32 ExternalTextureParameter(FName ParameterName, UTexture* DefaultValue, int32& TextureReferenceIndex) override;
1167 virtual int32 ExternalTextureCoordinateScaleRotation(const FGuid& ExternalTextureGuid) override;
1169 virtual int32 ExternalTextureCoordinateOffset(const FGuid& ExternalTextureGuid) override;
1170
1172 virtual int32 SparseVolumeTextureParameter(FName ParameterName, USparseVolumeTexture* InDefaultTexture, int32& TextureReferenceIndex, EMaterialSamplerType SamplerType) override;
1173 virtual int32 SparseVolumeTextureUniform(int32 TextureIndex, int32 VectorIndex, UE::Shader::EValueType Type) override;
1174 virtual int32 SparseVolumeTextureUniformParameter(FName ParameterName, int32 TextureIndex, int32 VectorIndex, UE::Shader::EValueType Type) override;
1175 virtual int32 SparseVolumeTextureSamplePageTable(int32 SparseVolumeTextureIndex, int32 UVWIndex, int32 MipLevelIndex, ESamplerSourceMode SamplerSource, bool bIsManualLinearMipMapSecondSample) override;
1176 virtual int32 SparseVolumeTextureSamplePhysicalTileData(int32 SparseVolumeTextureIndex, int32 VoxelCoordIndex, int32 PhysicalTileDataIdxIndex, bool bIsManualLinearMipMapSecondSample) override;
1178
1179 virtual UObject* GetReferencedTexture(int32 Index) override;
1180 virtual UTextureCollection* GetReferencedTextureCollection(int32 Index) override;
1181
1182 virtual int32 StaticBool(bool bValue) override;
1183 virtual int32 StaticBoolParameter(FName ParameterName, bool bDefaultValue) override;
1184 virtual int32 DynamicBoolParameter(FName ParameterName, bool bDefaultValue) override;
1185 virtual int32 StaticComponentMask(int32 Vector, FName ParameterName, bool bDefaultR, bool bDefaultG, bool bDefaultB, bool bDefaultA) override;
1186 virtual const FMaterialLayersFunctions* GetMaterialLayers() override;
1187
1188 virtual void FeedbackMaterialLayersInstancedGraphFromCompilation(const FMaterialLayersFunctions* InLayers) override;
1189
1190 virtual bool GetStaticBoolValue(int32 BoolIndex, bool& bSucceeded) override;
1191
1192 virtual int32 StaticTerrainLayerWeight(FName ParameterName, int32 Default, bool bTextureArray = false) override;
1193
1194 virtual int32 ExternalCode(const FMaterialExternalCodeDeclaration& InExternalCode) override;
1195
1196 virtual int32 FontSignedDistanceData() override;
1197
1198 virtual int32 VertexColor() override;
1199 virtual int32 MeshPaintTextureCoordinateIndex() override;
1200 virtual int32 MeshPaintTextureDescriptor() override;
1201 virtual int32 MeshPaintTextureReplace(int32 Invalid, int32 Valid) override;
1202
1203 virtual int32 PreSkinnedPosition() override;
1204 virtual int32 PreSkinnedNormal() override;
1205
1206 virtual int32 VertexInterpolator(uint32 InterpolatorIndex) override;
1207
1208 virtual int32 Add(int32 A, int32 B) override;
1209 virtual int32 Sub(int32 A, int32 B) override;
1210 virtual int32 Mul(int32 A, int32 B) override;
1211 virtual int32 Div(int32 A, int32 B) override;
1212 virtual int32 Dot(int32 A, int32 B) override;
1213 virtual int32 Cross(int32 A, int32 B) override;
1214 virtual int32 Power(int32 Base, int32 Exponent) override;
1215 virtual int32 Exponential(int32 X) override;
1216 virtual int32 Exponential2(int32 X) override;
1217 virtual int32 Logarithm(int32 X) override;
1218 virtual int32 Logarithm2(int32 X) override;
1219 virtual int32 Logarithm10(int32 X) override;
1220 virtual int32 SquareRoot(int32 X) override;
1221 virtual int32 Length(int32 X) override;
1222 virtual int32 Normalize(int32 X) override;
1223 virtual int32 Step(int32 Y, int32 X) override;
1224 virtual int32 SmoothStep(int32 X, int32 Y, int32 A) override;
1225 virtual int32 InvLerp(int32 X, int32 Y, int32 A) override;
1226 virtual int32 Lerp(int32 A, int32 B, int32 S) override;
1227 virtual int32 Min(int32 A, int32 B) override;
1228 virtual int32 Max(int32 A, int32 B) override;
1229 virtual int32 Clamp(int32 X, int32 A, int32 B) override;
1230 virtual int32 Saturate(int32 X) override;
1231 virtual int32 ComponentMask(int32 Vector, bool R, bool G, bool B, bool A) override;
1232 virtual int32 AppendVector(int32 A, int32 B) override;
1233 virtual int32 HsvToRgb(int32 X) override;
1234 virtual int32 RgbToHsv(int32 X) override;
1235
1237
1240
1242 {
1243 FTransformParameters Parameters{};
1244 return TransformVector(SourceCoordBasis, DestCoordBasis, Parameters, A);
1245 }
1246
1248 {
1249 FTransformParameters Parameters{};
1250 return TransformPosition(SourceCoordBasis, DestCoordBasis, Parameters, A);
1251 }
1252
1254 virtual int32 TransformNormalFromRequestedBasisToWorld(int32 NormalCodeChunk) override;
1255 virtual int32 DynamicParameter(FLinearColor& DefaultValue, uint32 ParameterIndex = 0) override;
1256 virtual int32 LightmapUVs() override;
1257 virtual int32 PrecomputedAOMask() override;
1258 virtual int32 GIReplace(int32 Direct, int32 StaticIndirect, int32 DynamicIndirect) override;
1259 virtual int32 ShadowReplace(int32 Default, int32 Shadow) override;
1260 virtual int32 NaniteReplace(int32 Default, int32 Nanite) override;
1261 virtual int32 MaterialCache(int32 Default, int32 MaterialCache) override;
1262 virtual int32 ReflectionCapturePassSwitch(int32 Default, int32 Reflection) override;
1263
1264 virtual int32 RayTracingQualitySwitchReplace(int32 Normal, int32 RayTraced) override;
1265 virtual int32 PathTracingQualitySwitchReplace(int32 Normal, int32 PathTraced) override;
1266 virtual int32 PathTracingRayTypeSwitch(int32 Main, int32 Shadow, int32 IndirectDiffuse, int32 IndirectSpecular, int32 IndirectVolume) override;
1267 virtual int32 LightmassReplace(int32 Realtime, int32 Lightmass) override;
1268
1269 virtual int32 ObjectOrientation() override;
1270
1272
1273 virtual int32 TwoSidedSign() override;
1274 virtual int32 VertexNormal() override;
1275 virtual int32 VertexTangent() override;
1276 virtual int32 PixelNormalWS() override;
1277 virtual int32 IsFirstPerson() override;
1278
1279 virtual int32 DDX(int32 A) override;
1280 virtual int32 DDY(int32 A) override;
1281
1282 enum class EDervativeComponent
1283 {
1284 X,
1285 Y,
1286 };
1288
1289 virtual int32 AntialiasedTextureMask(int32 Tex, int32 UV, float Threshold, uint8 Channel) override;
1290 virtual int32 DepthOfFieldFunction(int32 Depth, int32 FunctionValueIndex) override;
1291 virtual int32 PostVolumeUserFlagTestFunction(int32 Input) override;
1292 virtual int32 Sobol(int32 Cell, int32 Index, int32 Seed) override;
1293 virtual int32 TemporalSobol(int32 Index, int32 Seed) override;
1294 virtual int32 Noise(int32 Position, EPositionOrigin PositionOrigin, float Scale, int32 Quality, uint8 NoiseFunction, bool bTurbulence, int32 Levels, float OutputMin, float OutputMax, float LevelScale, int32 FilterWidth, bool bTiling, uint32 RepeatSize) override;
1295 virtual int32 VectorNoise(int32 Position, EPositionOrigin PositionOrigin, int32 Quality, uint8 NoiseFunction, bool bTiling, uint32 TileSize) override;
1296 virtual int32 ScalarBlueNoise() override;
1297
1298 virtual int32 BlackBody(int32 Temp) override;
1299
1300 virtual int32 GetHairUV() override;
1301 virtual int32 GetHairDimensions() override;
1302 virtual int32 GetHairSeed() override;
1303 virtual int32 GetHairClumpID() override;
1304 virtual int32 GetHairTangent(bool bUseTangentSpace) override;
1305 virtual int32 GetHairRootUV() override;
1306 virtual int32 GetHairBaseColor() override;
1307 virtual int32 GetHairAO() override;
1308 virtual int32 GetHairRoughness() override;
1309 virtual int32 GetHairDepth() override;
1310 virtual int32 GetHairCoverage() override;
1311 virtual int32 GetHairAuxilaryData() override;
1312 virtual int32 GetHairAtlasUVs() override;
1313 virtual int32 GetHairGroupIndex() override;
1314 virtual int32 GetHairColorFromMelanin(int32 Melanin, int32 Redness, int32 DyeColor) override;
1315 virtual int32 DistanceToNearestSurface(int32 PositionArg, EPositionOrigin PositionOrigin) override;
1316 virtual int32 DistanceFieldGradient(int32 PositionArg, EPositionOrigin PositionOrigin) override;
1317 virtual int32 DistanceFieldApproxAO(int32 PositionArg, EPositionOrigin PositionOrigin, int32 NormalArg, int32 BaseDistanceArg, int32 RadiusArg, uint32 NumSteps, float StepScale) override;
1318 virtual int32 SamplePhysicsField(int32 PositionArg, EPositionOrigin PositionOrigin, const int32 OutputType, const int32 TargetIndex) override;
1319 virtual int32 AtmosphericFogColor(int32 WorldPosition, EPositionOrigin PositionOrigin) override;
1320 virtual int32 AtmosphericLightVector() override;
1321 virtual int32 AtmosphericLightColor() override;
1322
1323 virtual int32 SkyAtmosphereLightIlluminance(int32 WorldPosition, EPositionOrigin PositionOrigin, int32 LightIndex) override;
1324 virtual int32 SkyAtmosphereLightIlluminanceOnGround(int32 LightIndex) override;
1325 virtual int32 SkyAtmosphereLightDirection(int32 LightIndex) override;
1326 virtual int32 SkyAtmosphereLightDiskLuminance(int32 LightIndex, int32 OverrideAtmosphereLightDiscCosHalfApexAngle) override;
1327 virtual int32 SkyAtmosphereViewLuminance(int32 WorldDirectionOverrideCodeChunk) override;
1328 virtual int32 SkyAtmosphereAerialPerspective(int32 WorldPosition, EPositionOrigin PositionOrigin) override;
1329 virtual int32 SkyAtmosphereDistantLightScatteredLuminance() override;
1330
1331 virtual int32 SkyLightEnvMapSample(int32 DirectionCodeChunk, int32 RoughnessCodeChunk) override;
1332
1333 // Water
1334 virtual int32 SceneDepthWithoutWater(int32 Offset, int32 ViewportUV, bool bUseOffset, float FallbackDepth) override;
1335
1336 virtual int32 GetCloudSampleAltitude() override;
1337 virtual int32 GetCloudSampleAltitudeInLayer() override;
1338 virtual int32 GetCloudSampleNormAltitudeInLayer() override;
1339 virtual int32 GetCloudSampleShadowSampleDistance() override;
1340 virtual int32 GetVolumeSampleConservativeDensity() override;
1341 virtual int32 GetCloudEmptySpaceSkippingSphereCenterWorldPosition() override;
1342 virtual int32 GetCloudEmptySpaceSkippingSphereRadius() override;
1343
1344 virtual int32 CustomPrimitiveData(int32 OutputIndex, EMaterialValueType Type) override;
1345
1347
1348 virtual int32 MapARPassthroughCameraUV(int32 UV) override;
1349
1350 virtual int32 CustomExpression(class UMaterialExpressionCustom* Custom, int32 OutputIndex, TArray<int32>& CompiledInputs) override;
1351 virtual int32 CustomOutput(class UMaterialExpressionCustomOutput* Custom, int32 OutputIndex, int32 OutputCode, EMaterialCustomOutputFlags Flags) override;
1352 int32 CustomOutput(const FString& CustomOutputName, const FString& OutputTypeString, const FString& FunctionName, int32 OutputIndex, int32 OutputCode, EMaterialCustomOutputFlags Flags); // Only used internally and intentionally not exposed on FMaterialCompiler.
1353
1354 virtual int32 PushRuntimeVirtualTextureOutput() override;
1355 virtual int32 PopRuntimeVirtualTextureOutput(uint8 MaterialAttributeMask) override;
1356 virtual bool IsInRuntimeVirtualTextureOutput() const override;
1357
1358 // Material attributes
1359 virtual int32 DefaultMaterialAttributes() override;
1360 virtual int32 SetMaterialAttribute(int32 MaterialAttributes, int32 Value, const FGuid& AttributeID) override;
1361
1362 // Exec
1363 virtual int32 BeginScope() override;
1364 virtual int32 BeginScope_If(int32 Condition) override;
1365 virtual int32 BeginScope_Else() override;
1366 virtual int32 BeginScope_For(const UMaterialExpression* Expression, int32 StartIndex, int32 EndIndex, int32 IndexStep) override;
1367 virtual int32 EndScope() override;
1368 virtual int32 ForLoopIndex(const UMaterialExpression* Expression) override;
1369 virtual int32 ReturnMaterialAttributes(int32 MaterialAttributes) override;
1370 virtual int32 SetLocal(const FName& LocalName, int32 Value) override;
1371 virtual int32 GetLocal(const FName& LocalName) override;
1372
1373 // Neural network nodes
1374 virtual int32 NeuralOutput(int32 ViewportUV, uint32 NeuralIndexType) override;
1375
1376 // Substrate
1377 virtual int32 SubstrateCreateAndRegisterNullMaterial() override;
1378 virtual int32 SubstrateSlabBSDF(
1379 int32 DiffuseAlbedo, int32 F0, int32 F90,
1382 int32 EmissiveColor,
1383 int32 SecondRoughness, int32 SecondRoughnessWeight, int32 SecondRoughnessAsSimpleClearCoat, int32 ClearCoatBottomNormal,
1384 int32 FuzzAmount, int32 FuzzColor, int32 FuzzRoughness,
1385 int32 Thickness,
1386 int32 GlintValue, int32 GlintUV,
1391 virtual int32 SubstrateConversionFromLegacy(
1395 int32 SubSurfaceColor, int32 SubSurfaceProfileId,
1396 int32 ClearCoat, int32 ClearCoatRoughness,
1397 int32 EmissiveColor,
1398 int32 Opacity,
1400 int32 ThinTranslucentSurfaceCoverage,
1401 int32 WaterScatteringCoefficients, int32 WaterAbsorptionCoefficients, int32 WaterPhaseG, int32 ColorScaleBehindWater,
1407 virtual int32 SubstrateVolumetricFogCloudBSDF(int32 Albedo, int32 Extinction, int32 EmissiveColor, int32 AmbientOcclusion, bool bEmissiveOnly) override;
1408 virtual int32 SubstrateUnlitBSDF(int32 EmissiveColor, int32 TransmittanceColor, int32 Normal, FSubstrateOperator* PromoteToOperator) override;
1409 virtual int32 SubstrateUIBSDF(int32 EmissiveColor, int32 Opacity, FSubstrateOperator* PromoteToOperator) override;
1410 virtual int32 SubstrateHairBSDF(int32 BaseColor, int32 Scatter, int32 Specular, int32 Roughness, int32 Backlit, int32 EmissiveColor, int32 Tangent, const FString& SharedLocalBasisIndexMacro, FSubstrateOperator* PromoteToOperator) override;
1411 virtual int32 SubstrateEyeBSDF(int32 DiffuseColor, int32 Roughness, int32 IrisMask, int32 IrisDistance, int32 EmissiveColor, int32 CorneaNormal, int32 IrisNormal, int32 IrisPlaneNormal, int32 SSSProfileId, const FString& SharedLocalBasisIndexMacro, FSubstrateOperator* PromoteToOperator) override;
1412 virtual int32 SubstrateSingleLayerWaterBSDF(
1414 int32 EmissiveColor, int32 TopMaterialOpacity, int32 WaterAlbedo, int32 WaterExtinction, int32 WaterPhaseG,
1415 int32 ColorScaleBehindWater, int32 Normal, const FString& SharedLocalBasisIndexMacro, FSubstrateOperator* PromoteToOperator) override;
1416 virtual int32 SubstrateHorizontalMixing(int32 Background, int32 Foreground, int32 Mix, int OperatorIndex, uint32 MaxDistanceFromLeaves) override;
1418 virtual int32 SubstrateVerticalLayering(int32 Top, int32 Base, int32 Thickness, int OperatorIndex, uint32 MaxDistanceFromLeaves) override;
1419 virtual int32 SubstrateVerticalLayeringParameterBlending(int32 Top, int32 Base, int32 Thickness, const FString& SharedLocalBasisIndexMacro, int32 TopBSDFNormalCodeChunk, int32 BaseBSDFNormalCodeChunk, FSubstrateOperator* PromoteToOperator) override;
1420 virtual int32 SubstrateAdd(int32 A, int32 B, int OperatorIndex, uint32 MaxDistanceFromLeaves) override;
1422 virtual int32 SubstrateWeight(int32 A, int32 Weight, int OperatorIndex, uint32 MaxDistanceFromLeaves) override;
1423 virtual int32 SubstrateWeightParameterBlending(int32 A, int32 Weight, FSubstrateOperator* PromoteToOperator) override;
1424 virtual int32 SubstrateSelectParameterBlending(int32 A, int32 B, int32 SelectValue, const FString& SharedLocalBasisIndexMacro, FSubstrateOperator* PromoteToOperator) override;
1425 virtual int32 SubstrateTransmittanceToMFP(int32 TransmittanceColor, int32 DesiredThickness, int32 OutputIndex) override;
1426 virtual int32 SubstrateMetalnessToDiffuseAlbedoF0(int32 BaseColor, int32 Specular, int32 Metallic, int32 OutputIndex) override;
1427 virtual int32 SubstrateHazinessToSecondaryRoughness(int32 BaseRoughness, int32 Haziness, int32 OutputIndex) override;
1429 virtual int32 SubstrateCompilePreview(int32 SubstrateDataCodeChunk) override;
1430 virtual bool SubstrateSkipsOpacityEvaluation() override;
1431
1432 virtual FGuid SubstrateTreeStackPush(UMaterialExpression* Expression, uint32 InputIndex) override;
1433 virtual FGuid SubstrateTreeStackGetPathUniqueId() override;
1434 virtual FGuid SubstrateTreeStackGetParentPathUniqueId() override;
1435 virtual void SubstrateTreeStackPop() override;
1436 virtual bool GetSubstrateTreeOutOfStackDepthOccurred() override;
1437
1438 virtual int32 SubstrateThicknessStackGetThicknessIndex() override;
1439 virtual int32 SubstrateThicknessStackGetThicknessCode(int32 Index) override;
1440 virtual int32 SubstrateThicknessStackPush(UMaterialExpression* Expression, FScalarMaterialInput* Input) override;
1441 virtual int32 SubstrateThicknessStackPush(UMaterialExpression* Expression, FExpressionInput* Input) override;
1442 virtual void SubstrateThicknessStackPop() override;
1443
1444 virtual FSubstrateOperator& SubstrateCompilationRegisterOperator(int32 OperatorType, FGuid SubstrateExpressionGuid, FGuid ChildMaterialExpressionGuid, UMaterialExpression* Parent, FGuid SubstrateParentExpressionGuid, bool bUseParameterBlending = false) override;
1445 virtual FSubstrateOperator& SubstrateCompilationGetOperator(FGuid SubstrateExpressionGuid) override;
1446 virtual FSubstrateOperator* SubstrateCompilationGetOperatorFromIndex(int32 OperatorIndex) override;
1447
1448 virtual FSubstrateRegisteredSharedLocalBasis SubstrateCompilationInfoRegisterSharedLocalBasis(int32 NormalCodeChunk) override;
1449 virtual FSubstrateRegisteredSharedLocalBasis SubstrateCompilationInfoRegisterSharedLocalBasis(int32 NormalCodeChunk, int32 TangentCodeChunk) override;
1450 virtual FString GetSubstrateSharedLocalBasisIndexMacro(const FSubstrateRegisteredSharedLocalBasis& SharedLocalBasis) override;
1451 virtual int32 SubstrateAddParameterBlendingBSDFCoverageToNormalMixCodeChunk(int32 ACodeChunk, int32 BCodeChunk) override;
1452 virtual int32 SubstrateVerticalLayeringParameterBlendingBSDFCoverageToNormalMixCodeChunk(int32 TopCodeChunk) override;
1453 virtual int32 SubstrateHorizontalMixingParameterBlendingBSDFCoverageToNormalMixCodeChunk(int32 BackgroundCodeChunk, int32 ForegroundCodeChunk, int32 HorizontalMixCodeChunk) override;
1454
1460 virtual int32 PerInstanceRandom() override;
1461
1467 virtual int32 PerInstanceFadeAmount() override;
1468
1475 virtual int32 PerInstanceCustomData(int32 DataIndex, int32 DefaultValueIndex) override;
1476
1483 virtual int32 PerInstanceCustomData3Vector(int32 DataIndex, int32 DefaultValueIndex) override;
1484
1490 virtual int32 RotateScaleOffsetTexCoords(int32 TexCoordCodeIndex, int32 RotationScale, int32 Offset) override;
1491
1497 virtual int32 SpeedTree(int32 GeometryArg, int32 WindArg, int32 LODArg, float BillboardThreshold, bool bAccurateWindVelocities, bool bExtraBend, int32 ExtraBendArg) override;
1498
1500 virtual int32 EyeAdaptation() override;
1501
1503 virtual int32 EyeAdaptationInverse(int32 LightValueArg, int32 AlphaArg) override;
1504
1505 const bool CheckPrimitivePropertyCompatibity(const TCHAR* ExpressionName);
1506
1511 int32 GetPrimitiveProperty(EMaterialValueType Type, const TCHAR* ExpressionName, const TCHAR* HLSLName);
1512
1516 virtual bool IsCurrentlyCompilingForPreviousFrame() const;
1517
1518 virtual bool IsDevelopmentFeatureEnabled(const FName& FeatureName) const override;
1519
1523 void TranslateMaterial();
1524
1529 void AsyncQueryDDC(UE::DerivedData::FRequestOwner& DDCRequestOwner, FSharedBuffer& EnvironmentDefinesBuffer);
1530
1534 void PushResultsToDDC();
1535
1540
1545
1550
1554
1557
1559 TUniquePtr<FEnvironmentDefines> EnvironmentDefines;
1560
1563
1566
1567#ifdef STATS
1569 double DDCRequestSerializeTime = 0;
1570#endif
1571
1572 friend class FAddUniformExpressionScope;
1573};
1574
1593{
1594public:
1595 FAddUniformExpressionScope(FHLSLMaterialTranslator* InTranslator)
1596 : Translator(InTranslator)
1597 {
1598 Translator->AddingUniformExpression++;
1599 }
1601 {
1602 Translator->AddingUniformExpression--;
1603 check(Translator->AddingUniformExpression >= 0);
1604 }
1605private:
1606 FHLSLMaterialTranslator* Translator;
1607};
1608
1609#endif // WITH_EDITORONLY_DATA
#define NULL
Definition oodle2base.h:134
@ Normal
Definition AndroidInputInterface.h:116
@ Valid
Definition AndroidInputInterface.h:103
#define FORCEINLINE
Definition AndroidPlatform.h:140
#define check(expr)
Definition AssertionMacros.h:314
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define TEXT(x)
Definition Platform.h:1272
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
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
D3D12_DESCRIPTOR_HEAP_TYPE Translate(ERHIDescriptorHeapType InHeapType)
Definition D3D12Descriptors.h:19
ESamplerSourceMode
Definition EngineTypes.h:281
ETextureMipValueMode
Definition EngineTypes.h:295
EMaterialSamplerType
Definition EngineTypes.h:936
EMaterialShadingModel
Definition EngineTypes.h:705
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
#define X(Name, Desc)
Definition FormatStringSan.h:47
EDerivativeStatus
Definition HLSLMaterialDerivativeAutogen.h:21
float GetHairCoverage(uint32 InCount, float InAvgRadius)
Return the hair coverage for a certain hair count and normalized avg hair radius (i....
Definition HairStrandsLUT.cpp:205
bool operator<(const FTextFormatString &LHS, const FTextFormatString &RHS)
Definition ITextFormatArgumentModifier.h:147
void Scatter(const DeltaType &Delta, TArray< ValueType > &OutDest, int32 DestNumElements, TArray< ValueType > &&InSource, const IndexRemapType &IndexRemap, int32 ElementStride=1)
Definition InstanceDataUpdateUtils.h:23
UE_FORCEINLINE_HINT bool operator!=(const FIndexedPointer &Other) const
Definition LockFreeList.h:76
EMaterialCustomOutputFlags
Definition MaterialCompiler.h:88
EParameterCollectionTransformType
Definition MaterialExpressionCollectionTransform.h:19
@ Top
Definition MaterialExpressionFunctionInput.h:42
EPositionIncludedOffsets
Definition MaterialExpressionLocalPosition.h:13
ELocalPositionOrigin
Definition MaterialExpressionLocalPosition.h:24
EVirtualTextureUnpackType
Definition MaterialExpressionRuntimeVirtualTextureSample.h:72
EMaterialExposedTextureProperty
Definition MaterialExpressionTextureProperty.h:17
ETextureGatherMode
Definition MaterialExpressionTextureSample.h:19
EMaterialExposedViewProperty
Definition MaterialExpressionViewProperty.h:13
EWorldPositionIncludedOffsets
Definition MaterialExpressionWorldPosition.h:14
EPositionOrigin
Definition MaterialExpression.h:645
EMaterialParameterType
Definition MaterialParameters.h:187
ESceneTextureId
Definition MaterialSceneTextureId.h:13
@ CompiledMP_MAX
Definition MaterialShared.h:1923
EMaterialCommonBasis
Definition MaterialShared.h:312
ELWCFunctionKind
Definition MaterialShared.h:294
ECompiledPartialDerivativeVariation
Definition MaterialShared.h:1932
@ CompiledPDV_MAX
Definition MaterialShared.h:1935
@ CompiledPDV_Analytic
Definition MaterialShared.h:1934
@ CompiledPDV_FiniteDifferences
Definition MaterialShared.h:1933
constexpr uint32 NumMaterialTextureParameterTypes
Definition MaterialShared.h:541
EMaterialValueType
Definition MaterialValueType.h:15
EShaderFrequency
Definition RHIDefinitions.h:202
@ SF_NumFrequencies
Definition RHIDefinitions.h:216
EShaderPlatform
Definition RHIShaderPlatform.h:11
EMaterialProperty
Definition SceneTypes.h:148
decltype(auto) Visit(Func &&Callable, Variants &&... Args)
Definition TVariant.h:271
TextureAddress
Definition TextureDefines.h:496
VectorType TransformVector(const TransformType &Transform, const VectorType &Vector)
Definition TransformCalculus.h:367
uint32 Offset
Definition VulkanMemory.cpp:4033
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition MaterialShared.h:806
Definition MaterialCompiler.h:109
Definition MaterialShared.h:1943
Definition MaterialShared.h:1980
Definition MaterialUniformExpressions.h:57
Definition MaterialShared.h:2058
Definition NameTypes.h:617
Definition ShaderKeyGenerator.h:29
Definition SharedBuffer.h:341
Definition Array.h:670
Definition Atomic.h:538
Definition UnrealString.h.inl:34
Definition RefCounting.h:454
Definition StaticArray.h:26
Definition UniquePtr.h:107
Definition MaterialExpressionCustomOutput.h:15
Definition MaterialExpressionCustom.h:64
Definition MaterialExpression.h:150
Definition MaterialParameterCollection.h:79
Definition Object.h:95
Definition RuntimeVirtualTexture.h:18
Definition SparseVolumeTexture.h:309
Definition TextureCollection.h:47
Definition Texture.h:1219
@ Sine
Definition LFO.h:14
@ Noise
Definition Osc.h:245
ECollisionShapeType GetType(const Chaos::FImplicitObject &InGeometry)
Definition ChaosInterfaceWrapperCore.h:105
GeometryCollection::Facades::FMuscleActivationData Data
Definition MuscleActivationConstraints.h:15
@ SquareRoot
Definition EnvQueryTypes.h:95
Type
Definition SceneTypes.h:132
@ VertexColor
Definition MeshPaintVisualize.h:37
@ MaterialCache
Definition PrimitiveSceneInfo.h:248
Type
Definition PawnAction_Move.h:11
Type
Definition RHIFeatureLevel.h:20
void Initialise(bool wait_for_connect=false)
Definition SkinnedMeshComponent.h:50
bool operator==(const FCachedAssetKey &A, const FCachedAssetKey &B)
Definition AssetDataMap.h:501
Definition DerivedData.cpp:40
double AspectRatio(const FVector3d &v1, const FVector3d &v2, const FVector3d &v3)
Definition VectorUtil.h:625
T Normalize(UE::Math::TVector2< T > &Vector, const T Epsilon=0)
Definition VectorTypes.h:46
FValue Mul(const FValue &Lhs, const FValue &Rhs)
Definition ShaderValue.cpp:1514
EValueType
Definition ShaderTypes.h:94
FValue Div(const FValue &Lhs, const FValue &Rhs)
Definition ShaderValue.cpp:1519
Definition VirtualTextureRecreate.cpp:16
@ false
Definition radaudio_common.h:23
U16 Index
Definition radfft.cpp:71
Definition MaterialExpressionIO.h:23
Definition Guid.h:109
Definition IoHash.h:33
Definition Color.h:48
Definition MaterialCacheAttribute.h:118
Definition MaterialExternalCodeRegistry.h:113
Definition MaterialLayersFunctions.h:221
Definition MaterialParameters.h:33
Definition MaterialParameters.h:446
Definition EngineTypes.h:732
Definition MaterialExpressionIO.h:195
Definition ShaderCore.h:544
Definition StaticParameterSet.h:462
Definition AndroidStaticShaderPlatform.inl:18
Definition MaterialParameters.h:503
Definition SubstrateMaterial.h:18
Definition SubstrateMaterialShared.h:105
Definition SubstrateMaterialShared.h:16
Definition MaterialCompiler.h:96
Definition IsValidVariadicFunctionArg.h:14
Definition Optional.h:131
Definition ShaderTypes.h:368