50template <EClearReplacementValueType ValueType, u
int32 NumChannels,
bool bZeroOutput = false,
bool bEnableBounds = false>
53 static_assert(NumChannels >= 1 && NumChannels <= 4,
"Only 1 to 4 channels are supported.");
132 template <EClearReplacementResourceType>
struct TThreadGroupSize {};
141template <EClearReplacementResourceType ResourceType,
typename BaseType>
168 BaseType::ModifyCompilationEnvironment(Parameters,
OutEnvironment);
204template <
bool bEnableDepth,
typename BaseType>
227 BaseType::ModifyCompilationEnvironment(Parameters,
OutEnvironment);
233 template <
typename T = const FShaderParameter&>
243template <
bool b128BitOutput,
typename BaseType>
262 BaseType::ModifyCompilationEnvironment(Parameters,
OutEnvironment);
353template <EClearReplacementResourceType ResourceType, EClearReplacementValueType ValueType, u
int32 NumChannels,
bool bBarriers>
390template <EClearReplacementResourceType ResourceType, EClearReplacementValueType ValueType, u
int32 NumChannels,
bool bBarriers>
432template <EClearReplacementResourceType ResourceType, u
int32 NumChannels,
bool bBarriers>
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
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
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
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
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 AssetRegistryState.h:50
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 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