UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ClearReplacementShaders.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"
8#include "GlobalShader.h"
9#include "Math/IntVector.h"
10#include "Math/UnrealMathSSE.h"
11#include "PipelineStateCache.h"
12#include "PixelFormat.h"
13#include "RenderGraphUtils.h"
14#include "RHI.h"
15#include "RHICommandList.h"
16#include "RHIDefinitions.h"
18#include "Shader.h"
19#include "ShaderCompilerCore.h"
20#include "ShaderCore.h"
22#include "ShaderParameters.h"
23#include "Templates/EnableIf.h"
24#include "Templates/Function.h"
25
27
29{
30 Buffer = 0,
31 Texture2D = 1,
33 Texture3D = 3,
35 LargeBuffer = 5
36};
37
39{
40 Float,
41 Int32,
42 Uint32
43};
44
45template <EClearReplacementValueType Type> struct TClearReplacementTypeSelector {};
49
50template <EClearReplacementValueType ValueType, uint32 NumChannels, bool bZeroOutput = false, bool bEnableBounds = false>
52{
53 static_assert(NumChannels >= 1 && NumChannels <= 4, "Only 1 to 4 channels are supported.");
55
56 // Wrapping group counts will require bounds checking to account for additional groups from the wrapping stride.
58
59protected:
63 {
64 if (!bZeroOutput)
65 {
66 ClearValueParam.Bind(Initializer.ParameterMap, TEXT("ClearValue"), SPF_Mandatory);
67 }
68 if (bEnableBounds)
69 {
70 MinBoundsParam.Bind(Initializer.ParameterMap, TEXT("MinBounds"), SPF_Mandatory);
71 MaxBoundsParam.Bind(Initializer.ParameterMap, TEXT("MaxBounds"), SPF_Mandatory);
72 }
73 }
74
75public:
76 static const TCHAR* GetSourceFilename() { return TEXT("/Engine/Private/ClearReplacementShaders.usf"); }
77
79 {
81
82 OutEnvironment.SetDefine(TEXT("ENABLE_CLEAR_VALUE"), !bZeroOutput);
83 OutEnvironment.SetDefine(TEXT("ENABLE_BOUNDS"), bEnableBounds);
84
85 switch (ValueType)
86 {
88 switch (NumChannels)
89 {
90 case 1: OutEnvironment.SetDefine(TEXT("VALUE_TYPE"), TEXT("float")); break;
91 case 2: OutEnvironment.SetDefine(TEXT("VALUE_TYPE"), TEXT("float2")); break;
92 case 3: OutEnvironment.SetDefine(TEXT("VALUE_TYPE"), TEXT("float3")); break;
93 case 4: OutEnvironment.SetDefine(TEXT("VALUE_TYPE"), TEXT("float4")); break;
94 }
95 break;
96
98 switch (NumChannels)
99 {
100 case 1: OutEnvironment.SetDefine(TEXT("VALUE_TYPE"), TEXT("int")); break;
101 case 2: OutEnvironment.SetDefine(TEXT("VALUE_TYPE"), TEXT("int2")); break;
102 case 3: OutEnvironment.SetDefine(TEXT("VALUE_TYPE"), TEXT("int3")); break;
103 case 4: OutEnvironment.SetDefine(TEXT("VALUE_TYPE"), TEXT("int4")); break;
104 }
105 break;
106
108 switch (NumChannels)
109 {
110 case 1: OutEnvironment.SetDefine(TEXT("VALUE_TYPE"), TEXT("uint")); break;
111 case 2: OutEnvironment.SetDefine(TEXT("VALUE_TYPE"), TEXT("uint2")); break;
112 case 3: OutEnvironment.SetDefine(TEXT("VALUE_TYPE"), TEXT("uint3")); break;
113 case 4: OutEnvironment.SetDefine(TEXT("VALUE_TYPE"), TEXT("uint4")); break;
114 }
115 break;
116 }
117 }
118
119 template <typename T = const FShaderParameter&> inline typename TEnableIf<!bZeroOutput, T>::Type GetClearValueParam() const { return ClearValueParam; }
120 template <typename T = const FShaderParameter&> inline typename TEnableIf<bEnableBounds, T>::Type GetMinBoundsParam() const { return MinBoundsParam; }
121 template <typename T = const FShaderParameter&> inline typename TEnableIf<bEnableBounds, T>::Type GetMaxBoundsParam() const { return MaxBoundsParam; }
122
123private:
127
128};
129
131{
132 template <EClearReplacementResourceType> struct TThreadGroupSize {};
133 template <> struct TThreadGroupSize<EClearReplacementResourceType::Buffer> { static constexpr int32 X = 64, Y = 1, Z = 1; };
134 template <> struct TThreadGroupSize<EClearReplacementResourceType::Texture2D> { static constexpr int32 X = 8, Y = 8, Z = 1; };
135 template <> struct TThreadGroupSize<EClearReplacementResourceType::Texture2DArray> { static constexpr int32 X = 8, Y = 8, Z = 1; };
136 template <> struct TThreadGroupSize<EClearReplacementResourceType::Texture3D> { static constexpr int32 X = 4, Y = 4, Z = 4; };
137 template <> struct TThreadGroupSize<EClearReplacementResourceType::StructuredBuffer> { static constexpr int32 X = 64, Y = 1, Z = 1; };
138 template <> struct TThreadGroupSize<EClearReplacementResourceType::LargeBuffer> { static constexpr int32 X = 512, Y = 1, Z = 1; };
139}
140
141template <EClearReplacementResourceType ResourceType, typename BaseType>
142class TClearReplacementCS : public BaseType
143{
145
146public:
147 static constexpr uint32 ThreadGroupSizeX = ClearReplacementCS::TThreadGroupSize<ResourceType>::X;
148 static constexpr uint32 ThreadGroupSizeY = ClearReplacementCS::TThreadGroupSize<ResourceType>::Y;
149 static constexpr uint32 ThreadGroupSizeZ = ClearReplacementCS::TThreadGroupSize<ResourceType>::Z;
150
151 // Use wrapping for 1D layouts if supported.
152 static constexpr bool bUseWrappedGroupCount = (ThreadGroupSizeY == 1) && (ThreadGroupSizeZ == 1) && BaseType::bSupportsWrappedGroupCount;
153
155 TClearReplacementCS(const ShaderMetaType::CompiledShaderInitializerType& Initializer)
156 : BaseType(Initializer)
157 {
158 ClearResourceParam.Bind(Initializer.ParameterMap, TEXT("ClearResource"), SPF_Mandatory);
159 }
160
162 {
163 return true;
164 }
165
167 {
168 BaseType::ModifyCompilationEnvironment(Parameters, OutEnvironment);
169
171 {
172 OutEnvironment.CompilerFlags.Add(CFLAG_ForceBindful);
173 }
174
175 OutEnvironment.SetDefine(TEXT("THREADGROUPSIZE_X"), ThreadGroupSizeX);
176 OutEnvironment.SetDefine(TEXT("THREADGROUPSIZE_Y"), ThreadGroupSizeY);
177 OutEnvironment.SetDefine(TEXT("THREADGROUPSIZE_Z"), ThreadGroupSizeZ);
178 OutEnvironment.SetDefine(TEXT("USE_WRAPPED_GROUP_COUNT"), bUseWrappedGroupCount ? 1 : 0);
179 OutEnvironment.SetDefine(TEXT("RESOURCE_TYPE"), uint32(ResourceType));
180 }
181
182 static const TCHAR* GetFunctionName() { return TEXT("ClearCS"); }
183
185 inline uint32 GetResourceParamIndex() const { return ClearResourceParam.GetBaseIndex(); }
186
199
200private:
202};
203
204template <bool bEnableDepth, typename BaseType>
205class TClearReplacementVS : public BaseType
206{
208
209public:
211 TClearReplacementVS(const ShaderMetaType::CompiledShaderInitializerType& Initializer)
212 : BaseType(Initializer)
213 {
214 if (bEnableDepth)
215 {
216 DepthParam.Bind(Initializer.ParameterMap, TEXT("Depth"), SPF_Mandatory);
217 }
218 }
219
221 {
222 return true;
223 }
224
226 {
227 BaseType::ModifyCompilationEnvironment(Parameters, OutEnvironment);
228 OutEnvironment.SetDefine(TEXT("ENABLE_DEPTH"), bEnableDepth);
229 }
230
231 static const TCHAR* GetFunctionName() { return TEXT("ClearVS"); }
232
233 template <typename T = const FShaderParameter&>
235 {
236 return DepthParam;
237 }
238
239private:
241};
242
243template <bool b128BitOutput, typename BaseType>
244class TClearReplacementPS : public BaseType
245{
247
248public:
250 TClearReplacementPS(const ShaderMetaType::CompiledShaderInitializerType& Initializer)
251 : BaseType(Initializer)
252 {
253 }
254
256 {
257 return true;
258 }
259
261 {
262 BaseType::ModifyCompilationEnvironment(Parameters, OutEnvironment);
263
264 if (b128BitOutput)
265 {
266 OutEnvironment.SetRenderTargetOutputFormat(0, PF_A32B32G32R32F);
267 }
268 OutEnvironment.SetDefine(TEXT("ENABLE_DEPTH"), false);
269 }
270
271 static const TCHAR* GetFunctionName() { return TEXT("ClearPS"); }
272};
273
274// Not all combinations are defined here. Add more if required.
275// Type NC Zero Bounds
287
288// Simple vertex shaders for generating screen quads. Optionally with a min/max bounds in NDC space, and depth value.
292
293// Simple pixel shader which outputs a specified solid color to MRT0.
296// Simple pixel shader which outputs zero to MRT0
298
299// Compute shaders for clearing each resource type, with a min/max bounds enabled.
312
313// Compute shaders for clearing each resource type. No bounds checks enabled.
321
325
326// Used by ClearUAV_T in ClearQuad.cpp
333
340
347
353template <EClearReplacementResourceType ResourceType, EClearReplacementValueType ValueType, uint32 NumChannels, bool bBarriers>
355{
357
359 FRHIComputeShader* ShaderRHI = ComputeShader.GetComputeShader();
361
363
364 SetShaderValue(BatchedParameters, ComputeShader->GetClearValueParam(), ClearValues);
365 SetShaderValue(BatchedParameters, ComputeShader->GetMinBoundsParam(), FUintVector4(0, 0, 0, 0));
366 SetShaderValue(BatchedParameters, ComputeShader->GetMaxBoundsParam(), FUintVector4(SizeX, SizeY, SizeZ, 0));
367
369
370 if (bBarriers)
371 {
373 }
374
375 ResourceBindCallback(ShaderRHI, ComputeShader->GetClearResourceParam(), true);
376
377 FIntVector GroupCount = FClearShader::GetGroupCount(SizeX, SizeY, SizeZ);
378
380
381 ResourceBindCallback(ShaderRHI, ComputeShader->GetClearResourceParam(), false);
382
383 if (bBarriers)
384 {
386 }
387}
388
389// Default implementation of ClearUAVShader_T which simply binds the UAV to the compute shader via RHICmdList.SetUAVParameter
390template <EClearReplacementResourceType ResourceType, EClearReplacementValueType ValueType, uint32 NumChannels, bool bBarriers>
391inline void ClearUAVShader_T(FRHIComputeCommandList& RHICmdList, FRHIUnorderedAccessView* UAV, uint32 SizeX, uint32 SizeY, uint32 SizeZ, const typename TClearReplacementTypeSelector<ValueType>::Type(&ClearValues)[NumChannels])
392{
394
396 FRHIComputeShader* ShaderRHI = ComputeShader.GetComputeShader();
398
400
401 SetShaderValue(BatchedParameters, ComputeShader->GetClearValueParam(), ClearValues);
402 SetShaderValue(BatchedParameters, ComputeShader->GetMinBoundsParam(), FUintVector4(0, 0, 0, 0));
403 SetShaderValue(BatchedParameters, ComputeShader->GetMaxBoundsParam(), FUintVector4(SizeX, SizeY, SizeZ, 0));
404
405 if (bBarriers)
406 {
408 }
409
410 SetUAVParameter(BatchedParameters, ComputeShader->GetClearResourceParam(), UAV);
411
413
414 const FIntVector GroupCount = FClearShader::GetGroupCount(SizeX, SizeY, SizeZ);
415
417
418 if (RHICmdList.NeedsShaderUnbinds())
419 {
421 UnsetUAVParameter(BatchedUnbinds, ComputeShader->GetClearResourceParam());
423 }
424
425 if (bBarriers)
426 {
428 }
429}
430
431// Helper version of ClearUAVShader_T for determining float vs uint32 at runtime. Uses the above default implementation.
432template <EClearReplacementResourceType ResourceType, uint32 NumChannels, bool bBarriers>
433inline void ClearUAVShader_T(FRHIComputeCommandList& RHICmdList, FRHIUnorderedAccessView* UAV, uint32 SizeX, uint32 SizeY, uint32 SizeZ, const void* ClearValues, EClearReplacementValueType ValueType)
434{
435 switch (ValueType)
436 {
438 ClearUAVShader_T<ResourceType, EClearReplacementValueType::Float, NumChannels, bBarriers>(RHICmdList, UAV, SizeX, SizeY, SizeZ, *reinterpret_cast<const float(*)[NumChannels]>(ClearValues));
439 break;
440
442 ClearUAVShader_T<ResourceType, EClearReplacementValueType::Uint32, NumChannels, bBarriers>(RHICmdList, UAV, SizeX, SizeY, SizeZ, *reinterpret_cast<const uint32(*)[NumChannels]>(ClearValues));
443 break;
444
446 ClearUAVShader_T<ResourceType, EClearReplacementValueType::Int32, NumChannels, bBarriers>(RHICmdList, UAV, SizeX, SizeY, SizeZ, *reinterpret_cast<const int32(*)[NumChannels]>(ClearValues));
447 break;
448 }
449}
TClearReplacementBase< EClearReplacementValueType::Uint32, 1, true, false > FClearReplacementBase_Uint_Zero
Definition ClearReplacementShaders.h:279
TClearReplacementCS< EClearReplacementResourceType::StructuredBuffer, FClearReplacementBase_Uint_Zero > FClearReplacementCS_StructuredBuffer_Uint_Zero
Definition ClearReplacementShaders.h:315
EClearReplacementResourceType
Definition ClearReplacementShaders.h:29
TClearReplacementCS< EClearReplacementResourceType::StructuredBuffer, FClearReplacementBase_Uint > FClearReplacementCS_StructuredBuffer_Uint
Definition ClearReplacementShaders.h:319
TClearReplacementCS< EClearReplacementResourceType::StructuredBuffer, FClearReplacementBase_Uint4_Bounds > FClearReplacementCS_StructuredBuffer_Uint4_Bounds
Definition ClearReplacementShaders.h:336
TClearReplacementCS< EClearReplacementResourceType::Texture3D, FClearReplacementBase_Sint4_Bounds > FClearReplacementCS_Texture3D_Sint4_Bounds
Definition ClearReplacementShaders.h:344
TClearReplacementCS< EClearReplacementResourceType::Texture3D, FClearReplacementBase_Uint4 > FClearReplacementCS_Texture3D_Uint4
Definition ClearReplacementShaders.h:327
TClearReplacementVS< false, FClearReplacementBase_Float4_Zero_Bounds > FClearReplacementVS_Bounds
Definition ClearReplacementShaders.h:290
TClearReplacementCS< EClearReplacementResourceType::Texture2D, FClearReplacementBase_Float4 > FClearReplacementCS_Texture2D_Float4
Definition ClearReplacementShaders.h:323
TClearReplacementCS< EClearReplacementResourceType::Buffer, FClearReplacementBase_Uint4_Bounds > FClearReplacementCS_Buffer_Uint4_Bounds
Definition ClearReplacementShaders.h:334
TClearReplacementPS< false, FClearReplacementBase_Float4 > FClearReplacementPS
Definition ClearReplacementShaders.h:294
TClearReplacementCS< EClearReplacementResourceType::Texture2DArray, FClearReplacementBase_Uint_Zero > FClearReplacementCS_Texture2DArray_Uint_Zero
Definition ClearReplacementShaders.h:316
TClearReplacementCS< EClearReplacementResourceType::LargeBuffer, FClearReplacementBase_Float4_Bounds > FClearReplacementCS_LargeBuffer_Float4_Bounds
Definition ClearReplacementShaders.h:305
TClearReplacementBase< EClearReplacementValueType::Int32, 4, false, true > FClearReplacementBase_Sint4_Bounds
Definition ClearReplacementShaders.h:284
TClearReplacementCS< EClearReplacementResourceType::Texture2DArray, FClearReplacementBase_Uint > FClearReplacementCS_Texture2DArray_Uint
Definition ClearReplacementShaders.h:320
TClearReplacementCS< EClearReplacementResourceType::StructuredBuffer, FClearReplacementBase_Float4_Bounds > FClearReplacementCS_StructuredBuffer_Float4_Bounds
Definition ClearReplacementShaders.h:308
TClearReplacementBase< EClearReplacementValueType::Float, 4, false, true > FClearReplacementBase_Float4_Bounds
Definition ClearReplacementShaders.h:286
TClearReplacementCS< EClearReplacementResourceType::LargeBuffer, FClearReplacementBase_Uint4_Bounds > FClearReplacementCS_LargeBuffer_Uint4_Bounds
Definition ClearReplacementShaders.h:335
TClearReplacementBase< EClearReplacementValueType::Uint32, 1, false, true > FClearReplacementBase_Uint_Bounds
Definition ClearReplacementShaders.h:282
TClearReplacementCS< EClearReplacementResourceType::Texture2DArray, FClearReplacementBase_Uint4 > FClearReplacementCS_Texture2DArray_Uint4
Definition ClearReplacementShaders.h:329
TClearReplacementCS< EClearReplacementResourceType::Buffer, FClearReplacementBase_Uint_Zero > FClearReplacementCS_Buffer_Uint_Zero
Definition ClearReplacementShaders.h:314
TClearReplacementCS< EClearReplacementResourceType::Texture2DArray, FClearReplacementBase_Sint4_Bounds > FClearReplacementCS_Texture2DArray_Sint4_Bounds
Definition ClearReplacementShaders.h:346
TClearReplacementBase< EClearReplacementValueType::Uint32, 4, false, false > FClearReplacementBase_Uint4
Definition ClearReplacementShaders.h:277
TClearReplacementCS< EClearReplacementResourceType::Buffer, FClearReplacementBase_Float_Bounds > FClearReplacementCS_Buffer_Float_Bounds
Definition ClearReplacementShaders.h:301
TClearReplacementBase< EClearReplacementValueType::Uint32, 1, false, false > FClearReplacementBase_Uint
Definition ClearReplacementShaders.h:276
TClearReplacementCS< EClearReplacementResourceType::Texture2DArray, FClearReplacementBase_Float4_Bounds > FClearReplacementCS_Texture2DArray_Float4_Bounds
Definition ClearReplacementShaders.h:311
TClearReplacementCS< EClearReplacementResourceType::Texture3D, FClearReplacementBase_Float4_Bounds > FClearReplacementCS_Texture3D_Float4_Bounds
Definition ClearReplacementShaders.h:309
TClearReplacementBase< EClearReplacementValueType::Float, 4, true, true > FClearReplacementBase_Float4_Zero_Bounds
Definition ClearReplacementShaders.h:281
TClearReplacementBase< EClearReplacementValueType::Float, 4, true, false > FClearReplacementBase_Float4_Zero
Definition ClearReplacementShaders.h:280
TClearReplacementCS< EClearReplacementResourceType::Texture2D, FClearReplacementBase_Float4_Bounds > FClearReplacementCS_Texture2D_Float4_Bounds
Definition ClearReplacementShaders.h:310
TClearReplacementBase< EClearReplacementValueType::Uint32, 4, false, true > FClearReplacementBase_Uint4_Bounds
Definition ClearReplacementShaders.h:283
TClearReplacementCS< EClearReplacementResourceType::Texture2D, FClearReplacementBase_Sint4_Bounds > FClearReplacementCS_Texture2D_Sint4_Bounds
Definition ClearReplacementShaders.h:345
TClearReplacementCS< EClearReplacementResourceType::Buffer, FClearReplacementBase_Uint_Bounds > FClearReplacementCS_Buffer_Uint_Bounds
Definition ClearReplacementShaders.h:300
TClearReplacementBase< EClearReplacementValueType::Float, 4, false, false > FClearReplacementBase_Float4
Definition ClearReplacementShaders.h:278
TClearReplacementCS< EClearReplacementResourceType::LargeBuffer, FClearReplacementBase_Sint4_Bounds > FClearReplacementCS_LargeBuffer_Sint4_Bounds
Definition ClearReplacementShaders.h:342
TClearReplacementPS< false, FClearReplacementBase_Float4_Zero > FClearReplacementPS_Zero
Definition ClearReplacementShaders.h:297
TClearReplacementCS< EClearReplacementResourceType::LargeBuffer, FClearReplacementBase_Float_Bounds > FClearReplacementCS_LargeBuffer_Float_Bounds
Definition ClearReplacementShaders.h:304
TClearReplacementCS< EClearReplacementResourceType::LargeBuffer, FClearReplacementBase_Uint4 > FClearReplacementCS_LargeBuffer_Uint4
Definition ClearReplacementShaders.h:331
TClearReplacementCS< EClearReplacementResourceType::LargeBuffer, FClearReplacementBase_Uint > FClearReplacementCS_LargeBuffer_Uint
Definition ClearReplacementShaders.h:318
TClearReplacementCS< EClearReplacementResourceType::Texture2DArray, FClearReplacementBase_Float4 > FClearReplacementCS_Texture2DArray_Float4
Definition ClearReplacementShaders.h:324
TClearReplacementCS< EClearReplacementResourceType::StructuredBuffer, FClearReplacementBase_Uint4 > FClearReplacementCS_StructuredBuffer_Uint4
Definition ClearReplacementShaders.h:332
TClearReplacementVS< false, FClearReplacementBase_Float4_Zero > FClearReplacementVS
Definition ClearReplacementShaders.h:289
TClearReplacementCS< EClearReplacementResourceType::Buffer, FClearReplacementBase_Uint > FClearReplacementCS_Buffer_Uint
Definition ClearReplacementShaders.h:317
void ClearUAVShader_T(FRHIComputeCommandList &RHICmdList, FRHIUnorderedAccessView *UAV, uint32 SizeX, uint32 SizeY, uint32 SizeZ, const typename TClearReplacementTypeSelector< ValueType >::Type(&ClearValues)[NumChannels], TFunctionRef< void(FRHIComputeShader *, const FShaderResourceParameter &, bool)> ResourceBindCallback)
Definition ClearReplacementShaders.h:354
TClearReplacementCS< EClearReplacementResourceType::StructuredBuffer, FClearReplacementBase_Sint4_Bounds > FClearReplacementCS_StructuredBuffer_Sint4_Bounds
Definition ClearReplacementShaders.h:343
EClearReplacementValueType
Definition ClearReplacementShaders.h:39
TClearReplacementCS< EClearReplacementResourceType::StructuredBuffer, FClearReplacementBase_Uint_Bounds > FClearReplacementCS_StructuredBuffer_Uint_Bounds
Definition ClearReplacementShaders.h:306
TClearReplacementCS< EClearReplacementResourceType::Texture3D, FClearReplacementBase_Uint4_Bounds > FClearReplacementCS_Texture3D_Uint4_Bounds
Definition ClearReplacementShaders.h:337
TClearReplacementCS< EClearReplacementResourceType::Buffer, FClearReplacementBase_Sint4_Bounds > FClearReplacementCS_Buffer_Sint4_Bounds
Definition ClearReplacementShaders.h:341
TClearReplacementCS< EClearReplacementResourceType::Texture2D, FClearReplacementBase_Uint4_Bounds > FClearReplacementCS_Texture2D_Uint4_Bounds
Definition ClearReplacementShaders.h:338
TClearReplacementCS< EClearReplacementResourceType::Buffer, FClearReplacementBase_Float4_Bounds > FClearReplacementCS_Buffer_Float4_Bounds
Definition ClearReplacementShaders.h:302
TClearReplacementCS< EClearReplacementResourceType::Buffer, FClearReplacementBase_Uint4 > FClearReplacementCS_Buffer_Uint4
Definition ClearReplacementShaders.h:330
TClearReplacementCS< EClearReplacementResourceType::LargeBuffer, FClearReplacementBase_Uint_Bounds > FClearReplacementCS_LargeBuffer_Uint_Bounds
Definition ClearReplacementShaders.h:303
TClearReplacementCS< EClearReplacementResourceType::Texture2D, FClearReplacementBase_Uint4 > FClearReplacementCS_Texture2D_Uint4
Definition ClearReplacementShaders.h:328
TClearReplacementCS< EClearReplacementResourceType::Texture3D, FClearReplacementBase_Float4 > FClearReplacementCS_Texture3D_Float4
Definition ClearReplacementShaders.h:322
TClearReplacementCS< EClearReplacementResourceType::StructuredBuffer, FClearReplacementBase_Float_Bounds > FClearReplacementCS_StructuredBuffer_Float_Bounds
Definition ClearReplacementShaders.h:307
TClearReplacementCS< EClearReplacementResourceType::Texture2DArray, FClearReplacementBase_Uint4_Bounds > FClearReplacementCS_Texture2DArray_Uint4_Bounds
Definition ClearReplacementShaders.h:339
TClearReplacementVS< true, FClearReplacementBase_Float4_Zero > FClearReplacementVS_Depth
Definition ClearReplacementShaders.h:291
TClearReplacementBase< EClearReplacementValueType::Float, 1, false, true > FClearReplacementBase_Float_Bounds
Definition ClearReplacementShaders.h:285
TClearReplacementPS< true, FClearReplacementBase_Float4 > FClearReplacementPS_128
Definition ClearReplacementShaders.h:295
#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
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define X(Name, Desc)
Definition FormatStringSan.h:47
FGlobalShaderMap * GetGlobalShaderMap(EShaderPlatform Platform)
Definition GlobalShader.cpp:539
FInt32Vector3 FIntVector
Definition MathFwd.h:115
#define LAYOUT_FIELD(T, Name,...)
Definition MemoryLayout.h:471
void SetComputePipelineState(FRHIComputeCommandList &RHICmdList, FRHIComputeShader *ComputeShader)
Definition PipelineStateCache.cpp:1447
@ PF_A32B32G32R32F
Definition PixelFormat.h:18
ERHIFeatureLevel::Type GMaxRHIFeatureLevel
Definition RHI.cpp:1338
void UnsetUAVParameter(FRHIBatchedShaderUnbinds &BatchedUnbinds, const FShaderResourceParameter &Parameter)
Definition ShaderParameterUtils.h:190
void SetUAVParameter(FRHIBatchedShaderParameters &BatchedParameters, const FShaderResourceParameter &Parameter, FRHIUnorderedAccessView *UAV)
Definition ShaderParameterUtils.h:156
void SetShaderValue(FRHIBatchedShaderParameters &BatchedParameters, const FShaderParameter &Parameter, const ParameterType &Value, uint32 ElementIndex=0)
Definition ShaderParameterUtils.h:24
@ SPF_Mandatory
Definition ShaderParameters.h:51
#define DECLARE_EXPORTED_SHADER_TYPE(ShaderClass, ShaderMetaTypeShortcut, RequiredAPI,...)
Definition Shader.h:1683
uint32_t uint32
Definition binka_ue_file_header.h:6
static const bool GetRequiresBindfulUtilityShaders(const FStaticShaderPlatform Platform)
Definition DataDrivenShaderPlatformInfo.h:819
Definition GlobalShader.h:269
static void ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters &Parameters, FShaderCompilerEnvironment &Environment)
Definition GlobalShader.h:289
Definition MemoryImage.h:49
FRHIBatchedShaderParameters & GetScratchShaderParameters()
Definition RHICommandList.h:1190
bool NeedsShaderUnbinds() const
Definition RHICommandList.h:1217
FRHIBatchedShaderUnbinds & GetScratchShaderUnbinds()
Definition RHICommandList.h:1207
Definition RHICommandList.h:2735
void SetBatchedShaderParameters(FRHIComputeShader *InShader, FRHIBatchedShaderParameters &InBatchedParameters)
Definition RHICommandList.h:2850
void DispatchComputeShader(uint32 ThreadGroupCountX, uint32 ThreadGroupCountY, uint32 ThreadGroupCountZ)
Definition RHICommandList.h:2929
void SetBatchedShaderUnbinds(FRHIComputeShader *InShader, FRHIBatchedShaderUnbinds &InBatchedUnbinds)
Definition RHICommandList.h:2887
RHI_API void Transition(TArrayView< const FRHITransitionInfo > Infos, ERHITransitionCreateFlags CreateFlags=ERHITransitionCreateFlags::None)
Definition RHICommandList.cpp:1947
Definition RHIResources.h:1018
Definition RHIResources.h:3294
Definition ShaderParameters.h:56
Definition ShaderParameters.h:87
Definition ClearReplacementShaders.h:143
TClearReplacementCS(const ShaderMetaType::CompiledShaderInitializerType &Initializer)
Definition ClearReplacementShaders.h:155
static bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters &Parameters)
Definition ClearReplacementShaders.h:161
static constexpr bool bUseWrappedGroupCount
Definition ClearReplacementShaders.h:152
uint32 GetResourceParamIndex() const
Definition ClearReplacementShaders.h:185
static constexpr uint32 ThreadGroupSizeY
Definition ClearReplacementShaders.h:148
static constexpr uint32 ThreadGroupSizeZ
Definition ClearReplacementShaders.h:149
TClearReplacementCS()
Definition ClearReplacementShaders.h:154
static const TCHAR * GetFunctionName()
Definition ClearReplacementShaders.h:182
static FIntVector GetGroupCount(uint32 SizeX, uint32 SizeY, uint32 SizeZ)
Definition ClearReplacementShaders.h:187
static constexpr uint32 ThreadGroupSizeX
Definition ClearReplacementShaders.h:147
static void ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters &Parameters, FShaderCompilerEnvironment &OutEnvironment)
Definition ClearReplacementShaders.h:166
const FShaderResourceParameter & GetClearResourceParam() const
Definition ClearReplacementShaders.h:184
Definition ClearReplacementShaders.h:245
static void ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters &Parameters, FShaderCompilerEnvironment &OutEnvironment)
Definition ClearReplacementShaders.h:260
static const TCHAR * GetFunctionName()
Definition ClearReplacementShaders.h:271
static bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters &Parameters)
Definition ClearReplacementShaders.h:255
TClearReplacementPS()
Definition ClearReplacementShaders.h:249
TClearReplacementPS(const ShaderMetaType::CompiledShaderInitializerType &Initializer)
Definition ClearReplacementShaders.h:250
Definition ClearReplacementShaders.h:206
TEnableIf< bEnableDepth, T >::Type GetDepthParam() const
Definition ClearReplacementShaders.h:234
TClearReplacementVS(const ShaderMetaType::CompiledShaderInitializerType &Initializer)
Definition ClearReplacementShaders.h:211
TClearReplacementVS()
Definition ClearReplacementShaders.h:210
static const TCHAR * GetFunctionName()
Definition ClearReplacementShaders.h:231
static void ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters &Parameters, FShaderCompilerEnvironment &OutEnvironment)
Definition ClearReplacementShaders.h:225
static bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters &Parameters)
Definition ClearReplacementShaders.h:220
Definition EnableIf.h:20
Definition AssetRegistryState.h:50
Definition Shader.h:2629
Definition ClearReplacementShaders.h:131
FIntVector GetGroupCountWrapped(const int32 TargetGroupCount)
Definition RenderGraphUtils.h:398
Definition GlobalShader.h:73
static constexpr UE_FORCEINLINE_HINT T DivideAndRoundUp(T Dividend, T Divisor)
Definition UnrealMathUtility.h:694
Definition RHIShaderParameters.h:241
Definition RHIShaderParameters.h:374
Definition RHITransition.h:119
Definition Shader.h:1610
Definition ShaderCore.h:544
const EShaderPlatform Platform
Definition ShaderPermutation.h:29
Definition ClearReplacementShaders.h:52
TEnableIf< bEnableBounds, T >::Type GetMaxBoundsParam() const
Definition ClearReplacementShaders.h:121
TClearReplacementBase(const ShaderMetaType::CompiledShaderInitializerType &Initializer)
Definition ClearReplacementShaders.h:61
TEnableIf<!bZeroOutput, T >::Type GetClearValueParam() const
Definition ClearReplacementShaders.h:119
static void ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters &Parameters, FShaderCompilerEnvironment &OutEnvironment)
Definition ClearReplacementShaders.h:78
TClearReplacementBase()
Definition ClearReplacementShaders.h:60
static const TCHAR * GetSourceFilename()
Definition ClearReplacementShaders.h:76
TEnableIf< bEnableBounds, T >::Type GetMinBoundsParam() const
Definition ClearReplacementShaders.h:120
static constexpr bool bSupportsWrappedGroupCount
Definition ClearReplacementShaders.h:57
DECLARE_INLINE_TYPE_LAYOUT(TClearReplacementBase, NonVirtual)
float Type
Definition ClearReplacementShaders.h:46
int32 Type
Definition ClearReplacementShaders.h:47
uint32 Type
Definition ClearReplacementShaders.h:48
Definition ClearReplacementShaders.h:45