60 static bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters);
71 FRHICommandList& RHICmdList,
72 const FGlobalShaderMap* GlobalShaderMap,
73 const TShaderRef<FShader>& PixelShader,
74 FGraphicsPipelineStateInitializer& GraphicsPSOInit);
78 FRHICommandList& RHICmdList,
79 const FGlobalShaderMap* GlobalShaderMap,
80 const TShaderRef<FShader>& PixelShader,
81 FGraphicsPipelineStateInitializer& GraphicsPSOInit);
86 FRHICommandList& RHICmdList,
87 const FGlobalShaderMap* GlobalShaderMap,
88 const TShaderRef<TShaderClass>& PixelShader,
89 const typename TShaderClass::FParameters& Parameters,
90 const FIntRect& Viewport,
91 FRHIBlendState* BlendState = nullptr,
92 FRHIRasterizerState* RasterizerState = nullptr,
93 FRHIDepthStencilState* DepthStencilState = nullptr,
94 uint32 StencilRef = 0)
97 RHICmdList.SetViewport((
float)Viewport.Min.X, (
float)Viewport.Min.Y, 0.0f, (
float)Viewport.Max.X, (
float)Viewport.Max.Y, 1.0f);
100 InitFullscreenPipelineState(RHICmdList, GlobalShaderMap,
PixelShader, GraphicsPSOInit);
109 DrawFullscreenTriangle(RHICmdList);
113 template<
typename TShaderClass>
118 const typename TShaderClass::FParameters& Parameters,
126 checkf(Viewports.
Num() == 2,
TEXT(
"Only two instanced viewports are currently supported"));
154 template<
typename TShaderClass>
160 typename TShaderClass::FParameters* Parameters,
181 BlendState, RasterizerState, DepthStencilState,
StencilRef);
186 template<
typename TShaderClass>
192 typename TShaderClass::FParameters* Parameters,
213 BlendState, RasterizerState, DepthStencilState,
StencilRef);
219 template<
typename TPixelShaderClass,
typename TPassParameters>
220 UE_DEPRECATED(5.5,
"Use the other prototype of AddRasterizeToRectsPass that takes a ERDGPassFlags in parameter and use ERDGPassFlags::SkipRenderPass in lieu of bSkipRenderPass == true")
239 AddRasterizeToRectsPass(GraphBuilder, GlobalShaderMap, PassName,
PixelShader, Parameters, ViewportSize,
RectCoordBufferSRV,
NumRects, BlendState, RasterizerState, DepthStencilState,
244 template<
typename TPixelShaderClass,
typename TPassParameters>
260 uint32 DownsampleFactor = 1,
268 Parameters->VS.InvViewSize =
FVector2f(1.0f / ViewportSize.
X, 1.0f / ViewportSize.
Y);
269 Parameters->VS.InvTextureSize =
FVector2f(1.0f / TextureSize.X, 1.0f / TextureSize.Y);
270 Parameters->VS.DownsampleFactor = 1.0f / DownsampleFactor;
285 [Parameters, GlobalShaderMap,
VertexShader,
PixelShader, ViewportSize, BlendState, RasterizerState, DepthStencilState,
StencilRef,
bSkipRenderPass,
NumRects](
FRDGAsyncTask,
FRHICommandList& RHICmdList)
291 RPInfo.ResolveRect.Y1 = 0;
292 RPInfo.ResolveRect.X2 = ViewportSize.
X;
293 RPInfo.ResolveRect.Y2 = ViewportSize.
Y;
300 RHICmdList.
SetViewport(0.0f, 0.0f, 0.0f, (
float)ViewportSize.
X, (
float)ViewportSize.
Y, 1.0f);
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define check(expr)
Definition AssertionMacros.h:314
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
constexpr bool EnumHasAnyFlags(Enum Flags, Enum Contains)
Definition EnumClassFlags.h:35
TGlobalResource< FTileVertexDeclaration, FRenderResource::EInitPhase::Pre > GTileVertexDeclaration
Definition GlobalRenderResources.cpp:744
UE::Math::TVector2< float > FVector2f
Definition MathFwd.h:74
FInt32Point FIntPoint
Definition MathFwd.h:124
const bool
Definition NetworkReplayStreaming.h:178
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
ERDGPassFlags
Definition RenderGraphDefinitions.h:128
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 END_SHADER_PARAMETER_STRUCT()
Definition ShaderParameterMacros.h:1485
#define SHADER_PARAMETER(MemberType, MemberName)
Definition ShaderParameterMacros.h:1684
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
#define SHADER_PERMUTATION_BOOL(InDefineName)
Definition ShaderPermutation.h:482
#define DECLARE_EXPORTED_SHADER_TYPE(ShaderClass, ShaderMetaTypeShortcut, RequiredAPI,...)
Definition Shader.h:1683
Definition GlobalShader.h:173
RENDERCORE_API TShaderRef< FShader > GetShader(FShaderType *ShaderType, int32 PermutationId=0) const
Definition GlobalShader.cpp:608
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 PixelShaderUtils.h:44
Definition MemoryImage.h:49
Definition RenderGraphResources.h:1426
Definition RenderGraphBuilder.h:49
FRDGPassRef AddPass(FRDGEventName &&Name, const ParameterStructType *ParameterStruct, ERDGPassFlags Flags, ExecuteLambdaType &&ExecuteLambda)
Definition RenderGraphEvent.h:38
Definition RHIResources.h:696
Definition RHICommandList.h:3819
void BeginRenderPass(const FRHIRenderPassInfo &InInfo, const TCHAR *Name)
Definition RHICommandList.h:4259
void SetViewport(float MinX, float MinY, float MinZ, float MaxX, float MaxY, float MaxZ)
Definition RHICommandList.h:4015
void DrawPrimitive(uint32 BaseVertexIndex, uint32 NumPrimitives, uint32 NumInstances)
Definition RHICommandList.h:3962
void SetStereoViewport(float LeftMinX, float RightMinX, float LeftMinY, float RightMinY, float MinZ, float LeftMaxX, float RightMaxX, float LeftMaxY, float RightMaxY, float MaxZ)
Definition RHICommandList.h:4026
void ApplyCachedRenderTargets(FGraphicsPipelineStateInitializer &GraphicsPSOInit)
Definition RHICommandList.h:4048
void EndRenderPass()
Definition RHICommandList.h:4291
Definition RHIResources.h:686
Definition RHIResources.h:679
Definition ArrayView.h:139
UE_FORCEINLINE_HINT constexpr SizeType Num() const
Definition ArrayView.h:380
static RHIParamRefType GetRHI()
Definition RHIStaticStates.h:57
Definition PixelShaderUtils.h:41
static void AddRasterizeToRectsPass(FRDGBuilder &GraphBuilder, const FGlobalShaderMap *GlobalShaderMap, FRDGEventName &&PassName, const TShaderRef< TPixelShaderClass > &PixelShader, TPassParameters *Parameters, FIntPoint ViewportSize, FRDGBufferSRVRef RectCoordBufferSRV, uint32 NumRects, FRHIBlendState *BlendState, FRHIRasterizerState *RasterizerState, FRHIDepthStencilState *DepthStencilState, uint32 StencilRef, FIntPoint TextureSize, FRDGBufferSRVRef RectUVBufferSRV, uint32 DownsampleFactor, const bool bSkipRenderPass)
Definition PixelShaderUtils.h:221
static void AddFullscreenPass(FRDGBuilder &GraphBuilder, const FGlobalShaderMap *GlobalShaderMap, FRDGEventName &&PassName, const TShaderRef< TShaderClass > &PixelShader, typename TShaderClass::FParameters *Parameters, const FIntRect &Viewport, FRHIBlendState *BlendState=nullptr, FRHIRasterizerState *RasterizerState=nullptr, FRHIDepthStencilState *DepthStencilState=nullptr, uint32 StencilRef=0, ERDGPassFlags AdditionalPassFlags=ERDGPassFlags::None)
Definition PixelShaderUtils.h:155
static RENDERCORE_API void DrawFullscreenTriangle(FRHICommandList &RHICmdList, uint32 InstanceCount=1)
Definition PixelShaderUtils.cpp:20
static RENDERCORE_API void InitFullscreenMultiviewportPipelineState(FRHICommandList &RHICmdList, const FGlobalShaderMap *GlobalShaderMap, const TShaderRef< FShader > &PixelShader, FGraphicsPipelineStateInitializer &GraphicsPSOInit)
Definition PixelShaderUtils.cpp:69
static void AddFullscreenInstancedMultiViewportPass(FRDGBuilder &GraphBuilder, const FGlobalShaderMap *GlobalShaderMap, FRDGEventName &&PassName, const TShaderRef< TShaderClass > &PixelShader, typename TShaderClass::FParameters *Parameters, TArray< FIntRect > &&Viewports, FRHIBlendState *BlendState=nullptr, FRHIRasterizerState *RasterizerState=nullptr, FRHIDepthStencilState *DepthStencilState=nullptr, uint32 StencilRef=0, ERDGPassFlags AdditionalPassFlags=ERDGPassFlags::None)
Definition PixelShaderUtils.h:187
static void DrawFullscreenPixelShader(FRHICommandList &RHICmdList, const FGlobalShaderMap *GlobalShaderMap, const TShaderRef< TShaderClass > &PixelShader, const typename TShaderClass::FParameters &Parameters, const FIntRect &Viewport, FRHIBlendState *BlendState=nullptr, FRHIRasterizerState *RasterizerState=nullptr, FRHIDepthStencilState *DepthStencilState=nullptr, uint32 StencilRef=0)
Definition PixelShaderUtils.h:85
static RENDERCORE_API void DrawFullscreenQuad(FRHICommandList &RHICmdList, uint32 InstanceCount=1)
Definition PixelShaderUtils.cpp:35
static void DrawFullscreenInstancedMultiViewportPixelShader(FRHICommandList &RHICmdList, const FGlobalShaderMap *GlobalShaderMap, const TShaderRef< TShaderClass > &PixelShader, const typename TShaderClass::FParameters &Parameters, TArrayView< FIntRect const > Viewports, FRHIBlendState *BlendState=nullptr, FRHIRasterizerState *RasterizerState=nullptr, FRHIDepthStencilState *DepthStencilState=nullptr, uint32 StencilRef=0)
Definition PixelShaderUtils.h:114
static void AddRasterizeToRectsPass(FRDGBuilder &GraphBuilder, const FGlobalShaderMap *GlobalShaderMap, FRDGEventName &&PassName, const TShaderRef< TPixelShaderClass > &PixelShader, TPassParameters *Parameters, FIntPoint ViewportSize, FRDGBufferSRVRef RectCoordBufferSRV, uint32 NumRects, FRHIBlendState *BlendState=nullptr, FRHIRasterizerState *RasterizerState=nullptr, FRHIDepthStencilState *DepthStencilState=nullptr, uint32 StencilRef=0, FIntPoint TextureSize=FIntPoint(1, 1), FRDGBufferSRVRef RectUVBufferSRV=nullptr, uint32 DownsampleFactor=1, ERDGPassFlags AdditionalPassFlags=ERDGPassFlags::None, float DepthIncrement=0.0f)
Definition PixelShaderUtils.h:245
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 RHIResources.h:5248
FResolveRect ResolveRect
Definition RHIResources.h:5269
int32 X1
Definition RHIResources.h:5210
Definition ShaderPermutation.h:229
void Set(typename DimensionToSet::Type)
Definition ShaderPermutation.h:252
IntType Y
Definition IntPoint.h:37
IntType X
Definition IntPoint.h:34