8#include "SingleLayerWaterDefinitions.h"
84template<
typename TPixelShaderClass,
typename TPassParameters>
99 PassParameters->IndirectDrawParameter = TiledScreenSpaceReflection ? TiledScreenSpaceReflection->DrawIndirectParametersBuffer :
nullptr;
102 PassParameters->VS.TileListData = TiledScreenSpaceReflection ? TiledScreenSpaceReflection->TileListDataBufferSRV :
nullptr;
107 const bool bRunTiled = TiledScreenSpaceReflection !=
nullptr;
120 [
PassParameters, GlobalShaderMap, Viewport, TiledScreenSpaceReflection,
VertexShader,
PixelShader, BlendState, RasterizerState, DepthStencilState,
StencilRef](
FRDGAsyncTask,
FRHICommandList& RHICmdList)
151 RHICmdList.SetViewport(Viewport.Min.X, Viewport.Min.Y, 0.0f, Viewport.Max.X, Viewport.Max.Y, 1.0f);
TGlobalResource< FEmptyVertexDeclaration, FRenderResource::EInitPhase::Pre > GEmptyVertexDeclaration
Definition CommonRenderResources.cpp:14
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
ECustomDepthPassLocation
Definition CustomDepthRendering.h:11
#define DECLARE_GLOBAL_SHADER(ShaderClass)
Definition GlobalShader.h:408
void SetGraphicsPipelineState(FRHICommandList &RHICmdList, const FGraphicsPipelineStateInitializer &Initializer, uint32 StencilRef, EApplyRendertargetOption ApplyFlags, bool bApplyAdditionalState)
Definition PipelineStateCache.cpp:1478
@ PT_RectList
Definition RHIDefinitions.h:844
@ PT_TriangleList
Definition RHIDefinitions.h:824
#define GRHISupportsRectTopology
Definition RHIGlobals.h:789
void ClearUnusedGraphResources(const TShaderRef< TShaderClass > &Shader, const FShaderParametersMetadata *ParametersMetadata, typename TShaderClass::FParameters *InoutParameters, std::initializer_list< FRDGResourceRef > ExcludeList={})
Definition RenderGraphUtils.h:195
#define SHADER_PARAMETER_RDG_BUFFER_SRV(ShaderType, MemberName)
Definition ShaderParameterMacros.h:1800
#define BEGIN_SHADER_PARAMETER_STRUCT(StructTypeName, DllStorage)
Definition ShaderParameterMacros.h:1482
#define SHADER_PARAMETER_STRUCT_REF(StructType, MemberName)
Definition ShaderParameterMacros.h:1909
#define END_SHADER_PARAMETER_STRUCT()
Definition ShaderParameterMacros.h:1485
void SetShaderParameters(FRHIBatchedShaderParameters &BatchedParameters, const FShaderParameterBindings &Bindings, const FShaderParametersMetadata *ParametersMetadata, const void *InParametersData)
Definition ShaderParameterStruct.cpp:883
#define SHADER_USE_PARAMETER_STRUCT(ShaderClass, ShaderParentClass)
Definition ShaderParameterStruct.h:62
void ValidateShaderParameters(const TShaderRef< FShader > &Shader, const FShaderParametersMetadata *ParametersMetadata, const void *ParametersData)
Definition ShaderParameterStruct.h:125
ESingleLayerWaterPrepassLocation
Definition SingleLayerWaterRendering.h:49
bool ShouldRenderSingleLayerWaterSkippedRenderEditorNotification(TArrayView< const FViewInfo > Views)
Definition SingleLayerWaterRendering.cpp:252
bool ShouldRenderSingleLayerWaterDepthPrepass(TArrayView< const FViewInfo > Views)
Definition SingleLayerWaterRendering.cpp:267
ESingleLayerWaterPrepassLocation GetSingleLayerWaterDepthPrepassLocation(bool bFullDepthPrepass, ECustomDepthPassLocation CustomDepthPassLocation)
Definition SingleLayerWaterRendering.cpp:276
bool ShouldUseBilinearSamplerForDepthWithoutSingleLayerWater(EPixelFormat DepthTextureFormat)
Definition SingleLayerWaterRendering.cpp:325
bool ShouldRenderSingleLayerWater(TArrayView< const FViewInfo > Views)
Definition SingleLayerWaterRendering.cpp:237
void SingleLayerWaterAddTiledFullscreenPass(FRDGBuilder &GraphBuilder, const FGlobalShaderMap *GlobalShaderMap, FRDGEventName &&PassName, TShaderRefBase< TPixelShaderClass, FShaderMapPointerTable > PixelShader, TPassParameters *PassParameters, const TUniformBufferRef< FViewUniformShaderParameters > &ViewUniformBuffer, const FIntRect &Viewport, const FTiledReflection *TiledScreenSpaceReflection=nullptr, FRHIBlendState *BlendState=nullptr, FRHIRasterizerState *RasterizerState=nullptr, FRHIDepthStencilState *DepthStencilState=nullptr, uint32 StencilRef=0)
Definition SingleLayerWaterRendering.h:85
Definition GlobalShader.h:173
Definition GlobalShader.h:269
Definition RHIResources.h:4572
FBoundShaderStateInput BoundShaderState
Definition RHIResources.h:4754
FRHIBlendState * BlendState
Definition RHIResources.h:4755
FRHIRasterizerState * RasterizerState
Definition RHIResources.h:4756
FRHIDepthStencilState * DepthStencilState
Definition RHIResources.h:4757
EPrimitiveType PrimitiveType
Definition RHIResources.h:4760
Definition RenderGraphResources.h:1321
Definition RenderGraphBuilder.h:49
FRDGPassRef AddPass(FRDGEventName &&Name, const ParameterStructType *ParameterStruct, ERDGPassFlags Flags, ExecuteLambdaType &&ExecuteLambda)
Definition RenderGraphEvent.h:38
Definition RenderGraphResources.h:571
Definition RHIResources.h:696
Definition RHICommandList.h:3819
void DrawPrimitiveIndirect(FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset)
Definition RHICommandList.h:4127
void SetViewport(float MinX, float MinY, float MinZ, float MaxX, float MaxY, float MaxZ)
Definition RHICommandList.h:4015
Definition RHIResources.h:686
Definition RHIResources.h:679
Definition SceneRendering.h:1132
Definition SingleLayerWaterRendering.h:63
Definition ArrayView.h:139
Definition GlobalShader.h:73
static RENDERCORE_API void DrawFullscreenTriangle(FRHICommandList &RHICmdList, uint32 InstanceCount=1)
Definition PixelShaderUtils.cpp:20
static RENDERCORE_API void InitFullscreenPipelineState(FRHICommandList &RHICmdList, const FGlobalShaderMap *GlobalShaderMap, const TShaderRef< FShader > &PixelShader, FGraphicsPipelineStateInitializer &GraphicsPSOInit)
Definition PixelShaderUtils.cpp:50
Definition RenderGraphDefinitions.h:103
Definition RenderGraphUtils.h:288
Definition SingleLayerWaterRendering.h:34
FVector4f MinMaxUV
Definition SingleLayerWaterRendering.h:36
FIntRect ViewRect
Definition SingleLayerWaterRendering.h:35
Definition SingleLayerWaterRendering.h:32
FRDGTextureRef ColorTexture
Definition SingleLayerWaterRendering.h:40
FRDGTextureRef DepthTexture
Definition SingleLayerWaterRendering.h:41
TArray< FView > Views
Definition SingleLayerWaterRendering.h:42
FRDGTextureRef SeparatedMainDirLightTexture
Definition SingleLayerWaterRendering.h:39
float RefractionDownsampleFactor
Definition SingleLayerWaterRendering.h:43
Definition ShaderCore.h:544
Definition SingleLayerWaterRendering.h:22
FRDGTextureRef RefractionMaskTexture
Definition SingleLayerWaterRendering.h:25
FRDGTextureRef SceneDepthWithoutWater
Definition SingleLayerWaterRendering.h:26
TArray< FSingleLayerWaterTileClassification > ViewTileClassification
Definition SingleLayerWaterRendering.h:27
FRDGTextureMSAA DepthPrepassTexture
Definition SingleLayerWaterRendering.h:24
Froxel::FRenderer Froxels
Definition SingleLayerWaterRendering.h:23
Definition SingleLayerWaterRendering.h:15
FIntPoint TiledViewRes
Definition SingleLayerWaterRendering.h:18
FRDGBufferRef TileMaskBuffer
Definition SingleLayerWaterRendering.h:17
FTiledReflection TiledReflection
Definition SingleLayerWaterRendering.h:16
Definition ScreenSpaceRayTracing.h:28
Definition ShaderPermutation.h:229
IntType Y
Definition IntPoint.h:37
IntType X
Definition IntPoint.h:34
IntPointType Max
Definition IntRect.h:37
IntPointType Min
Definition IntRect.h:34