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

#include <FXSystemPrivate.h>

+ Inheritance diagram for FFXSystem:

Public Member Functions

 FFXSystem (ERHIFeatureLevel::Type InFeatureLevel, EShaderPlatform InShaderPlatform, FGPUSortManager *InGPUSortManager)
 
virtual ~FFXSystem ()
 
virtual FFXSystemInterfaceGetInterface (const FName &InName) override
 
virtual void Tick (UWorld *World, float DeltaSeconds) override
 
virtual void OnMarkPendingKill () override
 
virtual void DrawDebug (FCanvas *Canvas) override
 
virtual void AddVectorField (UVectorFieldComponent *VectorFieldComponent) override
 
virtual void RemoveVectorField (UVectorFieldComponent *VectorFieldComponent) override
 
virtual void UpdateVectorField (UVectorFieldComponent *VectorFieldComponent) override
 
FParticleEmitterInstanceCreateGPUSpriteEmitterInstance (IParticleEmitterInstanceOwner &InComponent, FGPUSpriteEmitterInfo &EmitterInfo)
 
virtual void PreInitViews (class FRDGBuilder &GraphBuilder, bool bAllowGPUParticleUpdate, const TArrayView< const FSceneViewFamily * > &ViewFamilies, const FSceneViewFamily *CurrentFamily) override
 
virtual void PostInitViews (FRDGBuilder &GraphBuilder, TConstStridedView< FSceneView > Views, bool bAllowGPUParticleUpdate) override
 
virtual bool UsesGlobalDistanceField () const override
 
virtual bool UsesDepthBuffer () const override
 
virtual bool RequiresEarlyViewUniformBuffer () const override
 
virtual bool RequiresRayTracingScene () const override
 
virtual void PreRender (FRDGBuilder &GraphBuilder, TConstStridedView< FSceneView > Views, FSceneUniformBuffer &SceneUniformBuffer, bool bAllowGPUParticleUpdate) override
 
virtual void PostRenderOpaque (FRDGBuilder &GraphBuilder, TConstStridedView< FSceneView > Views, FSceneUniformBuffer &SceneUniformBuffer, bool bAllowGPUParticleUpdate) override
 
ERHIFeatureLevel::Type GetFeatureLevel () const
 
EShaderPlatform GetShaderPlatform () const
 
void AddGPUSimulation (FParticleSimulationGPU *Simulation)
 
void RemoveGPUSimulation (FParticleSimulationGPU *Simulation)
 
void OnSimulationPhaseChanged (const FParticleSimulationGPU *Simulation, EParticleSimulatePhase::Type PrevPhase)
 
FParticleSimulationResourcesGetParticleSimulationResources ()
 
bool AddSortedGPUSimulation (FRHICommandListBase &RHICmdList, FParticleSimulationGPU *Simulation, const FVector &ViewOrigin, bool bIsTranslucent, FGPUSortManager::FAllocationInfo &OutInfo)
 
void PrepareGPUSimulation (FRHICommandListImmediate &RHICmdList)
 
void FinalizeGPUSimulation (FRHICommandListImmediate &RHICmdList)
 
virtual FGPUSortManagerGetGPUSortManager () const override
 
virtual void SetSceneTexturesUniformBuffer (const TUniformBufferRef< FSceneTextureUniformParameters > &InSceneTexturesUniformParams) override
 
- Public Member Functions inherited from FFXSystemInterface
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)
 
void PostInitViews (FRDGBuilder &GraphBuilder, TConstArrayView< FViewInfo > Views, bool bAllowGPUParticleUpdate)
 
void PreRender (FRDGBuilder &GraphBuilder, TConstArrayView< FViewInfo > Views, bool bAllowGPUParticleUpdate)
 
void PostRenderOpaque (FRDGBuilder &GraphBuilder, TConstArrayView< FViewInfo > Views, bool bAllowGPUParticleUpdate)
 
bool IsPendingKill () const
 
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 Attributes

static const FName Name
 

Additional Inherited Members

- Static Public Member Functions inherited from FFXSystemInterface
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 inherited from FFXSystemInterface
virtual void OnDestroy () final
 
virtual ~FFXSystemInterface ()
 
- Protected Member Functions inherited from TSharedFromThis< FFXSystemInterface >
 TSharedFromThis ()
 
 TSharedFromThis (TSharedFromThis const &)
 
UE_FORCEINLINE_HINT TSharedFromThisoperator= (TSharedFromThis const &)
 
 ~TSharedFromThis ()
 
- 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

FX system.

Constructor & Destructor Documentation

◆ FFXSystem()

FFXSystem::FFXSystem ( ERHIFeatureLevel::Type  InFeatureLevel,
EShaderPlatform  InShaderPlatform,
FGPUSortManager InGPUSortManager 
)

Default constructoer.

◆ ~FFXSystem()

FFXSystem::~FFXSystem ( )
virtual

Destructor.

Member Function Documentation

◆ AddGPUSimulation()

void FFXSystem::AddGPUSimulation ( FParticleSimulationGPU Simulation)

Add a new GPU simulation to the system.

Parameters
SimulationThe GPU simulation to add.

◆ AddSortedGPUSimulation()

bool FFXSystem::AddSortedGPUSimulation ( FRHICommandListBase RHICmdList,
FParticleSimulationGPU Simulation,
const FVector ViewOrigin,
bool  bIsTranslucent,
FGPUSortManager::FAllocationInfo OutInfo 
)

Register work for GPU sorting (using the GPUSortManager). The initial keys and values are generated in the GenerateSortKeys() callback.

Parameters
SimulationThe simulation to be sorted.
ViewOriginThe origin of the view from which to sort.
bIsTranslucentWhether this is for sorting translucent particles or opaque particles, affect when the data is required for the rendering.
OutInfoThe bindings for this GPU sort task, if success.
Returns
true if the work was registered, or false it GPU sorting is not available or impossible.

◆ AddVectorField()

void FFXSystem::AddVectorField ( UVectorFieldComponent VectorFieldComponent)
overridevirtual

Add a vector field to the FX system.

Parameters
VectorFieldComponentThe vector field component to add.

Implements FFXSystemInterface.

◆ CreateGPUSpriteEmitterInstance()

FParticleEmitterInstance * FFXSystem::CreateGPUSpriteEmitterInstance ( IParticleEmitterInstanceOwner InComponent,
FGPUSpriteEmitterInfo EmitterInfo 
)

◆ DrawDebug()

void FFXSystem::DrawDebug ( FCanvas Canvas)
overridevirtual

Draw desired debug information related to the effects system.

Parameters
CanvasThe canvas on which to draw.

Implements FFXSystemInterface.

◆ FinalizeGPUSimulation()

void FFXSystem::FinalizeGPUSimulation ( FRHICommandListImmediate RHICmdList)

◆ GetFeatureLevel()

ERHIFeatureLevel::Type FFXSystem::GetFeatureLevel ( ) const
inline

Retrieve feature level that this FXSystem was created for

◆ GetGPUSortManager()

FGPUSortManager * FFXSystem::GetGPUSortManager ( ) const
overridevirtual

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

Implements FFXSystemInterface.

◆ GetInterface()

FFXSystemInterface * FFXSystem::GetInterface ( const FName InName)
overridevirtual

Return the interface bound to the given name.

Reimplemented from FFXSystemInterface.

◆ GetParticleSimulationResources()

FParticleSimulationResources * FFXSystem::GetParticleSimulationResources ( )
inline

Retrieve GPU particle rendering resources.

◆ GetShaderPlatform()

EShaderPlatform FFXSystem::GetShaderPlatform ( ) const
inline

Retrieve shaderplatform that this FXSystem was created for

◆ OnMarkPendingKill()

void FFXSystem::OnMarkPendingKill ( )
overridevirtual

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 from FFXSystemInterface.

◆ OnSimulationPhaseChanged()

void FFXSystem::OnSimulationPhaseChanged ( const FParticleSimulationGPU Simulation,
EParticleSimulatePhase::Type  PrevPhase 
)

Notifies the system that the SimulationPhase of a particular simulation has changed.

◆ PostInitViews()

void FFXSystem::PostInitViews ( FRDGBuilder GraphBuilder,
TConstStridedView< FSceneView Views,
bool  bAllowGPUParticleUpdate 
)
overridevirtual

Implements FFXSystemInterface.

◆ PostRenderOpaque()

void FFXSystem::PostRenderOpaque ( FRDGBuilder GraphBuilder,
TConstStridedView< FSceneView Views,
FSceneUniformBuffer SceneUniformBuffer,
bool  bAllowGPUParticleUpdate 
)
overridevirtual

Notification from the renderer that opaque primitives have rendered.

Implements FFXSystemInterface.

◆ PreInitViews()

void FFXSystem::PreInitViews ( class FRDGBuilder GraphBuilder,
bool  bAllowGPUParticleUpdate,
const TArrayView< const FSceneViewFamily * > &  ViewFamilies,
const FSceneViewFamily CurrentFamily 
)
overridevirtual

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

Implements FFXSystemInterface.

◆ PrepareGPUSimulation()

void FFXSystem::PrepareGPUSimulation ( FRHICommandListImmediate RHICmdList)

◆ PreRender()

void FFXSystem::PreRender ( FRDGBuilder GraphBuilder,
TConstStridedView< FSceneView Views,
FSceneUniformBuffer SceneUniformBuffer,
bool  bAllowGPUParticleUpdate 
)
overridevirtual

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

Implements FFXSystemInterface.

◆ RemoveGPUSimulation()

void FFXSystem::RemoveGPUSimulation ( FParticleSimulationGPU Simulation)

Remove an existing GPU simulation to the system.

Parameters
SimulationThe GPU simulation to remove.

◆ RemoveVectorField()

void FFXSystem::RemoveVectorField ( UVectorFieldComponent VectorFieldComponent)
overridevirtual

Remove a vector field from the FX system.

Parameters
VectorFieldComponentThe vector field component to remove.

Implements FFXSystemInterface.

◆ RequiresEarlyViewUniformBuffer()

bool FFXSystem::RequiresEarlyViewUniformBuffer ( ) const
overridevirtual

Implements FFXSystemInterface.

◆ RequiresRayTracingScene()

bool FFXSystem::RequiresRayTracingScene ( ) const
overridevirtual

Implements FFXSystemInterface.

◆ SetSceneTexturesUniformBuffer()

virtual void FFXSystem::SetSceneTexturesUniformBuffer ( const TUniformBufferRef< FSceneTextureUniformParameters > &  InSceneTexturesUniformParams)
inlineoverridevirtual

Reimplemented from FFXSystemInterface.

◆ Tick()

void FFXSystem::Tick ( UWorld World,
float  DeltaSeconds 
)
overridevirtual

Tick the effects system.

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

Implements FFXSystemInterface.

◆ UpdateVectorField()

void FFXSystem::UpdateVectorField ( UVectorFieldComponent VectorFieldComponent)
overridevirtual

Update a vector field registered with the FX system.

Parameters
VectorFieldComponentThe vector field component to update.

Implements FFXSystemInterface.

◆ UsesDepthBuffer()

bool FFXSystem::UsesDepthBuffer ( ) const
overridevirtual

Implements FFXSystemInterface.

◆ UsesGlobalDistanceField()

bool FFXSystem::UsesGlobalDistanceField ( ) const
overridevirtual

Implements FFXSystemInterface.

Member Data Documentation

◆ Name

const FName FFXSystem::Name
static

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