UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MaterialShader.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4 MaterialShader.h: Shader base classes
5=============================================================================*/
6
7#pragma once
8
10#include "MaterialShared.h"
11#include "Shader.h"
13#include "RHIFwd.h"
15
16class FScene;
19
20template<typename TBufferStruct> class TUniformBufferRef;
21
43
53
56{
58public:
61
63
65
67
69
71
72 template<typename ShaderRHIParamRef, typename TRHICommandList>
73 inline void SetViewParameters(TRHICommandList& RHICmdList, const ShaderRHIParamRef ShaderRHI, const FSceneView& View, const TUniformBufferRef<FViewUniformShaderParameters>& ViewUniformBuffer)
74 {
75 FRHIBatchedShaderParameters& BatchedParameters = RHICmdList.GetScratchShaderParameters();
76 SetViewParameters(BatchedParameters, View, ViewUniformBuffer);
77 RHICmdList.SetBatchedShaderParameters(ShaderRHI, BatchedParameters);
78 }
79
83 const FMaterialRenderProxy* MaterialRenderProxy,
84 const FMaterial& Material,
85 const FSceneView& View);
86
90 const FMaterialRenderProxy* MaterialRenderProxy,
91 const FMaterial& Material,
92 const FSceneInterface* Scene);
93
95 template<typename TRHIShader, typename TRHICommandList>
96 inline void SetParameters(
97 TRHICommandList& RHICmdList,
99 const FMaterialRenderProxy* MaterialRenderProxy,
100 const FMaterial& Material,
101 const FSceneView& View)
102 {
103 FRHIBatchedShaderParameters& BatchedParameters = RHICmdList.GetScratchShaderParameters();
104 SetParameters(BatchedParameters, MaterialRenderProxy, Material, View);
105 RHICmdList.SetBatchedShaderParameters(ShaderRHI, BatchedParameters);
106 }
107
109 const FSceneInterface* Scene,
110 ERHIFeatureLevel::Type FeatureLevel,
111 const FMaterialRenderProxy& MaterialRenderProxy,
112 const FMaterial& Material,
113 FMeshDrawSingleShaderBindings& ShaderBindings) const;
114
115private:
116#if !(UE_BUILD_TEST || UE_BUILD_SHIPPING || !WITH_EDITOR)
117 RENDERER_API void VerifyExpressionAndShaderMaps(const FMaterialRenderProxy* MaterialRenderProxy, const FMaterial& Material, const FUniformExpressionCache* UniformExpressionCache) const;
118#endif
119
121
123
124 // Only needed to avoid unbound parameter error
125 // This texture is bound as an UAV (RWTexture) and so it must be bound together with any RT. So it actually bound but not as part of the material
127
128protected:
132};
133
134#if UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_5_6
135#include "SceneView.h"
136#endif
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
constexpr uint32 NumMaterialTextureParameterTypes
Definition MaterialShared.h:541
#define LAYOUT_FIELD(T, Name,...)
Definition MemoryLayout.h:471
#define DECLARE_EXPORTED_TYPE_LAYOUT(T, RequiredAPI, Interface)
Definition MemoryLayout.h:559
#define DECLARE_TYPE_LAYOUT(T, Interface)
Definition MemoryLayout.h:557
EShaderPlatform
Definition RHIShaderPlatform.h:11
EShaderPermutationFlags
Definition ShaderPermutation.h:19
Definition MaterialShader.h:26
void InitFromExpressionSet(const FUniformExpressionSet &InUniformExpressionSet)
Definition ShaderBaseClasses.cpp:75
LAYOUT_FIELD(int32, NumPreshaders)
FDebugUniformExpressionSet()
Definition ShaderBaseClasses.cpp:63
LAYOUT_ARRAY(int32, NumTextureExpressions, NumMaterialTextureParameterTypes)
bool Matches(const FUniformExpressionSet &InUniformExpressionSet) const
Definition ShaderBaseClasses.cpp:85
Definition MaterialRenderProxy.h:102
Definition MaterialShaderType.h:95
Definition MaterialShader.h:56
LAYOUT_FIELD_EDITORONLY(FRHIUniformBufferLayoutInitializer, DebugUniformExpressionUBLayout)
LAYOUT_FIELD_EDITORONLY(FMemoryImageString, DebugDescription)
void SetViewParameters(TRHICommandList &RHICmdList, const ShaderRHIParamRef ShaderRHI, const FSceneView &View, const TUniformBufferRef< FViewUniformShaderParameters > &ViewUniformBuffer)
Definition MaterialShader.h:73
RENDERER_API FRHIUniformBuffer * GetParameterCollectionBuffer(const FGuid &Id, const FSceneInterface *SceneInterface) const
Definition ShaderBaseClasses.cpp:124
RENDERER_API void GetShaderBindings(const FSceneInterface *Scene, ERHIFeatureLevel::Type FeatureLevel, const FMaterialRenderProxy &MaterialRenderProxy, const FMaterial &Material, FMeshDrawSingleShaderBindings &ShaderBindings) const
Definition ShaderBaseClasses.cpp:333
RENDERER_API void SetParameters(FRHIBatchedShaderParameters &BatchedParameters, const FMaterialRenderProxy *MaterialRenderProxy, const FMaterial &Material, const FSceneView &View)
Definition ShaderBaseClasses.cpp:228
RENDERER_API void SetViewParameters(FRHIBatchedShaderParameters &BatchedParameters, const FSceneView &View, const TUniformBufferRef< FViewUniformShaderParameters > &ViewUniformBuffer)
Definition ShaderBaseClasses.cpp:215
static RENDERER_API FName UniformBufferLayoutName
Definition MaterialShader.h:62
LAYOUT_FIELD_EDITORONLY(FDebugUniformExpressionSet, DebugUniformExpressionSet)
void SetParameters(TRHICommandList &RHICmdList, TRHIShader *ShaderRHI, const FMaterialRenderProxy *MaterialRenderProxy, const FMaterial &Material, const FSceneView &View)
Definition MaterialShader.h:96
RENDERER_API FMaterialShader()
Definition MaterialShared.h:2058
Definition MemoryImage.h:743
Definition MeshDrawShaderBindings.h:104
Definition NameTypes.h:617
Definition RHIResources.h:1232
Definition SceneInterface.h:106
Definition SceneView.h:1425
Definition ScenePrivate.h:2875
Definition ShaderParameters.h:87
Definition ShaderParameters.h:109
Definition Shader.h:829
Definition MaterialShared.h:666
Definition Array.h:670
Definition ShaderParameterMacros.h:136
Type
Definition RHIFeatureLevel.h:20
Definition Guid.h:109
Definition MaterialShared.h:1181
Definition MaterialShader.h:45
FMaterialShaderParameters MaterialParameters
Definition MaterialShader.h:46
FMaterialShaderPermutationParameters(EShaderPlatform InPlatform, const FMaterialShaderParameters &InMaterialParameters, int32 InPermutationId, EShaderPermutationFlags InFlags)
Definition MaterialShader.h:48
Definition MaterialShaderType.h:98
Definition RHIShaderParameters.h:241
Definition RHIUniformBufferLayoutInitializer.h:41
Definition ShaderPermutation.h:27
Definition MaterialRenderProxy.h:49