UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FFXSystemInterface Class Referenceabstract

#include <FXSystem.h>

+ Inheritance diagram for FFXSystemInterface:

Public Member Functions

virtual FFXSystemInterfaceGetInterface (const FName &InName)
 
virtual void OnMarkPendingKill ()
 
virtual void DestroyGPUSimulation ()
 
virtual void Tick (UWorld *World, float DeltaSeconds)=0
 
virtual void DrawDebug (FCanvas *Canvas)=0
 
virtual bool ShouldDebugDraw_RenderThread () const
 
virtual void DrawDebug_RenderThread (FRDGBuilder &GraphBuilder, const FSceneView &View, const struct FScreenPassRenderTarget &Output)
 
void DrawDebug_RenderThread (FRDGBuilder &GraphBuilder, const FViewInfo &View, const struct FScreenPassRenderTarget &Output)
 
virtual void DrawSceneDebug_RenderThread (FRDGBuilder &GraphBuilder, const FSceneView &View, FRDGTextureRef SceneColor, FRDGTextureRef SceneDepth)
 
void DrawSceneDebug_RenderThread (FRDGBuilder &GraphBuilder, const FViewInfo &View, FRDGTextureRef SceneColor, FRDGTextureRef SceneDepth)
 
virtual void AddVectorField (UVectorFieldComponent *VectorFieldComponent)=0
 
virtual void RemoveVectorField (UVectorFieldComponent *VectorFieldComponent)=0
 
virtual void UpdateVectorField (UVectorFieldComponent *VectorFieldComponent)=0
 
virtual void PreInitViews (FRDGBuilder &GraphBuilder, bool bAllowGPUParticleUpdate, const TArrayView< const FSceneViewFamily * > &ViewFamilies, const FSceneViewFamily *CurrentFamily)=0
 
virtual void PostInitViews (FRDGBuilder &GraphBuilder, TConstStridedView< FSceneView > Views, bool bAllowGPUParticleUpdate)=0
 
void PostInitViews (FRDGBuilder &GraphBuilder, TConstArrayView< FViewInfo > Views, bool bAllowGPUParticleUpdate)
 
virtual bool UsesGlobalDistanceField () const =0
 
virtual bool UsesDepthBuffer () const =0
 
virtual bool RequiresEarlyViewUniformBuffer () const =0
 
virtual bool RequiresRayTracingScene () const =0
 
virtual void PreRender (FRDGBuilder &GraphBuilder, TConstStridedView< FSceneView > Views, FSceneUniformBuffer &SceneUniformBuffer, bool bAllowGPUParticleUpdate)=0
 
void PreRender (FRDGBuilder &GraphBuilder, TConstArrayView< FViewInfo > Views, bool bAllowGPUParticleUpdate)
 
virtual void PostRenderOpaque (FRDGBuilder &GraphBuilder, TConstStridedView< FSceneView > Views, FSceneUniformBuffer &SceneUniformBuffer, bool bAllowGPUParticleUpdate)=0
 
void PostRenderOpaque (FRDGBuilder &GraphBuilder, TConstArrayView< FViewInfo > Views, bool bAllowGPUParticleUpdate)
 
bool IsPendingKill () const
 
virtual FGPUSortManagerGetGPUSortManager () const =0
 
virtual void SetSceneTexturesUniformBuffer (const TUniformBufferRef< FSceneTextureUniformParameters > &InSceneTexturesUniformParams)
 
FSceneInterfaceGetSceneInterface () const
 
void SetSceneInterface (FSceneInterface *InSceneInterface)
 
FSceneGetScene () const
 
void SetScene (FScene *InScene)
 
- Public Member Functions inherited from TSharedFromThis< FFXSystemInterface >
TSharedRef< FFXSystemInterface, Mode > AsShared ()
 
TSharedRef< FFXSystemInterface const, Mode > AsShared () const
 
TSharedRef< SubobjectType, Mode > AsSharedSubobject (SubobjectType *SubobjectPtr) const
 
TWeakPtr< FFXSystemInterface, Mode > AsWeak ()
 
TWeakPtr< FFXSystemInterface const, Mode > AsWeak () const
 
TWeakPtr< SubobjectType, Mode > AsWeakSubobject (SubobjectType *SubobjectPtr) const
 
void UpdateWeakReferenceInternal (TSharedPtr< SharedPtrType, SharedPtrMode > const *InSharedPtr, OtherType *InObject) const
 
void UpdateWeakReferenceInternal (TSharedRef< SharedRefType, SharedPtrMode > const *InSharedRef, OtherType *InObject) const
 
UE_FORCEINLINE_HINT bool DoesSharedInstanceExist () const
 

Static Public Member Functions

static ENGINE_API FFXSystemInterfaceCreate (ERHIFeatureLevel::Type InFeatureLevel, FSceneInterface *Scene)
 
static ENGINE_API void MarkPendingKill (FFXSystemInterface *FXSystem)
 
static ENGINE_API void QueueDestroyGPUSimulation (FFXSystemInterface *FXSystem)
 
static ENGINE_API void RegisterCustomFXSystem (const FName &InterfaceName, const FCreateCustomFXSystemDelegate &InCreateDelegate)
 
static ENGINE_API void UnregisterCustomFXSystem (const FName &InterfaceName)
 
static ENGINE_API void Destroy (FFXSystemInterface *FXSystem)
 

Protected Member Functions

virtual void OnDestroy () final
 
virtual ~FFXSystemInterface ()
 
- Protected Member Functions inherited from TSharedFromThis< FFXSystemInterface >
 TSharedFromThis ()
 
 TSharedFromThis (TSharedFromThis const &)
 
UE_FORCEINLINE_HINT TSharedFromThisoperator= (TSharedFromThis const &)
 
 ~TSharedFromThis ()
 

Friends

class FFXSystemSet
 

Additional Inherited Members

- Static Protected Member Functions inherited from TSharedFromThis< FFXSystemInterface >
static UE_FORCEINLINE_HINT TSharedRef< OtherType, Mode > SharedThis (OtherType *ThisPtr)
 
static UE_FORCEINLINE_HINT TSharedRef< OtherType const, Mode > SharedThis (const OtherType *ThisPtr)
 

Detailed Description

The interface to an effects system.

Constructor & Destructor Documentation

◆ ~FFXSystemInterface()

virtual FFXSystemInterface::~FFXSystemInterface ( )
inlineprotectedvirtual

By making the destructor protected, an instance must be destroyed via FFXSystemInterface::Destroy.

Member Function Documentation

◆ AddVectorField()

virtual void FFXSystemInterface::AddVectorField ( UVectorFieldComponent VectorFieldComponent)
pure virtual

Add a vector field to the FX system.

Parameters
VectorFieldComponentThe vector field component to add.

Implemented in FFXSystem, and FFXSystemSet.

◆ Create()

FFXSystemInterface * FFXSystemInterface::Create ( ERHIFeatureLevel::Type  InFeatureLevel,
FSceneInterface Scene 
)
static

Create an effects system instance.

◆ Destroy()

void FFXSystemInterface::Destroy ( FFXSystemInterface FXSystem)
static

◆ DestroyGPUSimulation()

virtual void FFXSystemInterface::DestroyGPUSimulation ( )
inlinevirtual

Gamethread callback when destroy gets called, allows to clean up references.

Reimplemented in FFXSystemSet.

◆ DrawDebug()

virtual void FFXSystemInterface::DrawDebug ( FCanvas Canvas)
pure virtual

Draw desired debug information related to the effects system.

Parameters
CanvasThe canvas on which to draw.

Implemented in FFXSystem, and FFXSystemSet.

◆ DrawDebug_RenderThread() [1/2]

virtual void FFXSystemInterface::DrawDebug_RenderThread ( FRDGBuilder GraphBuilder,
const FSceneView View,
const struct FScreenPassRenderTarget Output 
)
inlinevirtual

Draw desired debug information related to the effects system on the render thread. This is called at the end of the rendering when

Parameters
GraphBuilderRender Graph Builder to use
ViewThe view we are rendering for
OutputThe output buffer information

Reimplemented in FFXSystemSet.

◆ DrawDebug_RenderThread() [2/2]

void FFXSystemInterface::DrawDebug_RenderThread ( FRDGBuilder GraphBuilder,
const FViewInfo View,
const struct FScreenPassRenderTarget Output 
)
inline

◆ DrawSceneDebug_RenderThread() [1/2]

virtual void FFXSystemInterface::DrawSceneDebug_RenderThread ( FRDGBuilder GraphBuilder,
const FSceneView View,
FRDGTextureRef  SceneColor,
FRDGTextureRef  SceneDepth 
)
inlinevirtual

Call to handle debug drawing to the scene (i.e. where depth is available)

Reimplemented in FFXSystemSet.

◆ DrawSceneDebug_RenderThread() [2/2]

void FFXSystemInterface::DrawSceneDebug_RenderThread ( FRDGBuilder GraphBuilder,
const FViewInfo View,
FRDGTextureRef  SceneColor,
FRDGTextureRef  SceneDepth 
)
inline

◆ GetGPUSortManager()

virtual FGPUSortManager * FFXSystemInterface::GetGPUSortManager ( ) const
pure virtual

Get the shared SortManager, used in the rendering loop to call FGPUSortManager::OnPreRender() and FGPUSortManager::OnPostRenderOpaque()

Implemented in FFXSystem, and FFXSystemSet.

◆ GetInterface()

virtual FFXSystemInterface * FFXSystemInterface::GetInterface ( const FName InName)
inlinevirtual

Return the interface bound to the given name.

Reimplemented in FFXSystem, and FFXSystemSet.

◆ GetScene()

FScene * FFXSystemInterface::GetScene ( ) const
inline

◆ GetSceneInterface()

FSceneInterface * FFXSystemInterface::GetSceneInterface ( ) const
inline

◆ IsPendingKill()

bool FFXSystemInterface::IsPendingKill ( ) const
inline

◆ MarkPendingKill()

void FFXSystemInterface::MarkPendingKill ( FFXSystemInterface FXSystem)
static

Notify the effect system instance that it should release resources in preperation for destruction. Once the interface is marked pending kill using the interface is undefined, as the scene (for example) may be invalid. The destruction of the instance will happen later on the render thread, and may be much later due to shared references to the interface.

◆ OnDestroy()

virtual void FFXSystemInterface::OnDestroy ( )
inlinefinalprotectedvirtual

◆ OnMarkPendingKill()

virtual void FFXSystemInterface::OnMarkPendingKill ( )
inlinevirtual

Gamethread callback when MarkPendingKill is called, allows to clean up references. Once marked pending kill the interface can release resources and is in an undefined state.

Reimplemented in FFXSystem, and FFXSystemSet.

◆ PostInitViews() [1/2]

void FFXSystemInterface::PostInitViews ( FRDGBuilder GraphBuilder,
TConstArrayView< FViewInfo Views,
bool  bAllowGPUParticleUpdate 
)
inline

◆ PostInitViews() [2/2]

virtual void FFXSystemInterface::PostInitViews ( FRDGBuilder GraphBuilder,
TConstStridedView< FSceneView Views,
bool  bAllowGPUParticleUpdate 
)
pure virtual

Implemented in FFXSystem, and FFXSystemSet.

◆ PostRenderOpaque() [1/2]

void FFXSystemInterface::PostRenderOpaque ( FRDGBuilder GraphBuilder,
TConstArrayView< FViewInfo Views,
bool  bAllowGPUParticleUpdate 
)
inline

◆ PostRenderOpaque() [2/2]

virtual void FFXSystemInterface::PostRenderOpaque ( FRDGBuilder GraphBuilder,
TConstStridedView< FSceneView Views,
FSceneUniformBuffer SceneUniformBuffer,
bool  bAllowGPUParticleUpdate 
)
pure virtual

Notification from the renderer that opaque primitives have rendered.

Implemented in FFXSystemSet, and FFXSystem.

◆ PreInitViews()

virtual void FFXSystemInterface::PreInitViews ( FRDGBuilder GraphBuilder,
bool  bAllowGPUParticleUpdate,
const TArrayView< const FSceneViewFamily * > &  ViewFamilies,
const FSceneViewFamily CurrentFamily 
)
pure virtual

Notification from the renderer that it is about to perform visibility checks on FX belonging to this system.

Implemented in FFXSystem, and FFXSystemSet.

◆ PreRender() [1/2]

void FFXSystemInterface::PreRender ( FRDGBuilder GraphBuilder,
TConstArrayView< FViewInfo Views,
bool  bAllowGPUParticleUpdate 
)
inline

◆ PreRender() [2/2]

virtual void FFXSystemInterface::PreRender ( FRDGBuilder GraphBuilder,
TConstStridedView< FSceneView Views,
FSceneUniformBuffer SceneUniformBuffer,
bool  bAllowGPUParticleUpdate 
)
pure virtual

Notification from the renderer that it is about to draw FX belonging to this system.

Implemented in FFXSystemSet, and FFXSystem.

◆ QueueDestroyGPUSimulation()

void FFXSystemInterface::QueueDestroyGPUSimulation ( FFXSystemInterface FXSystem)
static

Queue Destroy the gpu simulation on the render thread

◆ RegisterCustomFXSystem()

void FFXSystemInterface::RegisterCustomFXSystem ( const FName InterfaceName,
const FCreateCustomFXSystemDelegate InCreateDelegate 
)
static

Register a custom FX system implementation.

◆ RemoveVectorField()

virtual void FFXSystemInterface::RemoveVectorField ( UVectorFieldComponent VectorFieldComponent)
pure virtual

Remove a vector field from the FX system.

Parameters
VectorFieldComponentThe vector field component to remove.

Implemented in FFXSystem, and FFXSystemSet.

◆ RequiresEarlyViewUniformBuffer()

virtual bool FFXSystemInterface::RequiresEarlyViewUniformBuffer ( ) const
pure virtual

Implemented in FFXSystem, and FFXSystemSet.

◆ RequiresRayTracingScene()

virtual bool FFXSystemInterface::RequiresRayTracingScene ( ) const
pure virtual

Implemented in FFXSystem, and FFXSystemSet.

◆ SetScene()

void FFXSystemInterface::SetScene ( FScene InScene)
inline

◆ SetSceneInterface()

void FFXSystemInterface::SetSceneInterface ( FSceneInterface InSceneInterface)
inline

◆ SetSceneTexturesUniformBuffer()

virtual void FFXSystemInterface::SetSceneTexturesUniformBuffer ( const TUniformBufferRef< FSceneTextureUniformParameters > &  InSceneTexturesUniformParams)
inlinevirtual

Reimplemented in FFXSystem, and FFXSystemSet.

◆ ShouldDebugDraw_RenderThread()

virtual bool FFXSystemInterface::ShouldDebugDraw_RenderThread ( ) const
inlinevirtual

Does the FX system require DrawDebug_RenderThread to be called at all? There is cost to enabling this so only return true when we have something to present.

Reimplemented in FFXSystemSet.

◆ Tick()

virtual void FFXSystemInterface::Tick ( UWorld World,
float  DeltaSeconds 
)
pure virtual

Tick the effects system.

Parameters
DeltaSecondsThe number of seconds by which to step simulations forward.

Implemented in FFXSystem, and FFXSystemSet.

◆ UnregisterCustomFXSystem()

void FFXSystemInterface::UnregisterCustomFXSystem ( const FName InterfaceName)
static

Unregister a custom FX system implementation.

◆ UpdateVectorField()

virtual void FFXSystemInterface::UpdateVectorField ( UVectorFieldComponent VectorFieldComponent)
pure virtual

Update a vector field registered with the FX system.

Parameters
VectorFieldComponentThe vector field component to update.

Implemented in FFXSystem, and FFXSystemSet.

◆ UsesDepthBuffer()

virtual bool FFXSystemInterface::UsesDepthBuffer ( ) const
pure virtual

Implemented in FFXSystem, and FFXSystemSet.

◆ UsesGlobalDistanceField()

virtual bool FFXSystemInterface::UsesGlobalDistanceField ( ) const
pure virtual

Implemented in FFXSystem, and FFXSystemSet.

Friends And Related Symbol Documentation

◆ FFXSystemSet

friend class FFXSystemSet
friend

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