UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ScreenPass.h File Reference
#include "CanvasTypes.h"
#include "CommonRenderResources.h"
#include "GlobalShader.h"
#include "PipelineStateCache.h"
#include "RenderGraphBuilder.h"
#include "RenderGraphUtils.h"
#include "RHIStaticStates.h"
#include "SceneView.h"
#include "ScreenPass.inl"

Go to the source code of this file.

Classes

class  FScreenPassVS
 
struct  FScreenPassTexture
 
struct  FScreenPassTextureSlice
 
struct  FScreenPassRenderTarget
 
class  FScreenPassTextureViewport
 
struct  FScreenTransform
 
struct  FScreenPassPipelineState
 
struct  FScreenPassViewInfo
 

Enumerations

enum class  EScreenPassDrawFlags : uint8 { None , AllowHMDHiddenAreaMask = 0x2 }
 
enum class  EDownsampleDepthFilter {
  Point , Max , Checkerboard , MinAndMaxDepth ,
  MinAndMaxDepthFromMinAndMaxDepth
}
 

Functions

RENDERER_API bool IsHMDHiddenAreaMaskActive ()
 
FRHITextureGetMiniFontTexture ()
 
FRDGTextureRef RENDERER_API TryCreateViewFamilyTexture (FRDGBuilder &GraphBuilder, const FSceneViewFamily &ViewFamily)
 
FRDGTextureRef RENDERER_API TryCreateViewFamilyDepthTexture (FRDGBuilder &GraphBuilder, const FSceneViewFamily &ViewFamily)
 
FIntPoint GetDownscaledExtent (FIntPoint Extent, FIntPoint Divisor)
 
FIntPoint GetScaledExtent (FIntPoint Extent, FVector2D Multiplier)
 
FIntPoint GetScaledExtent (FIntPoint Extent, float Multiplier)
 
FIntRect GetDownscaledRect (FIntRect Rect, FIntPoint Divisor)
 
FIntRect GetScaledRect (FIntRect Rect, FVector2D Multiplier)
 
FIntRect GetScaledRect (FIntRect Rect, float Multiplier)
 
FScreenPassTextureViewport GetDownscaledViewport (FScreenPassTextureViewport Viewport, FIntPoint Divisor)
 
FScreenPassTextureViewport GetScaledViewport (FScreenPassTextureViewport Viewport, FVector2D Multiplier)
 
FIntRect GetRectFromExtent (FIntPoint Extent)
 
FScreenPassTextureViewportParameters RENDERER_API GetScreenPassTextureViewportParameters (const FScreenPassTextureViewport &InViewport)
 
FScreenPassTextureInput GetScreenPassTextureInput (FScreenPassTexture Input, FRHISamplerState *Sampler)
 
FScreenPassTextureSliceInput GetScreenPassTextureInput (FScreenPassTextureSlice Input, FRHISamplerState *Sampler)
 
void RENDERER_API SetScreenPassPipelineState (FRHICommandList &RHICmdList, const FScreenPassPipelineState &ScreenPassDraw)
 
 ENUM_CLASS_FLAGS (EScreenPassDrawFlags)
 
RENDERER_API void DrawScreenPass_PostSetup (FRHICommandList &RHICmdList, const FScreenPassViewInfo &ViewInfo, const FScreenPassTextureViewport &OutputViewport, const FScreenPassTextureViewport &InputViewport, const FScreenPassPipelineState &PipelineState, EScreenPassDrawFlags Flags)
 
template<typename TSetupFunction >
void DrawScreenPass (FRHICommandList &RHICmdList, FScreenPassViewInfo ViewInfo, const FScreenPassTextureViewport &OutputViewport, const FScreenPassTextureViewport &InputViewport, const FScreenPassPipelineState &PipelineState, EScreenPassDrawFlags Flags, TSetupFunction SetupFunction)
 
template<typename PixelShaderType >
void AddDrawScreenPass (FRDGBuilder &GraphBuilder, FRDGEventName &&PassName, FScreenPassViewInfo ViewInfo, const FScreenPassTextureViewport &OutputViewport, const FScreenPassTextureViewport &InputViewport, const TShaderRef< FShader > &VertexShader, const TShaderRef< PixelShaderType > &PixelShader, FRHIBlendState *BlendState, FRHIDepthStencilState *DepthStencilState, typename PixelShaderType::FParameters *PixelShaderParameters, EScreenPassDrawFlags Flags=EScreenPassDrawFlags::None)
 
template<typename PixelShaderType >
void AddDrawScreenPass (FRDGBuilder &GraphBuilder, FRDGEventName &&PassName, FScreenPassViewInfo ViewInfo, const FScreenPassTextureViewport &OutputViewport, const FScreenPassTextureViewport &InputViewport, const TShaderRef< FShader > &VertexShader, const TShaderRef< PixelShaderType > &PixelShader, typename PixelShaderType::FParameters *PixelShaderParameters, EScreenPassDrawFlags Flags=EScreenPassDrawFlags::None)
 
template<typename PixelShaderType >
void AddDrawScreenPass (FRDGBuilder &GraphBuilder, FRDGEventName &&PassName, FScreenPassViewInfo ViewInfo, const FScreenPassTextureViewport &OutputViewport, const FScreenPassTextureViewport &InputViewport, const TShaderRef< FShader > &VertexShader, const TShaderRef< PixelShaderType > &PixelShader, FRHIBlendState *BlendState, typename PixelShaderType::FParameters *PixelShaderParameters, EScreenPassDrawFlags Flags=EScreenPassDrawFlags::None)
 
template<typename PixelShaderType >
void AddDrawScreenPass (FRDGBuilder &GraphBuilder, FRDGEventName &&PassName, FScreenPassViewInfo ViewInfo, const FScreenPassTextureViewport &OutputViewport, const FScreenPassTextureViewport &InputViewport, const TShaderRef< FShader > &VertexShader, const TShaderRef< PixelShaderType > &PixelShader, FRHIDepthStencilState *DepthStencilState, typename PixelShaderType::FParameters *PixelShaderParameters, EScreenPassDrawFlags Flags=EScreenPassDrawFlags::None)
 
template<typename PixelShaderType >
void AddDrawScreenPass (FRDGBuilder &GraphBuilder, FRDGEventName &&PassName, FScreenPassViewInfo ViewInfo, const FScreenPassTextureViewport &OutputViewport, const FScreenPassTextureViewport &InputViewport, const TShaderRef< PixelShaderType > &PixelShader, typename PixelShaderType::FParameters *PixelShaderParameters, EScreenPassDrawFlags Flags=EScreenPassDrawFlags::None)
 
template<typename TSetupFunction , typename TPassParameterStruct >
void AddDrawScreenPass (FRDGBuilder &GraphBuilder, FRDGEventName &&PassName, FScreenPassViewInfo ViewInfo, const FScreenPassTextureViewport &OutputViewport, const FScreenPassTextureViewport &InputViewport, const FScreenPassPipelineState &PipelineState, TPassParameterStruct *PassParameterStruct, EScreenPassDrawFlags Flags, TSetupFunction SetupFunction)
 
template<typename TSetupFunction , typename TPassParameterStruct >
void AddDrawScreenPass (FRDGBuilder &GraphBuilder, FRDGEventName &&PassName, FScreenPassViewInfo ViewInfo, const FScreenPassTextureViewport &OutputViewport, const FScreenPassTextureViewport &InputViewport, const FScreenPassPipelineState &PipelineState, TPassParameterStruct *PassParameterStruct, TSetupFunction SetupFunction)
 
void RENDERER_API AddDrawTexturePass (FRDGBuilder &GraphBuilder, FScreenPassViewInfo ViewInfo, FRDGTextureRef InputTexture, FRDGTextureRef OutputTexture, FIntPoint InputPosition=FIntPoint::ZeroValue, FIntPoint OutputPosition=FIntPoint::ZeroValue, FIntPoint Size=FIntPoint::ZeroValue)
 
void RENDERER_API AddDrawTexturePass (FRDGBuilder &GraphBuilder, FScreenPassViewInfo ViewInfo, FRDGTextureRef InputTexture, FRDGTextureRef OutputTexture, FIntPoint InputPosition, FIntPoint InputSize, FIntPoint OutputPosition, FIntPoint OutputSize)
 
void AddDrawTexturePass (FRDGBuilder &GraphBuilder, FScreenPassViewInfo ViewInfo, FRDGTextureRef InputTexture, FRDGTextureRef OutputTexture, FIntRect ViewportRect)
 
void RENDERER_API AddDrawTexturePass (FRDGBuilder &GraphBuilder, FScreenPassViewInfo ViewInfo, FScreenPassTexture Input, FScreenPassRenderTarget Output, uint32 RTMultiviewCount=1)
 
void AddDrawTexturePass (FRDGBuilder &GraphBuilder, FScreenPassViewInfo ViewInfo, FScreenPassTexture Input, FScreenPassTexture Output)
 
void RENDERER_API AddDrawTexturePass (FRDGBuilder &GraphBuilder, FScreenPassViewInfo ViewInfo, FScreenPassTextureSlice Input, FScreenPassRenderTarget Output)
 
template<typename TFunction >
void AddRenderTargetPass (FRDGBuilder &GraphBuilder, FRDGEventName &&PassName, FScreenPassRenderTarget Output, TFunction &&Function)
 
template<typename TFunction >
void AddDrawCanvasPass (FRDGBuilder &GraphBuilder, FRDGEventName &&PassName, const FSceneView &View, FScreenPassRenderTarget Output, TFunction Function)
 
RENDERER_API void AddDownsampleDepthPass (FRDGBuilder &GraphBuilder, const FViewInfo &View, FScreenPassTexture Input, FScreenPassRenderTarget Output, EDownsampleDepthFilter DownsampleDepthFilter)
 

Enumeration Type Documentation

◆ EDownsampleDepthFilter

Enumerator
Point 
Max 
Checkerboard 
MinAndMaxDepth 
MinAndMaxDepthFromMinAndMaxDepth 

◆ EScreenPassDrawFlags

Enumerator
None 
AllowHMDHiddenAreaMask 

Function Documentation

◆ AddDownsampleDepthPass()

RENDERER_API void AddDownsampleDepthPass ( FRDGBuilder GraphBuilder,
const FViewInfo View,
FScreenPassTexture  Input,
FScreenPassRenderTarget  Output,
EDownsampleDepthFilter  DownsampleDepthFilter 
)

◆ AddDrawCanvasPass()

template<typename TFunction >
void AddDrawCanvasPass ( FRDGBuilder GraphBuilder,
FRDGEventName &&  PassName,
const FSceneView View,
FScreenPassRenderTarget  Output,
TFunction  Function 
)
inline

◆ AddDrawScreenPass() [1/7]

void AddDrawScreenPass ( FRDGBuilder GraphBuilder,
FRDGEventName &&  PassName,
FScreenPassViewInfo  ViewInfo,
const FScreenPassTextureViewport OutputViewport,
const FScreenPassTextureViewport InputViewport,
const FScreenPassPipelineState PipelineState,
TPassParameterStruct PassParameterStruct,
EScreenPassDrawFlags  Flags,
TSetupFunction  SetupFunction 
)
inline

Render graph variant of more advanced DrawScreenPass function. Does not clear unused graph resources, since the parameters might be shared between the vertex and pixel shaders.

◆ AddDrawScreenPass() [2/7]

void AddDrawScreenPass ( FRDGBuilder GraphBuilder,
FRDGEventName &&  PassName,
FScreenPassViewInfo  ViewInfo,
const FScreenPassTextureViewport OutputViewport,
const FScreenPassTextureViewport InputViewport,
const FScreenPassPipelineState PipelineState,
TPassParameterStruct PassParameterStruct,
TSetupFunction  SetupFunction 
)
inline

◆ AddDrawScreenPass() [3/7]

void AddDrawScreenPass ( FRDGBuilder GraphBuilder,
FRDGEventName &&  PassName,
FScreenPassViewInfo  ViewInfo,
const FScreenPassTextureViewport OutputViewport,
const FScreenPassTextureViewport InputViewport,
const TShaderRef< FShader > &  VertexShader,
const TShaderRef< PixelShaderType > &  PixelShader,
FRHIBlendState BlendState,
FRHIDepthStencilState DepthStencilState,
typename PixelShaderType::FParameters *  PixelShaderParameters,
EScreenPassDrawFlags  Flags = EScreenPassDrawFlags::None 
)
inline

Render graph variant of simpler DrawScreenPass function. Clears graph resources unused by the pixel shader prior to adding the pass.

◆ AddDrawScreenPass() [4/7]

void AddDrawScreenPass ( FRDGBuilder GraphBuilder,
FRDGEventName &&  PassName,
FScreenPassViewInfo  ViewInfo,
const FScreenPassTextureViewport OutputViewport,
const FScreenPassTextureViewport InputViewport,
const TShaderRef< FShader > &  VertexShader,
const TShaderRef< PixelShaderType > &  PixelShader,
FRHIBlendState BlendState,
typename PixelShaderType::FParameters *  PixelShaderParameters,
EScreenPassDrawFlags  Flags = EScreenPassDrawFlags::None 
)
inline

◆ AddDrawScreenPass() [5/7]

void AddDrawScreenPass ( FRDGBuilder GraphBuilder,
FRDGEventName &&  PassName,
FScreenPassViewInfo  ViewInfo,
const FScreenPassTextureViewport OutputViewport,
const FScreenPassTextureViewport InputViewport,
const TShaderRef< FShader > &  VertexShader,
const TShaderRef< PixelShaderType > &  PixelShader,
FRHIDepthStencilState DepthStencilState,
typename PixelShaderType::FParameters *  PixelShaderParameters,
EScreenPassDrawFlags  Flags = EScreenPassDrawFlags::None 
)
inline

◆ AddDrawScreenPass() [6/7]

void AddDrawScreenPass ( FRDGBuilder GraphBuilder,
FRDGEventName &&  PassName,
FScreenPassViewInfo  ViewInfo,
const FScreenPassTextureViewport OutputViewport,
const FScreenPassTextureViewport InputViewport,
const TShaderRef< FShader > &  VertexShader,
const TShaderRef< PixelShaderType > &  PixelShader,
typename PixelShaderType::FParameters *  PixelShaderParameters,
EScreenPassDrawFlags  Flags = EScreenPassDrawFlags::None 
)
inline

◆ AddDrawScreenPass() [7/7]

void AddDrawScreenPass ( FRDGBuilder GraphBuilder,
FRDGEventName &&  PassName,
FScreenPassViewInfo  ViewInfo,
const FScreenPassTextureViewport OutputViewport,
const FScreenPassTextureViewport InputViewport,
const TShaderRef< PixelShaderType > &  PixelShader,
typename PixelShaderType::FParameters *  PixelShaderParameters,
EScreenPassDrawFlags  Flags = EScreenPassDrawFlags::None 
)
inline

◆ AddDrawTexturePass() [1/6]

void RENDERER_API AddDrawTexturePass ( FRDGBuilder GraphBuilder,
FScreenPassViewInfo  ViewInfo,
FRDGTextureRef  InputTexture,
FRDGTextureRef  OutputTexture,
FIntPoint  InputPosition,
FIntPoint  InputSize,
FIntPoint  OutputPosition,
FIntPoint  OutputSize 
)

◆ AddDrawTexturePass() [2/6]

void RENDERER_API AddDrawTexturePass ( FRDGBuilder GraphBuilder,
FScreenPassViewInfo  ViewInfo,
FRDGTextureRef  InputTexture,
FRDGTextureRef  OutputTexture,
FIntPoint  InputPosition = FIntPoint::ZeroValue,
FIntPoint  OutputPosition = FIntPoint::ZeroValue,
FIntPoint  Size = FIntPoint::ZeroValue 
)

Helper function which copies a region of an input texture to a region of the output texture, with support for format conversion. If formats match, the method falls back to a simple DMA (CopyTexture); otherwise, it rasterizes using a pixel shader. Use this method if the two textures may have different formats.

◆ AddDrawTexturePass() [3/6]

void AddDrawTexturePass ( FRDGBuilder GraphBuilder,
FScreenPassViewInfo  ViewInfo,
FRDGTextureRef  InputTexture,
FRDGTextureRef  OutputTexture,
FIntRect  ViewportRect 
)
inline

Helper variant which takes a shared viewport instead of unique input / output positions.

◆ AddDrawTexturePass() [4/6]

void RENDERER_API AddDrawTexturePass ( FRDGBuilder GraphBuilder,
FScreenPassViewInfo  ViewInfo,
FScreenPassTexture  Input,
FScreenPassRenderTarget  Output,
uint32  RTMultiviewCount = 1 
)

◆ AddDrawTexturePass() [5/6]

void AddDrawTexturePass ( FRDGBuilder GraphBuilder,
FScreenPassViewInfo  ViewInfo,
FScreenPassTexture  Input,
FScreenPassTexture  Output 
)
inline

◆ AddDrawTexturePass() [6/6]

void RENDERER_API AddDrawTexturePass ( FRDGBuilder GraphBuilder,
FScreenPassViewInfo  ViewInfo,
FScreenPassTextureSlice  Input,
FScreenPassRenderTarget  Output 
)

Variation of above that accepts a slice, which contains a texture SRV instead of a texture

◆ AddRenderTargetPass()

template<typename TFunction >
void AddRenderTargetPass ( FRDGBuilder GraphBuilder,
FRDGEventName &&  PassName,
FScreenPassRenderTarget  Output,
TFunction &&  Function 
)
inline

◆ DrawScreenPass()

void DrawScreenPass ( FRHICommandList RHICmdList,
FScreenPassViewInfo  ViewInfo,
const FScreenPassTextureViewport OutputViewport,
const FScreenPassTextureViewport InputViewport,
const FScreenPassPipelineState PipelineState,
EScreenPassDrawFlags  Flags,
TSetupFunction  SetupFunction 
)

More advanced variant of screen pass drawing. Supports overriding blend / depth stencil pipeline state, and providing a custom vertex shader. Shader parameters are not bound by this method, instead the user provides a setup function that is called prior to draw, but after setting the PSO. This setup function should assign shader parameters.

◆ DrawScreenPass_PostSetup()

RENDERER_API void DrawScreenPass_PostSetup ( FRHICommandList RHICmdList,
const FScreenPassViewInfo ViewInfo,
const FScreenPassTextureViewport OutputViewport,
const FScreenPassTextureViewport InputViewport,
const FScreenPassPipelineState PipelineState,
EScreenPassDrawFlags  Flags 
)

◆ ENUM_CLASS_FLAGS()

ENUM_CLASS_FLAGS ( EScreenPassDrawFlags  )

◆ GetDownscaledExtent()

FIntPoint GetDownscaledExtent ( FIntPoint  Extent,
FIntPoint  Divisor 
)
inline

◆ GetDownscaledRect()

FIntRect GetDownscaledRect ( FIntRect  Rect,
FIntPoint  Divisor 
)
inline

◆ GetDownscaledViewport()

FScreenPassTextureViewport GetDownscaledViewport ( FScreenPassTextureViewport  Viewport,
FIntPoint  Divisor 
)
inline

◆ GetMiniFontTexture()

FRHITexture * GetMiniFontTexture ( )

◆ GetRectFromExtent()

FIntRect GetRectFromExtent ( FIntPoint  Extent)
inline

◆ GetScaledExtent() [1/2]

FIntPoint GetScaledExtent ( FIntPoint  Extent,
float  Multiplier 
)
inline

◆ GetScaledExtent() [2/2]

FIntPoint GetScaledExtent ( FIntPoint  Extent,
FVector2D  Multiplier 
)
inline

◆ GetScaledRect() [1/2]

FIntRect GetScaledRect ( FIntRect  Rect,
float  Multiplier 
)
inline

◆ GetScaledRect() [2/2]

FIntRect GetScaledRect ( FIntRect  Rect,
FVector2D  Multiplier 
)
inline

◆ GetScaledViewport()

FScreenPassTextureViewport GetScaledViewport ( FScreenPassTextureViewport  Viewport,
FVector2D  Multiplier 
)
inline

◆ GetScreenPassTextureInput() [1/2]

FScreenPassTextureInput GetScreenPassTextureInput ( FScreenPassTexture  Input,
FRHISamplerState Sampler 
)
inline

◆ GetScreenPassTextureInput() [2/2]

FScreenPassTextureSliceInput GetScreenPassTextureInput ( FScreenPassTextureSlice  Input,
FRHISamplerState Sampler 
)
inline

◆ GetScreenPassTextureViewportParameters()

FScreenPassTextureViewportParameters RENDERER_API GetScreenPassTextureViewportParameters ( const FScreenPassTextureViewport InViewport)

◆ IsHMDHiddenAreaMaskActive()

RENDERER_API bool IsHMDHiddenAreaMaskActive ( )

◆ SetScreenPassPipelineState()

void RENDERER_API SetScreenPassPipelineState ( FRHICommandList RHICmdList,
const FScreenPassPipelineState ScreenPassDraw 
)

◆ TryCreateViewFamilyDepthTexture()

FRDGTextureRef RENDERER_API TryCreateViewFamilyDepthTexture ( FRDGBuilder GraphBuilder,
const FSceneViewFamily ViewFamily 
)

◆ TryCreateViewFamilyTexture()

FRDGTextureRef RENDERER_API TryCreateViewFamilyTexture ( FRDGBuilder GraphBuilder,
const FSceneViewFamily ViewFamily 
)