UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ParticleSystemRender.cpp File Reference

Classes

class  FDynamicSpriteCollectorResources
 
class  FDynamicMeshEmitterCollectorResources
 
class  FMeshParticleInstanceVertices
 
class  FDynamicBeamTrailCollectorResources
 
struct  FAnimTrailParticleRenderData
 

Functions

 DECLARE_CYCLE_STAT (TEXT("DynamicSpriteEmitterData GetDynamicMeshElementsEmitter GetParticleOrderData RT"), STAT_FDynamicSpriteEmitterData_GetDynamicMeshElementsEmitter_GetParticleOrderData, STATGROUP_Particles)
 
 DECLARE_CYCLE_STAT (TEXT("DynamicSpriteEmitterData PerParticleWorkOrTasks RT"), STAT_FDynamicSpriteEmitterData_PerParticleWorkOrTasks, STATGROUP_Particles)
 
 DECLARE_CYCLE_STAT (TEXT("DynamicSpriteEmitterData GetDynamicMeshElementsEmitter Task RT"), STAT_FDynamicSpriteEmitterData_GetDynamicMeshElementsEmitter_Task, STATGROUP_Particles)
 
void ComputeLockedAxes (EParticleAxisLock LockAxisFlag, const FMatrix &LocalToWorld, FVector &CameraUp, FVector &CameraRight)
 
FORCEINLINE FVector GetCameraOffset (float CameraPayloadOffset, FVector DirToCamera)
 
FORCEINLINE FVector GetCameraOffsetFromPayload (int32 InCameraPayloadOffset, const FBaseParticle &InParticle, const FVector &InParticlePosition, const FVector &InCameraPosition)
 
FVector2D GetParticleSize (const FBaseParticle &Particle, const FDynamicSpriteEmitterReplayDataBase &Source)
 
void ApplyOrbitToPosition (const FBaseParticle &Particle, const FDynamicSpriteEmitterReplayDataBase &Source, const FMatrix &InLocalToWorld, FVector &ParticlePosition, FVector &ParticleOldPosition)
 
void GatherParticleLightData (const FDynamicSpriteEmitterReplayDataBase &Source, const FMatrix &InLocalToWorld, const FSceneViewFamily &InViewFamily, FSimpleLightArray &OutParticleLights)
 
void InitMeshParticleVertexFactoryComponents (FMeshParticleVertexFactory *InVertexFactory, const FStaticMeshLODResources &LODResources, FMeshParticleVertexFactory::FDataType &Data)
 
FParticleBeamTrailUniformBufferRef CreateBeamTrailUniformBuffer (const FParticleSystemSceneProxy *Proxy, const FDynamicSpriteEmitterReplayDataBase *SourceData, const FSceneView *View)
 

Variables

float GTimeBetweenParticleRenderStatCaptures = 5.0f
 
float GMinParticleDrawTimeToTrack = .0001f
 
float GCatmullRomEndParamOffset = 0.1f
 

Function Documentation

◆ ApplyOrbitToPosition()

void ApplyOrbitToPosition ( const FBaseParticle Particle,
const FDynamicSpriteEmitterReplayDataBase Source,
const FMatrix InLocalToWorld,
FVector ParticlePosition,
FVector ParticleOldPosition 
)

◆ ComputeLockedAxes()

void ComputeLockedAxes ( EParticleAxisLock  LockAxisFlag,
const FMatrix LocalToWorld,
FVector CameraUp,
FVector CameraRight 
)

Retrieve the appropriate camera Up and Right vectors for LockAxis situations

Parameters
LockAxisFlagThe lock axis flag to compute camera vectors for.
LocalToWorldThe local-to-world transform for the emitter (identify unless the emitter is rendering in local space).
CameraUpOUTPUT - the resulting camera Up vector
CameraRightOUTPUT - the resulting camera Right vector

◆ CreateBeamTrailUniformBuffer()

FParticleBeamTrailUniformBufferRef CreateBeamTrailUniformBuffer ( const FParticleSystemSceneProxy Proxy,
const FDynamicSpriteEmitterReplayDataBase SourceData,
const FSceneView View 
)

◆ DECLARE_CYCLE_STAT() [1/3]

DECLARE_CYCLE_STAT ( TEXT("DynamicSpriteEmitterData GetDynamicMeshElementsEmitter GetParticleOrderData RT" ,
STAT_FDynamicSpriteEmitterData_GetDynamicMeshElementsEmitter_GetParticleOrderData  ,
STATGROUP_Particles   
)

◆ DECLARE_CYCLE_STAT() [2/3]

DECLARE_CYCLE_STAT ( TEXT("DynamicSpriteEmitterData GetDynamicMeshElementsEmitter Task RT" ,
STAT_FDynamicSpriteEmitterData_GetDynamicMeshElementsEmitter_Task  ,
STATGROUP_Particles   
)

◆ DECLARE_CYCLE_STAT() [3/3]

DECLARE_CYCLE_STAT ( TEXT("DynamicSpriteEmitterData PerParticleWorkOrTasks RT" ,
STAT_FDynamicSpriteEmitterData_PerParticleWorkOrTasks  ,
STATGROUP_Particles   
)

◆ GatherParticleLightData()

void GatherParticleLightData ( const FDynamicSpriteEmitterReplayDataBase Source,
const FMatrix InLocalToWorld,
const FSceneViewFamily InViewFamily,
FSimpleLightArray OutParticleLights 
)

◆ GetCameraOffset()

FORCEINLINE FVector GetCameraOffset ( float  CameraPayloadOffset,
FVector  DirToCamera 
)

◆ GetCameraOffsetFromPayload()

FORCEINLINE FVector GetCameraOffsetFromPayload ( int32  InCameraPayloadOffset,
const FBaseParticle InParticle,
const FVector InParticlePosition,
const FVector InCameraPosition 
)

Helper function for retrieving the camera offset payload of a particle.

Parameters
InCameraPayloadOffsetThe offset to the camera offset payload data.
InParticleThe particle being processed.
InPositionThe position of the particle being processed.
InCameraPositionThe position of the camera in local space.
Returns
the offset to apply to the particle's position.

◆ GetParticleSize()

FVector2D GetParticleSize ( const FBaseParticle Particle,
const FDynamicSpriteEmitterReplayDataBase Source 
)

◆ InitMeshParticleVertexFactoryComponents()

void InitMeshParticleVertexFactoryComponents ( FMeshParticleVertexFactory InVertexFactory,
const FStaticMeshLODResources LODResources,
FMeshParticleVertexFactory::FDataType Data 
)

Variable Documentation

◆ GCatmullRomEndParamOffset

float GCatmullRomEndParamOffset = 0.1f

◆ GMinParticleDrawTimeToTrack

float GMinParticleDrawTimeToTrack = .0001f

Minimum render time for a single DrawDynamicElements call that should be recorded.

◆ GTimeBetweenParticleRenderStatCaptures

float GTimeBetweenParticleRenderStatCaptures = 5.0f

Seconds between stat captures.