UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FCustomRenderPassBase Class Reference

#include <CustomRenderPass.h>

+ Inheritance diagram for FCustomRenderPassBase:

Public Types

enum class  ERenderMode : uint8 { DepthPass , DepthAndBasePass }
 
enum class  ERenderOutput : uint8 {
  SceneDepth , DeviceDepth , SceneColorAndDepth , SceneColorAndAlpha ,
  SceneColorNoAlpha , BaseColor , Normal , MAX
}
 
enum class  ERenderCaptureType { NoCapture , Capture , BeginCapture , EndCapture }
 

Public Member Functions

 FCustomRenderPassBase ()=delete
 
ENGINE_API FCustomRenderPassBase (const FString &InDebugName, ERenderMode InRenderMode, ERenderOutput InRenderOutput, const FIntPoint &InRenderTargetSize)
 
virtual ~FCustomRenderPassBase ()
 
ENGINE_API void BeginPass (FRDGBuilder &GraphBuilder)
 
ENGINE_API void PreRender (FRDGBuilder &GraphBuilder)
 
ENGINE_API void PostRender (FRDGBuilder &GraphBuilder)
 
ENGINE_API void EndPass (FRDGBuilder &GraphBuilder)
 
ENGINE_API ESceneCaptureSource GetSceneCaptureSource () const
 
ENGINE_API void PerformRenderCapture (ERenderCaptureType InRenderCaptureType, const FString &InFileName=FString())
 
const FString & GetDebugName () const
 
ERenderMode GetRenderMode () const
 
ERenderOutput GetRenderOutput () const
 
FRDGTextureRef GetRenderTargetTexture () const
 
const FIntPointGetRenderTargetSize () const
 
bool IsTranslucentIncluded () const
 
ENGINE_API void SetUserData (TUniquePtr< ICustomRenderPassUserData > &&InUserData)
 
ENGINE_API ICustomRenderPassUserDataGetUserData (const FName &InTypeName) const
 
template<typename UserDataType >
TEnableIf< TPointerIsConvertibleFromTo< UserDataType, ICustomRenderPassUserData >::Value, UserDataType >::Type * GetUserDataTyped () const
 
- Public Member Functions inherited from ICustomRenderPass
virtual ~ICustomRenderPass ()
 

Protected Member Functions

virtual void OnBeginPass (FRDGBuilder &GraphBuilder)
 
virtual void OnPreRender (FRDGBuilder &GraphBuilder)
 
virtual void OnPostRender (FRDGBuilder &GraphBuilder)
 
virtual void OnEndPass (FRDGBuilder &GraphBuilder)
 
void OverrideRenderOutput (ERenderOutput InRenderOutput)
 

Protected Attributes

FString DebugName
 
ERenderMode RenderMode = ERenderMode::DepthPass
 
ERenderOutput RenderOutput = ERenderOutput::SceneDepth
 
bool bSceneColorWithTranslucent = false
 
bool bSceneColorIsUserSceneTexture = false
 
FRDGTextureRef RenderTargetTexture = nullptr
 
FIntPoint RenderTargetSize = FIntPoint(ForceInit)
 
TArray< class FViewInfo * > Views
 
TMap< FName, TUniquePtr< ICustomRenderPassUserData > > UserDatas
 

Friends

class FSceneRenderer
 
class FDeferredShadingSceneRenderer
 

Additional Inherited Members

- Public Attributes inherited from ICustomRenderPass
virtual const FName &GetTypeName() const PURE_VIRTUAL(ICustomRenderPass return Name
 

Detailed Description

Base class of the custom render pass. Create a derived class to provide custom behavior. Custom render pass is rendered as part of the main render loop.

Member Enumeration Documentation

◆ ERenderCaptureType

Enumerator
NoCapture 

Don't trigger a render capture

Capture 

Start a render capture on PreRender, stop it on PostRender

BeginCapture 

Start a render capture on PreRender (this must be followed by another pass with EndCapture). Use it when the render capture encapsulates several custom passes

EndCapture 

Stop a render capture on PostRender (this must be preceded by another pass with BeginCapture). Use it when the render capture encapsulates several custom passes

◆ ERenderMode

Which render passes are needed for the custom render pass.

Enumerator
DepthPass 

Render depth pre-pass only.

DepthAndBasePass 

Render depth pre-pass and base pass.

◆ ERenderOutput

The output type into the render target. What type is valid depends on ERenderMode.

Enumerator
SceneDepth 

Used with ERenderMode::DepthPass.

DeviceDepth 
SceneColorAndDepth 

Used with ERenderMode::DepthAndBasePass.

SceneColorAndAlpha 
SceneColorNoAlpha 
BaseColor 
Normal 
MAX 

Constructor & Destructor Documentation

◆ FCustomRenderPassBase() [1/2]

FCustomRenderPassBase::FCustomRenderPassBase ( )
delete

◆ FCustomRenderPassBase() [2/2]

FCustomRenderPassBase::FCustomRenderPassBase ( const FString &  InDebugName,
ERenderMode  InRenderMode,
ERenderOutput  InRenderOutput,
const FIntPoint InRenderTargetSize 
)

◆ ~FCustomRenderPassBase()

virtual FCustomRenderPassBase::~FCustomRenderPassBase ( )
inlinevirtual

Member Function Documentation

◆ BeginPass()

void FCustomRenderPassBase::BeginPass ( FRDGBuilder GraphBuilder)

Called before PreRender on render thread (only really useful for properly scoping render capture names)

◆ EndPass()

void FCustomRenderPassBase::EndPass ( FRDGBuilder GraphBuilder)

Called after PostRender on render thread (only really useful for properly scoping render capture names)

◆ GetDebugName()

const FString & FCustomRenderPassBase::GetDebugName ( ) const
inline

◆ GetRenderMode()

ERenderMode FCustomRenderPassBase::GetRenderMode ( ) const
inline

◆ GetRenderOutput()

ERenderOutput FCustomRenderPassBase::GetRenderOutput ( ) const
inline

◆ GetRenderTargetSize()

const FIntPoint & FCustomRenderPassBase::GetRenderTargetSize ( ) const
inline

◆ GetRenderTargetTexture()

FRDGTextureRef FCustomRenderPassBase::GetRenderTargetTexture ( ) const
inline

◆ GetSceneCaptureSource()

ESceneCaptureSource FCustomRenderPassBase::GetSceneCaptureSource ( ) const

Convert output type into corresponding scene capture source type. This is because we use CopySceneCaptureComponentToTarget helper function to copy the custom render pass render result from scene texture into the pass's render target.

◆ GetUserData()

ICustomRenderPassUserData * FCustomRenderPassBase::GetUserData ( const FName InTypeName) const

◆ GetUserDataTyped()

template<typename UserDataType >
TEnableIf< TPointerIsConvertibleFromTo< UserDataType, ICustomRenderPassUserData >::Value, UserDataType >::Type * FCustomRenderPassBase::GetUserDataTyped ( ) const
inline

◆ IsTranslucentIncluded()

bool FCustomRenderPassBase::IsTranslucentIncluded ( ) const
inline

Returns true if translucency is enabled AND an output uses SceneColor. We can skip translucency if SceneColor (where translucency is written) is unused.

◆ OnBeginPass()

virtual void FCustomRenderPassBase::OnBeginPass ( FRDGBuilder GraphBuilder)
inlineprotectedvirtual

◆ OnEndPass()

virtual void FCustomRenderPassBase::OnEndPass ( FRDGBuilder GraphBuilder)
inlineprotectedvirtual

Reimplemented in FSceneCapturePass.

◆ OnPostRender()

virtual void FCustomRenderPassBase::OnPostRender ( FRDGBuilder GraphBuilder)
inlineprotectedvirtual

◆ OnPreRender()

virtual void FCustomRenderPassBase::OnPreRender ( FRDGBuilder GraphBuilder)
inlineprotectedvirtual

Reimplemented in FSceneCapturePass.

◆ OverrideRenderOutput()

void FCustomRenderPassBase::OverrideRenderOutput ( ERenderOutput  InRenderOutput)
inlineprotected

Used internally during scene render to generate multiple outputs from a single custom render pass

◆ PerformRenderCapture()

void FCustomRenderPassBase::PerformRenderCapture ( ERenderCaptureType  InRenderCaptureType,
const FString &  InFileName = FString() 
)

Perform a render capture when this pass runs if a render capture interface is registered

◆ PostRender()

void FCustomRenderPassBase::PostRender ( FRDGBuilder GraphBuilder)

Called after the pass is rendered on render thread, use it for post processing tasks such as applying additional shader effects to the render target.

◆ PreRender()

void FCustomRenderPassBase::PreRender ( FRDGBuilder GraphBuilder)

Called before the pass is rendered on render thread, use it for prep tasks such as allocating render target.

◆ SetUserData()

void FCustomRenderPassBase::SetUserData ( TUniquePtr< ICustomRenderPassUserData > &&  InUserData)

Friends And Related Symbol Documentation

◆ FDeferredShadingSceneRenderer

◆ FSceneRenderer

friend class FSceneRenderer
friend

Member Data Documentation

◆ bSceneColorIsUserSceneTexture

bool FCustomRenderPassBase::bSceneColorIsUserSceneTexture = false
protected

◆ bSceneColorWithTranslucent

bool FCustomRenderPassBase::bSceneColorWithTranslucent = false
protected

◆ DebugName

FString FCustomRenderPassBase::DebugName
protected

◆ RenderMode

ERenderMode FCustomRenderPassBase::RenderMode = ERenderMode::DepthPass
protected

◆ RenderOutput

ERenderOutput FCustomRenderPassBase::RenderOutput = ERenderOutput::SceneDepth
protected

◆ RenderTargetSize

FIntPoint FCustomRenderPassBase::RenderTargetSize = FIntPoint(ForceInit)
protected

◆ RenderTargetTexture

FRDGTextureRef FCustomRenderPassBase::RenderTargetTexture = nullptr
protected

◆ UserDatas

TMap<FName, TUniquePtr<ICustomRenderPassUserData> > FCustomRenderPassBase::UserDatas
protected

Optional user data providing a hook into the engine to override settings for this render pass. The user data should derive from ICustomRenderPassUserData and implement GetTypeName() to be retrieved. Use SetUserData/GetUserData

◆ Views

TArray<class FViewInfo*> FCustomRenderPassBase::Views
protected

The views created for the custom render pass.


The documentation for this class was generated from the following files: