UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SlateShaders.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3
4#pragma once
5
6#include "CoreMinimal.h"
7#include "RenderResource.h"
8#include "ShaderParameters.h"
10#include "GlobalShader.h"
14#include "TextureResource.h"
15
20
25{
26public:
28
30
32 virtual void InitRHI(FRHICommandListBase& RHICmdList) override;
33
35 virtual void ReleaseRHI() override;
36};
37
42{
43public:
45
47 virtual void InitRHI(FRHICommandListBase& RHICmdList) override;
48};
49
51{
52public:
54
56
58 virtual void InitRHI(FRHICommandListBase& RHICmdList) override;
59
61 virtual void ReleaseRHI() override;
62};
63
75
77{
78public:
80
81 FSlateElementPS() = default;
82
85 {
86 TextureParameter.Bind(Initializer.ParameterMap, TEXT("ElementTexture"));
87 TextureParameterSampler.Bind(Initializer.ParameterMap, TEXT("ElementTextureSampler"));
88 ShaderParams.Bind(Initializer.ParameterMap, TEXT("ShaderParams"));
89 ShaderParams2.Bind(Initializer.ParameterMap, TEXT("ShaderParams2"));
90 GammaAndAlphaValues.Bind(Initializer.ParameterMap,TEXT("GammaAndAlphaValues"));
91 VirtualTextureParams.Bind(Initializer.ParameterMap, TEXT("SlateElementVirtualTextureParams"));
92 }
93
95
106
113
120 {
121 ShaderBindings.Add(ShaderParams, InShaderParams.PixelParams);
122 ShaderBindings.Add(ShaderParams2, InShaderParams.PixelParams2);
123 }
124
131 {
133
134 ShaderBindings.Add(GammaAndAlphaValues, Values);
135 }
136
137private:
138 LAYOUT_FIELD(FShaderResourceParameter, TextureParameter);
140 LAYOUT_FIELD(FShaderParameter, ShaderParams);
144};
145
149template<ESlateShader ShaderType, bool bDrawDisabledEffect, bool bUseTextureAlpha=true, bool bUseTextureGrayscale=false, bool bIsVirtualTexture=false>
151{
153public:
154
156 {
157 }
158
164
165
170 {
171 // Set defines based on what this shader will be used for
172 OutEnvironment.SetDefine(TEXT("SHADER_TYPE"), (uint32)ShaderType);
173 OutEnvironment.SetDefine(TEXT("DRAW_DISABLED_EFFECT"), (uint32)( bDrawDisabledEffect ? 1 : 0 ));
174 OutEnvironment.SetDefine(TEXT("USE_TEXTURE_ALPHA"), (uint32)( bUseTextureAlpha ? 1 : 0 ));
175 OutEnvironment.SetDefine(TEXT("USE_MATERIALS"), (uint32)0);
176 OutEnvironment.SetDefine(TEXT("USE_TEXTURE_GRAYSCALE"), (uint32)(bUseTextureGrayscale ? 1 : 0));
177 OutEnvironment.SetDefine(TEXT("SAMPLE_VIRTUAL_TEXTURE"), (uint32)(bIsVirtualTexture ? 1 : 0));
178
180 }
181};
182
206
211{
213public:
216 {
217 return true;
218 }
219
223
227 {
228 BatchColor.Bind(Initializer.ParameterMap, TEXT("BatchColor"));
229 }
230
237 {
238 ShaderBindings.Add(BatchColor, InBatchColor);
239 }
240
241private:
242 LAYOUT_FIELD(FShaderParameter, BatchColor);
243};
244
255
265
268
271
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define LAYOUT_FIELD(T, Name,...)
Definition MemoryLayout.h:471
EColorVisionDeficiency
Definition RenderingCommon.h:160
#define SHADER_PARAMETER_ARRAY(MemberType, MemberName, ArrayDecl)
Definition ShaderParameterMacros.h:1696
#define BEGIN_SHADER_PARAMETER_STRUCT(StructTypeName, DllStorage)
Definition ShaderParameterMacros.h:1482
#define END_SHADER_PARAMETER_STRUCT()
Definition ShaderParameterMacros.h:1485
#define DECLARE_SHADER_TYPE(ShaderClass, ShaderMetaTypeShortcut,...)
Definition Shader.h:1688
EColorVisionDeficiency GSlateColorDeficiencyType
Definition SlateShaders.cpp:10
bool GSlateShowColorDeficiencyCorrectionWithDeficiency
Definition SlateShaders.cpp:13
TGlobalResource< FSlateVertexDeclaration > GSlateVertexDeclaration
Definition SlateShaders.cpp:75
TGlobalResource< FSlateMaskingVertexDeclaration > GSlateMaskingVertexDeclaration
Definition SlateShaders.cpp:77
TGlobalResource< FSlateInstancedVertexDeclaration > GSlateInstancedVertexDeclaration
Definition SlateShaders.cpp:76
bool GSlateColorDeficiencyCorrection
Definition SlateShaders.cpp:12
int32 GSlateColorDeficiencySeverity
Definition SlateShaders.cpp:11
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition GlobalShader.h:269
Definition MeshDrawShaderBindings.h:104
void AddTexture(FShaderResourceParameter TextureParameter, FShaderResourceParameter SamplerParameter, FRHISamplerState *SamplerStateRHI, FRHITexture *TextureRHI)
Definition MeshDrawShaderBindings.h:181
void Add(const TShaderUniformBufferParameter< UniformBufferStructType > &Parameter, const TUniformBufferRef< UniformBufferStructType > &Value)
Definition MeshDrawShaderBindings.h:114
Definition RHICommandList.h:455
Definition RHIResources.h:2153
Definition RenderResource.h:37
Definition ShaderParameters.h:56
Definition ShaderParameters.h:87
Definition ShaderParameters.h:109
Definition SlateShaders.h:211
FSlateDebugBatchingPS(const ShaderMetaType::CompiledShaderInitializerType &Initializer)
Definition SlateShaders.h:225
void SetBatchColor(FMeshDrawSingleShaderBindings &ShaderBindings, const FLinearColor &InBatchColor)
Definition SlateShaders.h:236
FSlateDebugBatchingPS()
Definition SlateShaders.h:220
static bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters &Parameters)
Definition SlateShaders.h:215
Definition SlateShaders.h:187
FSlateDebugOverdrawPS()
Definition SlateShaders.h:196
FSlateDebugOverdrawPS(const ShaderMetaType::CompiledShaderInitializerType &Initializer)
Definition SlateShaders.h:201
static bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters &Parameters)
Definition SlateShaders.h:191
Definition SlateShaders.h:77
void SetShaderParams(FMeshDrawSingleShaderBindings &ShaderBindings, const FShaderParams &InShaderParams)
Definition SlateShaders.h:119
void SetDisplayGammaAndInvertAlphaAndContrast(FMeshDrawSingleShaderBindings &ShaderBindings, float InDisplayGamma, float bInvertAlpha, float InContrast)
Definition SlateShaders.h:130
static void ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters &Parameters, FShaderCompilerEnvironment &OutEnvironment)
Definition SlateShaders.cpp:120
DECLARE_GLOBAL_SHADER(FSlateElementPS)
void SetTexture(FMeshDrawSingleShaderBindings &ShaderBindings, FRHITexture *InTexture, const FSamplerStateRHIRef SamplerState)
Definition SlateShaders.h:102
FSlateElementPS(const ShaderMetaType::CompiledShaderInitializerType &Initializer)
Definition SlateShaders.h:83
void SetVirtualTextureParameters(FMeshDrawSingleShaderBindings &ShaderBindings, FVirtualTexture2DResource *InVirtualTexture)
Definition SlateShaders.cpp:157
FSlateElementPS()=default
Definition SlateShaders.h:65
FSlateElementVS(const ShaderMetaType::CompiledShaderInitializerType &Initializer)
Definition SlateShaders.h:71
FSlateElementVS()=default
DECLARE_GLOBAL_SHADER(FSlateElementVS)
Definition SlateShaders.h:42
virtual ~FSlateInstancedVertexDeclaration()
Definition SlateShaders.h:44
virtual void InitRHI(FRHICommandListBase &RHICmdList) override
Definition SlateShaders.cpp:106
Definition SlateShaders.h:257
DECLARE_GLOBAL_SHADER(FSlateMaskingPS)
SHADER_USE_PARAMETER_STRUCT(FSlateMaskingPS, FGlobalShader)
Definition SlateShaders.h:246
DECLARE_GLOBAL_SHADER(FSlateMaskingVS)
SHADER_USE_PARAMETER_STRUCT(FSlateMaskingVS, FGlobalShader)
Definition SlateShaders.h:51
virtual void InitRHI(FRHICommandListBase &RHICmdList) override
Definition SlateShaders.cpp:130
virtual void ReleaseRHI() override
Definition SlateShaders.cpp:139
virtual ~FSlateMaskingVertexDeclaration()
Definition SlateShaders.h:55
FVertexDeclarationRHIRef VertexDeclarationRHI
Definition SlateShaders.h:53
Definition SlateShaders.h:25
virtual ~FSlateVertexDeclaration()
Definition SlateShaders.h:29
FVertexDeclarationRHIRef VertexDeclarationRHI
Definition SlateShaders.h:27
virtual void ReleaseRHI() override
Definition SlateShaders.cpp:97
virtual void InitRHI(FRHICommandListBase &RHICmdList) override
Definition SlateShaders.cpp:83
Definition TextureResource.h:175
Definition RenderResource.h:543
Definition SlateShaders.h:151
TSlateElementPS()
Definition SlateShaders.h:155
TSlateElementPS(const ShaderMetaType::CompiledShaderInitializerType &Initializer)
Definition SlateShaders.h:160
static void ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters &Parameters, FShaderCompilerEnvironment &OutEnvironment)
Definition SlateShaders.h:169
Definition GlobalShader.h:73
Definition Color.h:48
Definition Shader.h:1610
Definition ShaderCore.h:544
Definition RenderingCommon.h:187