UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ParticleHelper.h File Reference
#include "Math/Quat.h"
#include "Math/RandomStream.h"
#include "Math/Vector4.h"
#include "ParticleVertexFactory.h"
#include "Particles/ParticlePerfStats.h"
#include "ParticleHelper.generated.h"

Go to the source code of this file.

Classes

struct  FBaseParticle
 
struct  FParticleSpriteVertex
 
struct  FParticleSpriteVertexNonInstanced
 
struct  FParticleVertexDynamicParameter
 
struct  FParticleBeamTrailVertex
 
struct  FParticleBeamTrailVertexDynamicParameter
 
struct  FMeshParticleInstanceVertex
 
struct  FMeshParticleInstanceVertexDynamicParameter
 
struct  FMeshParticleInstanceVertexPrevTransform
 
struct  FFullSubUVPayload
 
struct  FAttractorParticlePayload
 
struct  FLightParticlePayload
 
struct  FBeam2TypeDataPayload
 
struct  FBeamParticleSourceTargetPayloadData
 
struct  FBeamParticleSourceBranchPayloadData
 
struct  FBeamParticleModifierPayloadData
 
struct  FTrailsBaseTypeDataPayload
 
struct  FRibbonTypeDataPayload
 
struct  FAnimTrailTypeDataPayload
 
struct  FMeshRotationPayloadData
 
struct  FMeshMotionBlurPayloadData
 
struct  FLocationEmitterInstancePayload
 
class  TPreallocatedArrayProxy< ElementType >
 
struct  FModuleLocationBoneSocketParticlePayload
 
struct  FOrbitChainModuleInstancePayload
 
struct  FParticleSpawnPerUnitInstancePayload
 
struct  FParticleCollisionPayload
 
struct  FParticleCollisionInstancePayload
 
struct  FParticleEventInstancePayload
 
struct  FEmitterDynamicParameterPayload
 
struct  FCameraOffsetParticlePayload
 
struct  FParticleRandomSeedInstancePayload
 
struct  FParticleOrder
 
struct  FAsyncBufferFillData
 
struct  FParticleDataContainer
 
struct  FMacroUVOverride
 
struct  FDynamicEmitterReplayDataBase
 
struct  FDynamicEmitterDataBase
 
struct  FDynamicSpriteEmitterReplayDataBase
 
struct  FDynamicSpriteEmitterDataBase
 
struct  FDynamicSpriteEmitterReplayData
 
struct  FDynamicSpriteEmitterData
 
struct  FDynamicMeshEmitterReplayData
 
struct  FDynamicMeshEmitterData
 
struct  FDynamicBeam2EmitterReplayData
 
struct  FDynamicBeam2EmitterData
 
struct  FDynamicTrailsEmitterReplayData
 
struct  FDynamicRibbonEmitterReplayData
 
struct  FDynamicTrailsEmitterData
 
struct  FDynamicRibbonEmitterData
 
struct  FDynamicAnimTrailEmitterData
 
class  FParticleDynamicData
 
class  FNullDynamicParameterVertexBuffer
 
class  FParticleResetContext
 
struct  FParticleSystemCustomVersion
 

Namespaces

namespace  ERHIFeatureLevel
 

Macros

#define _ENABLE_PARTICLE_LOD_INGAME_
 
#define _PARTICLES_USE_PREFETCH_
 
#define PARTICLE_PREFETCH(Index)   FPlatformMisc::Prefetch( ParticleData, ParticleStride * ParticleIndices[Index] )
 
#define PARTICLE_INSTANCE_PREFETCH(Instance, Index)   FPlatformMisc::Prefetch( Instance->ParticleData, Instance->ParticleStride * Instance->ParticleIndices[Index] )
 
#define PARTICLE_OWNER_PREFETCH(Index)   FPlatformMisc::Prefetch( Owner->ParticleData, Owner->ParticleStride * Owner->ParticleIndices[Index] )
 
#define DECLARE_PARTICLE(Name, Address)    FBaseParticle& Name = *((FBaseParticle*) (Address));
 
#define DECLARE_PARTICLE_CONST(Name, Address)    const FBaseParticle& Name = *((const FBaseParticle*) (Address));
 
#define DECLARE_PARTICLE_PTR(Name, Address)    FBaseParticle* Name = (FBaseParticle*) (Address);
 
#define BEGIN_UPDATE_LOOP
 
#define END_UPDATE_LOOP
 
#define CONTINUE_UPDATE_LOOP
 
#define SPAWN_INIT
 
#define PARTICLE_ELEMENT(Type, Name)
 
#define KILL_CURRENT_PARTICLE
 
#define INDEX_TYPEDATAMODULE   (INDEX_NONE - 1)
 
#define INDEX_REQUIREDMODULE   (INDEX_NONE - 2)
 
#define INDEX_SPAWNMODULE   (INDEX_NONE - 3)
 
#define TRAIL_EMITTER_FLAG_FORCEKILL   0x00000000
 
#define TRAIL_EMITTER_FLAG_DEADTRAIL   0x10000000
 
#define TRAIL_EMITTER_FLAG_MIDDLE   0x20000000
 
#define TRAIL_EMITTER_FLAG_START   0x40000000
 
#define TRAIL_EMITTER_FLAG_END   0x80000000
 
#define TRAIL_EMITTER_FLAG_MASK   0xf0000000
 
#define TRAIL_EMITTER_PREV_MASK   0x0fffc000
 
#define TRAIL_EMITTER_PREV_SHIFT   14
 
#define TRAIL_EMITTER_NEXT_MASK   0x00003fff
 
#define TRAIL_EMITTER_NEXT_SHIFT   0
 
#define TRAIL_EMITTER_NULL_PREV   (TRAIL_EMITTER_PREV_MASK >> TRAIL_EMITTER_PREV_SHIFT)
 
#define TRAIL_EMITTER_NULL_NEXT   (TRAIL_EMITTER_NEXT_MASK >> TRAIL_EMITTER_NEXT_SHIFT)
 
#define TRAIL_EMITTER_CHECK_FLAG(val, mask, flag)   ((val & mask) == flag)
 
#define TRAIL_EMITTER_SET_FLAG(val, mask, flag)   ((val & ~mask) | flag)
 
#define TRAIL_EMITTER_GET_PREVNEXT(val, mask, shift)   ((val & mask) >> shift)
 
#define TRAIL_EMITTER_SET_PREVNEXT(val, mask, shift, setval)   ((val & ~mask) | ((setval << shift) & mask))
 
#define TRAIL_EMITTER_IS_START(index)   TRAIL_EMITTER_CHECK_FLAG(index, TRAIL_EMITTER_FLAG_MASK, TRAIL_EMITTER_FLAG_START)
 
#define TRAIL_EMITTER_SET_START(index)   TRAIL_EMITTER_SET_FLAG(index, TRAIL_EMITTER_FLAG_MASK, TRAIL_EMITTER_FLAG_START)
 
#define TRAIL_EMITTER_IS_END(index)   TRAIL_EMITTER_CHECK_FLAG(index, TRAIL_EMITTER_FLAG_MASK, TRAIL_EMITTER_FLAG_END)
 
#define TRAIL_EMITTER_SET_END(index)   TRAIL_EMITTER_SET_FLAG(index, TRAIL_EMITTER_FLAG_MASK, TRAIL_EMITTER_FLAG_END)
 
#define TRAIL_EMITTER_IS_MIDDLE(index)   TRAIL_EMITTER_CHECK_FLAG(index, TRAIL_EMITTER_FLAG_MASK, TRAIL_EMITTER_FLAG_MIDDLE)
 
#define TRAIL_EMITTER_SET_MIDDLE(index)   TRAIL_EMITTER_SET_FLAG(index, TRAIL_EMITTER_FLAG_MASK, TRAIL_EMITTER_FLAG_MIDDLE)
 
#define TRAIL_EMITTER_IS_ONLY(index)
 
#define TRAIL_EMITTER_SET_ONLY(index)   TRAIL_EMITTER_SET_FLAG(index, TRAIL_EMITTER_FLAG_MASK, TRAIL_EMITTER_FLAG_START)
 
#define TRAIL_EMITTER_IS_FORCEKILL(index)   TRAIL_EMITTER_CHECK_FLAG(index, TRAIL_EMITTER_FLAG_MASK, TRAIL_EMITTER_FLAG_FORCEKILL)
 
#define TRAIL_EMITTER_SET_FORCEKILL(index)   TRAIL_EMITTER_SET_FLAG(index, TRAIL_EMITTER_FLAG_MASK, TRAIL_EMITTER_FLAG_FORCEKILL)
 
#define TRAIL_EMITTER_IS_DEADTRAIL(index)   TRAIL_EMITTER_CHECK_FLAG(index, TRAIL_EMITTER_FLAG_MASK, TRAIL_EMITTER_FLAG_DEADTRAIL)
 
#define TRAIL_EMITTER_SET_DEADTRAIL(index)   TRAIL_EMITTER_SET_FLAG(index, TRAIL_EMITTER_FLAG_MASK, TRAIL_EMITTER_FLAG_DEADTRAIL)
 
#define TRAIL_EMITTER_IS_HEAD(index)   (TRAIL_EMITTER_IS_START(index) || TRAIL_EMITTER_IS_DEADTRAIL(index))
 
#define TRAIL_EMITTER_IS_HEADONLY(index)
 
#define TRAIL_EMITTER_GET_PREV(index)   TRAIL_EMITTER_GET_PREVNEXT(index, TRAIL_EMITTER_PREV_MASK, TRAIL_EMITTER_PREV_SHIFT)
 
#define TRAIL_EMITTER_SET_PREV(index, prev)   TRAIL_EMITTER_SET_PREVNEXT(index, TRAIL_EMITTER_PREV_MASK, TRAIL_EMITTER_PREV_SHIFT, prev)
 
#define TRAIL_EMITTER_GET_NEXT(index)   TRAIL_EMITTER_GET_PREVNEXT(index, TRAIL_EMITTER_NEXT_MASK, TRAIL_EMITTER_NEXT_SHIFT)
 
#define TRAIL_EMITTER_SET_NEXT(index, next)   TRAIL_EMITTER_SET_PREVNEXT(index, TRAIL_EMITTER_NEXT_MASK, TRAIL_EMITTER_NEXT_SHIFT, next)
 
#define BEAM2_TYPEDATA_LOCKED_MASK   0x80000000
 
#define BEAM2_TYPEDATA_LOCKED(x)   ((x & BEAM2_TYPEDATA_LOCKED_MASK) != 0)
 
#define BEAM2_TYPEDATA_SETLOCKED(x, Locked)   (x = Locked ? (x | BEAM2_TYPEDATA_LOCKED_MASK) : (x & ~BEAM2_TYPEDATA_LOCKED_MASK))
 
#define BEAM2_TYPEDATA_FREQUENCY_MASK   0x00fff000
 
#define BEAM2_TYPEDATA_FREQUENCY_SHIFT   12
 
#define BEAM2_TYPEDATA_FREQUENCY(x)   ((x & BEAM2_TYPEDATA_FREQUENCY_MASK) >> BEAM2_TYPEDATA_FREQUENCY_SHIFT)
 
#define BEAM2_TYPEDATA_SETFREQUENCY(x, Freq)   (x = ((x & ~BEAM2_TYPEDATA_FREQUENCY_MASK) | (Freq << BEAM2_TYPEDATA_FREQUENCY_SHIFT)))
 

Enumerations

enum  EParticleDetailMode : int {
  UMETA =(DisplayName = "Low") , UMETA =(DisplayName = "Low") , UMETA =(DisplayName = "Low") , UMETA =(DisplayName = "Low") ,
  UMETA =(DisplayName = "Low")
}
 
enum  EParticleStates {
  STATE_Particle_JustSpawned = 0x02000000 , STATE_Particle_Freeze = 0x04000000 , STATE_Particle_IgnoreCollisions = 0x08000000 , STATE_Particle_FreezeTranslation = 0x10000000 ,
  STATE_Particle_FreezeRotation = 0x20000000 , STATE_Particle_CollisionIgnoreCheck = STATE_Particle_Freeze |STATE_Particle_IgnoreCollisions | STATE_Particle_FreezeTranslation| STATE_Particle_FreezeRotation , STATE_Particle_DelayCollisions = 0x40000000 , STATE_Particle_CollisionHasOccurred = 0x80000000 ,
  STATE_Mask = 0xFE000000 , STATE_CounterMask = (~STATE_Mask)
}
 
enum  EDynamicEmitterType {
  DET_Unknown = 0 , DET_Sprite , DET_Mesh , DET_Beam2 ,
  DET_Ribbon , DET_AnimTrail , DET_Custom
}
 
enum class  EParticleSignificanceLevel : uint8 {
  Low , Medium , High , Critical ,
  UMETA =(Hidden)
}
 
enum class  EParticleSystemInsignificanceReaction : uint8 {
  Auto , Complete , DisableTick , UMETA =(Hidden) ,
  UMETA =(Hidden)
}
 

Functions

 DECLARE_LOG_CATEGORY_EXTERN (LogParticles, Log, All)
 
void Particle_SetColorFromVector (const FVector3f &InColorVec, const float InAlpha, FLinearColor &OutColor)
 
 DECLARE_STATS_GROUP (TEXT("ParticlesOverview"), STATGROUP_ParticlesOverview, STATCAT_Advanced)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("GT Total"), STAT_ParticlesOverview_GT, STATGROUP_ParticlesOverview,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("GT Concurrent Total"), STAT_ParticlesOverview_GT_CNC, STATGROUP_ParticlesOverview,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("RT Total"), STAT_ParticlesOverview_RT, STATGROUP_ParticlesOverview,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("RT Concurrent Total"), STAT_ParticlesOverview_RT_CNC, STATGROUP_ParticlesOverview,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Sprite Particles"), STAT_SpriteParticles, STATGROUP_Particles,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Sprite Ptcls Spawned"), STAT_SpriteParticlesSpawned, STATGROUP_Particles,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Sprite Ptcls Updated"), STAT_SpriteParticlesUpdated, STATGROUP_Particles,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Sprite Ptcls Killed"), STAT_SpriteParticlesKilled, STATGROUP_Particles,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Particle Draw Calls"), STAT_ParticleDrawCalls, STATGROUP_Particles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Sort Time RT"), STAT_SortingTime, STATGROUP_Particles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Sprite Render Time RT"), STAT_SpriteRenderingTime, STATGROUP_Particles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Sprite Tick Time GT"), STAT_SpriteTickTime, STATGROUP_Particles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Sprite Spawn Time GT"), STAT_SpriteSpawnTime, STATGROUP_Particles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("PSys Comp Tick Time GT"), STAT_PSysCompTickTime, STATGROUP_Particles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Particle Collision Time GT"), STAT_ParticleCollisionTime, STATGROUP_Particles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Particle SkelMeshSurf Time GT"), STAT_ParticleSkelMeshSurfTime, STATGROUP_Particles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Particle Pool Time RT"), STAT_ParticlePoolTime, STATGROUP_Particles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Particle Compute Time GT,AT"), STAT_ParticleComputeTickTime, STATGROUP_Particles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Particle Finalize Time GT"), STAT_ParticleFinalizeTickTime, STATGROUP_Particles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Particle GT Stall Time"), STAT_GTSTallTime, STATGROUP_Particles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Particle Render Time RT"), STAT_ParticleRenderingTime, STATGROUP_Particles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Particle Packing Time RT"), STAT_ParticlePackingTime, STATGROUP_Particles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("SetTemplate Time GT"), STAT_ParticleSetTemplateTime, STATGROUP_Particles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Initialize Time GT"), STAT_ParticleInitializeTime, STATGROUP_Particles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Activate Time GT"), STAT_ParticleActivateTime, STATGROUP_Particles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Async Work Time"), STAT_ParticleAsyncTime, STATGROUP_Particles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Wait For ASync Time"), STAT_ParticleAsyncWaitTime, STATGROUP_Particles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Update Bounds Time GT"), STAT_ParticleUpdateBounds, STATGROUP_Particles,)
 
 DECLARE_MEMORY_STAT_EXTERN (TEXT("Ptcls Data GT Mem"), STAT_GTParticleData, STATGROUP_ParticleMem,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Ptcls Data GT Mem MAX"), STAT_GTParticleData_MAX, STATGROUP_ParticleMem,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Ptcls Data RT Mem"), STAT_RTParticleData, STATGROUP_ParticleMem,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Ptcls Data RT Mem MAX"), STAT_RTParticleData_MAX, STATGROUP_ParticleMem,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Ptcls Data RT Largest"), STAT_RTParticleData_Largest, STATGROUP_ParticleMem,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Ptcls Data RT Largest MAX"), STAT_RTParticleData_Largest_MAX, STATGROUP_ParticleMem,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("DynPSysComp Mem"), STAT_DynamicPSysCompMem, STATGROUP_ParticleMem,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("DynPSysComp Mem MAX"), STAT_DynamicPSysCompMem_MAX, STATGROUP_ParticleMem,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("DynEmitter Mem"), STAT_DynamicEmitterMem, STATGROUP_ParticleMem,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("DynEmitter Mem MAX"), STAT_DynamicEmitterMem_MAX, STATGROUP_ParticleMem,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("DynEmitter GTMem Waste"), STAT_DynamicEmitterGTMem_Waste, STATGROUP_ParticleMem,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("DynEmitter GTMem Largest"), STAT_DynamicEmitterGTMem_Largest, STATGROUP_ParticleMem,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("DynEmitter GTMem Waste MAX"), STAT_DynamicEmitterGTMem_Waste_MAX, STATGROUP_ParticleMem,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("DynEmitter GTMem Largest MAX"), STAT_DynamicEmitterGTMem_Largest_MAX, STATGROUP_ParticleMem,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("DynPSysComp Count"), STAT_DynamicPSysCompCount, STATGROUP_ParticleMem,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("DynPSysComp Count MAX"), STAT_DynamicPSysCompCount_MAX, STATGROUP_ParticleMem,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("DynEmitter Count"), STAT_DynamicEmitterCount, STATGROUP_ParticleMem,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("DynEmitter Count Max"), STAT_DynamicEmitterCount_MAX, STATGROUP_ParticleMem,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("DynSprite Count"), STAT_DynamicSpriteCount, STATGROUP_ParticleMem,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("DynSprite Max"), STAT_DynamicSpriteCount_MAX, STATGROUP_ParticleMem,)
 
 DECLARE_MEMORY_STAT_EXTERN (TEXT("DynSprite GT Mem"), STAT_DynamicSpriteGTMem, STATGROUP_ParticleMem,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("DynSprite GT Mem Max"), STAT_DynamicSpriteGTMem_MAX, STATGROUP_ParticleMem,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("DynSubUV Count"), STAT_DynamicSubUVCount, STATGROUP_ParticleMem,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("DynSubUV Max"), STAT_DynamicSubUVCount_MAX, STATGROUP_ParticleMem,)
 
 DECLARE_MEMORY_STAT_EXTERN (TEXT("DynSubUV GT Mem"), STAT_DynamicSubUVGTMem, STATGROUP_ParticleMem,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("DynSubUV GT Mem Max"), STAT_DynamicSubUVGTMem_Max, STATGROUP_ParticleMem,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("DynMesh Count"), STAT_DynamicMeshCount, STATGROUP_ParticleMem,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("DynMesh Max"), STAT_DynamicMeshCount_MAX, STATGROUP_ParticleMem,)
 
 DECLARE_MEMORY_STAT_EXTERN (TEXT("DynMesh GT Mem"), STAT_DynamicMeshGTMem, STATGROUP_ParticleMem,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("DynMesh GT Mem Max"), STAT_DynamicMeshGTMem_MAX, STATGROUP_ParticleMem,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("DynBeam Count"), STAT_DynamicBeamCount, STATGROUP_ParticleMem,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("DynBeam Max"), STAT_DynamicBeamCount_MAX, STATGROUP_ParticleMem,)
 
 DECLARE_MEMORY_STAT_EXTERN (TEXT("DynBeam GT Mem"), STAT_DynamicBeamGTMem, STATGROUP_ParticleMem,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("DynBeam GT Mem Max"), STAT_DynamicBeamGTMem_MAX, STATGROUP_ParticleMem,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("DynRibbon Count"), STAT_DynamicRibbonCount, STATGROUP_ParticleMem,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("DynRibbon Max"), STAT_DynamicRibbonCount_MAX, STATGROUP_ParticleMem,)
 
 DECLARE_MEMORY_STAT_EXTERN (TEXT("DynRibbon GT Mem"), STAT_DynamicRibbonGTMem, STATGROUP_ParticleMem,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("DynRibbon GT Mem Max"), STAT_DynamicRibbonGTMem_MAX, STATGROUP_ParticleMem,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("DynAnimTrail Count"), STAT_DynamicAnimTrailCount, STATGROUP_ParticleMem,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("DynAnimTrail Max"), STAT_DynamicAnimTrailCount_MAX, STATGROUP_ParticleMem,)
 
 DECLARE_MEMORY_STAT_EXTERN (TEXT("DynAnimTrail GT Mem"), STAT_DynamicAnimTrailGTMem, STATGROUP_ParticleMem,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("DynAnimTrail GT Mem Max"), STAT_DynamicAnimTrailGTMem_MAX, STATGROUP_ParticleMem,)
 
 DECLARE_MEMORY_STAT_EXTERN (TEXT("DynUntracked Mem"), STAT_DynamicUntrackedGTMem, STATGROUP_ParticleMem,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("DynUntracked Mem Max"), STAT_DynamicUntrackedGTMem_MAX, STATGROUP_ParticleMem,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Sprites"), STAT_GPUSpriteParticles, STATGROUP_GPUParticles,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Sprites Spawned"), STAT_GPUSpritesSpawned, STATGROUP_GPUParticles,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Sorted Emitters"), STAT_SortedGPUEmitters, STATGROUP_GPUParticles,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Sorted Particles"), STAT_SortedGPUParticles, STATGROUP_GPUParticles,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Free Tiles"), STAT_FreeGPUTiles, STATGROUP_GPUParticles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Sprite Tick Time"), STAT_GPUSpriteTickTime, STATGROUP_GPUParticles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Sprite Spawn Time"), STAT_GPUSpriteSpawnTime, STATGROUP_GPUParticles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Sprite PreRender Time"), STAT_GPUSpritePreRenderTime, STATGROUP_GPUParticles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Sprite Render Time"), STAT_GPUSpriteRenderingTime, STATGROUP_GPUParticles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("GPU Particle Tick Time"), STAT_GPUParticleTickTime, STATGROUP_GPUParticles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Build Sim Commands"), STAT_GPUParticleBuildSimCmdsTime, STATGROUP_GPUParticles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Misc1"), STAT_GPUParticleMisc1, STATGROUP_GPUParticles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Misc2"), STAT_GPUParticleMisc2, STATGROUP_GPUParticles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Misc3"), STAT_GPUParticleMisc3, STATGROUP_GPUParticles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Injection Tick Time"), STAT_GPUParticlesInjectionTime, STATGROUP_GPUParticles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Execute Simulation Commands Time"), STAT_GPUParticlesSimulationCommands, STATGROUP_GPUParticles,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Single Iteration Emitters"), STAT_GPUSingleIterationEmitters, STATGROUP_GPUParticles,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Multi Iterations Emitters"), STAT_GPUMultiIterationsEmitters, STATGROUP_GPUParticles,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Mesh Particles"), STAT_MeshParticles, STATGROUP_Particles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Mesh Render Time RT"), STAT_MeshRenderingTime, STATGROUP_Particles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Mesh Tick Time GT,AT"), STAT_MeshTickTime, STATGROUP_Particles,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Trail Particles"), STAT_TrailParticles, STATGROUP_Particles,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Trail Ptcl Render Calls"), STAT_TrailParticlesRenderCalls, STATGROUP_TrailParticles,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Trail Ptcls Spawned"), STAT_TrailParticlesSpawned, STATGROUP_Particles,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Trail Tick Calls"), STAT_TrailParticlesTickCalls, STATGROUP_TrailParticles,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Trail Ptcls Killed"), STAT_TrailParticlesKilled, STATGROUP_Particles,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Trail Ptcl Tris"), STAT_TrailParticlesTrianglesRendered, STATGROUP_Particles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Trail FillVertex Time RT"), STAT_TrailFillVertexTime, STATGROUP_TrailParticles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Trail FillIndex Time RT"), STAT_TrailFillIndexTime, STATGROUP_TrailParticles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Trail Render Time RT"), STAT_TrailRenderingTime, STATGROUP_Particles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Trail Tick Time GT"), STAT_TrailTickTime, STATGROUP_Particles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("AnimTrail Notify Time GT"), STAT_AnimTrailNotifyTime, STATGROUP_Particles,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Beam Particles"), STAT_BeamParticles, STATGROUP_Particles,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Beam Ptcl Render Calls"), STAT_BeamParticlesRenderCalls, STATGROUP_BeamParticles,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Beam Ptcls Spawned"), STAT_BeamParticlesSpawned, STATGROUP_Particles,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Beam Ptcl Update Calls"), STAT_BeamParticlesUpdateCalls, STATGROUP_BeamParticles,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Beam Ptcls Updated"), STAT_BeamParticlesUpdated, STATGROUP_BeamParticles,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Beam Ptcls Killed"), STAT_BeamParticlesKilled, STATGROUP_Particles,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Beam Ptcl Tris"), STAT_BeamParticlesTrianglesRendered, STATGROUP_Particles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Beam Spawn Time GT"), STAT_BeamSpawnTime, STATGROUP_Particles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Beam FillVertex Time RT"), STAT_BeamFillVertexTime, STATGROUP_BeamParticles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Beam FillIndex Time RT"), STAT_BeamFillIndexTime, STATGROUP_BeamParticles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Beam Render Time RT"), STAT_BeamRenderingTime, STATGROUP_Particles,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Beam Tick Time GT"), STAT_BeamTickTime, STATGROUP_Particles,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Mesh Particle Polys"), STAT_MeshParticlePolys, STATGROUP_Particles,)
 
void GetDynamicValueFromPayload (int32 InDynamicPayloadOffset, const FBaseParticle &InParticle, FVector4f &OutDynamicData)
 
FVector3f GetParticleBaseSize (const FBaseParticle &Particle, bool bKeepFlipScale=false)
 
FVector2D GetParticleSizeWithUVFlipInSign (const FBaseParticle &Particle, const FVector2D &ScaledSize)
 

Variables

const int32 PDM_DefaultValue = 0xFFFF
 
ENGINE_API TGlobalResource< FNullDynamicParameterVertexBufferGNullDynamicParameterVertexBuffer
 

Macro Definition Documentation

◆ _ENABLE_PARTICLE_LOD_INGAME_

#define _ENABLE_PARTICLE_LOD_INGAME_

◆ _PARTICLES_USE_PREFETCH_

#define _PARTICLES_USE_PREFETCH_

◆ BEAM2_TYPEDATA_FREQUENCY

#define BEAM2_TYPEDATA_FREQUENCY (   x)    ((x & BEAM2_TYPEDATA_FREQUENCY_MASK) >> BEAM2_TYPEDATA_FREQUENCY_SHIFT)

◆ BEAM2_TYPEDATA_FREQUENCY_MASK

#define BEAM2_TYPEDATA_FREQUENCY_MASK   0x00fff000

◆ BEAM2_TYPEDATA_FREQUENCY_SHIFT

#define BEAM2_TYPEDATA_FREQUENCY_SHIFT   12

◆ BEAM2_TYPEDATA_LOCKED

#define BEAM2_TYPEDATA_LOCKED (   x)    ((x & BEAM2_TYPEDATA_LOCKED_MASK) != 0)

◆ BEAM2_TYPEDATA_LOCKED_MASK

#define BEAM2_TYPEDATA_LOCKED_MASK   0x80000000

◆ BEAM2_TYPEDATA_SETFREQUENCY

#define BEAM2_TYPEDATA_SETFREQUENCY (   x,
  Freq 
)    (x = ((x & ~BEAM2_TYPEDATA_FREQUENCY_MASK) | (Freq << BEAM2_TYPEDATA_FREQUENCY_SHIFT)))

◆ BEAM2_TYPEDATA_SETLOCKED

#define BEAM2_TYPEDATA_SETLOCKED (   x,
  Locked 
)    (x = Locked ? (x | BEAM2_TYPEDATA_LOCKED_MASK) : (x & ~BEAM2_TYPEDATA_LOCKED_MASK))

◆ BEGIN_UPDATE_LOOP

#define BEGIN_UPDATE_LOOP
Value:
{ \
int32& ActiveParticles = Context.Owner.ActiveParticles; \
int32 Offset = Context.Offset; \
uint32 CurrentOffset = Offset; \
float DeltaTime = Context.DeltaTime; \
const uint8* ParticleData = Context.Owner.ParticleData; \
const uint32 ParticleStride = Context.Owner.ParticleStride; \
uint16* ParticleIndices = Context.Owner.ParticleIndices; \
for(int32 i=ActiveParticles-1; i>=0; i--) \
{ \
const int32 CurrentIndex = ParticleIndices[i]; \
const uint8* ParticleBase = ParticleData + CurrentIndex * ParticleStride; \
FBaseParticle& Particle = *((FBaseParticle*) ParticleBase); \
if ((Particle.Flags & STATE_Particle_Freeze) == 0) \
{ \
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
@ STATE_Particle_Freeze
Definition ParticleHelper.h:223
uint32 Offset
Definition VulkanMemory.cpp:4033
uint8_t uint8
Definition binka_ue_file_header.h:8
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition ParticleHelper.h:181
int32 Flags
Definition ParticleHelper.h:200

◆ CONTINUE_UPDATE_LOOP

#define CONTINUE_UPDATE_LOOP
Value:
CurrentOffset = Offset; \
continue;

◆ DECLARE_PARTICLE

#define DECLARE_PARTICLE (   Name,
  Address 
)     FBaseParticle& Name = *((FBaseParticle*) (Address));

◆ DECLARE_PARTICLE_CONST

#define DECLARE_PARTICLE_CONST (   Name,
  Address 
)     const FBaseParticle& Name = *((const FBaseParticle*) (Address));

◆ DECLARE_PARTICLE_PTR

#define DECLARE_PARTICLE_PTR (   Name,
  Address 
)     FBaseParticle* Name = (FBaseParticle*) (Address);

◆ END_UPDATE_LOOP

#define END_UPDATE_LOOP
Value:
} \
CurrentOffset = Offset; \
} \
}

◆ INDEX_REQUIREDMODULE

#define INDEX_REQUIREDMODULE   (INDEX_NONE - 2)

◆ INDEX_SPAWNMODULE

#define INDEX_SPAWNMODULE   (INDEX_NONE - 3)

◆ INDEX_TYPEDATAMODULE

#define INDEX_TYPEDATAMODULE   (INDEX_NONE - 1)

◆ KILL_CURRENT_PARTICLE

#define KILL_CURRENT_PARTICLE
Value:
{ \
ParticleIndices[i] = ParticleIndices[ActiveParticles-1]; \
ParticleIndices[ActiveParticles-1] = CurrentIndex; \
ActiveParticles--; \
}

◆ PARTICLE_ELEMENT

#define PARTICLE_ELEMENT (   Type,
  Name 
)
Value:
Type& Name = *((Type*)((uint8*)ParticleBase + CurrentOffset)); \
CurrentOffset += sizeof(Type);

◆ PARTICLE_INSTANCE_PREFETCH

#define PARTICLE_INSTANCE_PREFETCH (   Instance,
  Index 
)    FPlatformMisc::Prefetch( Instance->ParticleData, Instance->ParticleStride * Instance->ParticleIndices[Index] )

◆ PARTICLE_OWNER_PREFETCH

#define PARTICLE_OWNER_PREFETCH (   Index)    FPlatformMisc::Prefetch( Owner->ParticleData, Owner->ParticleStride * Owner->ParticleIndices[Index] )

◆ PARTICLE_PREFETCH

#define PARTICLE_PREFETCH (   Index)    FPlatformMisc::Prefetch( ParticleData, ParticleStride * ParticleIndices[Index] )

◆ SPAWN_INIT

#define SPAWN_INIT
Value:
const int32 ActiveParticles = Context.Owner.ActiveParticles; \
const uint32 ParticleStride = Context.Owner.ParticleStride; \
uint32 CurrentOffset = Context.Offset; \
FBaseParticle* ParticleBase = Context.ParticleBase; \
FBaseParticle& Particle = *(ParticleBase);

◆ TRAIL_EMITTER_CHECK_FLAG

#define TRAIL_EMITTER_CHECK_FLAG (   val,
  mask,
  flag 
)    ((val & mask) == flag)

◆ TRAIL_EMITTER_FLAG_DEADTRAIL

#define TRAIL_EMITTER_FLAG_DEADTRAIL   0x10000000

◆ TRAIL_EMITTER_FLAG_END

#define TRAIL_EMITTER_FLAG_END   0x80000000

◆ TRAIL_EMITTER_FLAG_FORCEKILL

#define TRAIL_EMITTER_FLAG_FORCEKILL   0x00000000

◆ TRAIL_EMITTER_FLAG_MASK

#define TRAIL_EMITTER_FLAG_MASK   0xf0000000

◆ TRAIL_EMITTER_FLAG_MIDDLE

#define TRAIL_EMITTER_FLAG_MIDDLE   0x20000000

◆ TRAIL_EMITTER_FLAG_START

#define TRAIL_EMITTER_FLAG_START   0x40000000

◆ TRAIL_EMITTER_GET_NEXT

#define TRAIL_EMITTER_GET_NEXT (   index)    TRAIL_EMITTER_GET_PREVNEXT(index, TRAIL_EMITTER_NEXT_MASK, TRAIL_EMITTER_NEXT_SHIFT)

◆ TRAIL_EMITTER_GET_PREV

#define TRAIL_EMITTER_GET_PREV (   index)    TRAIL_EMITTER_GET_PREVNEXT(index, TRAIL_EMITTER_PREV_MASK, TRAIL_EMITTER_PREV_SHIFT)

◆ TRAIL_EMITTER_GET_PREVNEXT

#define TRAIL_EMITTER_GET_PREVNEXT (   val,
  mask,
  shift 
)    ((val & mask) >> shift)

◆ TRAIL_EMITTER_IS_DEADTRAIL

#define TRAIL_EMITTER_IS_DEADTRAIL (   index)    TRAIL_EMITTER_CHECK_FLAG(index, TRAIL_EMITTER_FLAG_MASK, TRAIL_EMITTER_FLAG_DEADTRAIL)

◆ TRAIL_EMITTER_IS_END

#define TRAIL_EMITTER_IS_END (   index)    TRAIL_EMITTER_CHECK_FLAG(index, TRAIL_EMITTER_FLAG_MASK, TRAIL_EMITTER_FLAG_END)

◆ TRAIL_EMITTER_IS_FORCEKILL

#define TRAIL_EMITTER_IS_FORCEKILL (   index)    TRAIL_EMITTER_CHECK_FLAG(index, TRAIL_EMITTER_FLAG_MASK, TRAIL_EMITTER_FLAG_FORCEKILL)

◆ TRAIL_EMITTER_IS_HEAD

#define TRAIL_EMITTER_IS_HEAD (   index)    (TRAIL_EMITTER_IS_START(index) || TRAIL_EMITTER_IS_DEADTRAIL(index))

◆ TRAIL_EMITTER_IS_HEADONLY

#define TRAIL_EMITTER_IS_HEADONLY (   index)
Value:
#define TRAIL_EMITTER_GET_NEXT(index)
Definition ParticleHelper.h:531
#define TRAIL_EMITTER_NULL_NEXT
Definition ParticleHelper.h:495
#define TRAIL_EMITTER_IS_DEADTRAIL(index)
Definition ParticleHelper.h:521
#define TRAIL_EMITTER_IS_START(index)
Definition ParticleHelper.h:504

◆ TRAIL_EMITTER_IS_MIDDLE

#define TRAIL_EMITTER_IS_MIDDLE (   index)    TRAIL_EMITTER_CHECK_FLAG(index, TRAIL_EMITTER_FLAG_MASK, TRAIL_EMITTER_FLAG_MIDDLE)

◆ TRAIL_EMITTER_IS_ONLY

#define TRAIL_EMITTER_IS_ONLY (   index)
Value:
#define TRAIL_EMITTER_CHECK_FLAG(val, mask, flag)
Definition ParticleHelper.h:498
#define TRAIL_EMITTER_FLAG_MASK
Definition ParticleHelper.h:488
#define TRAIL_EMITTER_FLAG_START
Definition ParticleHelper.h:483

◆ TRAIL_EMITTER_IS_START

#define TRAIL_EMITTER_IS_START (   index)    TRAIL_EMITTER_CHECK_FLAG(index, TRAIL_EMITTER_FLAG_MASK, TRAIL_EMITTER_FLAG_START)

◆ TRAIL_EMITTER_NEXT_MASK

#define TRAIL_EMITTER_NEXT_MASK   0x00003fff

◆ TRAIL_EMITTER_NEXT_SHIFT

#define TRAIL_EMITTER_NEXT_SHIFT   0

◆ TRAIL_EMITTER_NULL_NEXT

#define TRAIL_EMITTER_NULL_NEXT   (TRAIL_EMITTER_NEXT_MASK >> TRAIL_EMITTER_NEXT_SHIFT)

◆ TRAIL_EMITTER_NULL_PREV

#define TRAIL_EMITTER_NULL_PREV   (TRAIL_EMITTER_PREV_MASK >> TRAIL_EMITTER_PREV_SHIFT)

◆ TRAIL_EMITTER_PREV_MASK

#define TRAIL_EMITTER_PREV_MASK   0x0fffc000

◆ TRAIL_EMITTER_PREV_SHIFT

#define TRAIL_EMITTER_PREV_SHIFT   14

◆ TRAIL_EMITTER_SET_DEADTRAIL

#define TRAIL_EMITTER_SET_DEADTRAIL (   index)    TRAIL_EMITTER_SET_FLAG(index, TRAIL_EMITTER_FLAG_MASK, TRAIL_EMITTER_FLAG_DEADTRAIL)

◆ TRAIL_EMITTER_SET_END

#define TRAIL_EMITTER_SET_END (   index)    TRAIL_EMITTER_SET_FLAG(index, TRAIL_EMITTER_FLAG_MASK, TRAIL_EMITTER_FLAG_END)

◆ TRAIL_EMITTER_SET_FLAG

#define TRAIL_EMITTER_SET_FLAG (   val,
  mask,
  flag 
)    ((val & ~mask) | flag)

◆ TRAIL_EMITTER_SET_FORCEKILL

#define TRAIL_EMITTER_SET_FORCEKILL (   index)    TRAIL_EMITTER_SET_FLAG(index, TRAIL_EMITTER_FLAG_MASK, TRAIL_EMITTER_FLAG_FORCEKILL)

◆ TRAIL_EMITTER_SET_MIDDLE

#define TRAIL_EMITTER_SET_MIDDLE (   index)    TRAIL_EMITTER_SET_FLAG(index, TRAIL_EMITTER_FLAG_MASK, TRAIL_EMITTER_FLAG_MIDDLE)

◆ TRAIL_EMITTER_SET_NEXT

#define TRAIL_EMITTER_SET_NEXT (   index,
  next 
)    TRAIL_EMITTER_SET_PREVNEXT(index, TRAIL_EMITTER_NEXT_MASK, TRAIL_EMITTER_NEXT_SHIFT, next)

◆ TRAIL_EMITTER_SET_ONLY

#define TRAIL_EMITTER_SET_ONLY (   index)    TRAIL_EMITTER_SET_FLAG(index, TRAIL_EMITTER_FLAG_MASK, TRAIL_EMITTER_FLAG_START)

◆ TRAIL_EMITTER_SET_PREV

#define TRAIL_EMITTER_SET_PREV (   index,
  prev 
)    TRAIL_EMITTER_SET_PREVNEXT(index, TRAIL_EMITTER_PREV_MASK, TRAIL_EMITTER_PREV_SHIFT, prev)

◆ TRAIL_EMITTER_SET_PREVNEXT

#define TRAIL_EMITTER_SET_PREVNEXT (   val,
  mask,
  shift,
  setval 
)    ((val & ~mask) | ((setval << shift) & mask))

◆ TRAIL_EMITTER_SET_START

#define TRAIL_EMITTER_SET_START (   index)    TRAIL_EMITTER_SET_FLAG(index, TRAIL_EMITTER_FLAG_MASK, TRAIL_EMITTER_FLAG_START)

Enumeration Type Documentation

◆ EDynamicEmitterType

Dynamic particle emitter types

NOTE: These are serialized out for particle replay data, so be sure to update all appropriate when changing anything here.

Enumerator
DET_Unknown 
DET_Sprite 
DET_Mesh 
DET_Beam2 
DET_Ribbon 
DET_AnimTrail 
DET_Custom 

◆ EParticleDetailMode

Detail mode for scene component rendering.

Enumerator
UMETA 
UMETA 
UMETA 
UMETA 
UMETA 

◆ EParticleSignificanceLevel

A level of significance for a particle system. Used by game code to enable/disable emitters progressively as they move away from the camera or are occluded/off screen.

Enumerator
Low 

Low significance emitter. Culled first.

Medium 

Medium significance emitter.

High 

High significance emitter. Culled last.

Critical 

Critical emitter. Never culled.

UMETA 

◆ EParticleStates

Enumerator
STATE_Particle_JustSpawned 

Ignore updates to the particle

STATE_Particle_Freeze 

Ignore updates to the particle

STATE_Particle_IgnoreCollisions 

Ignore collision updates to the particle

STATE_Particle_FreezeTranslation 

Stop translations of the particle

STATE_Particle_FreezeRotation 

Stop rotations of the particle

STATE_Particle_CollisionIgnoreCheck 

Combination for a single check of 'ignore' flags

STATE_Particle_DelayCollisions 

Delay collision updates to the particle

STATE_Particle_CollisionHasOccurred 

Flag indicating the particle has had at least one collision

STATE_Mask 

State mask.

STATE_CounterMask 

Counter mask.

◆ EParticleSystemInsignificanceReaction

Determines what a particle system will do when all of it's emitters become insignificant.

Enumerator
Auto 

Looping systems will DisableTick. Non-looping systems will Complete.

Complete 

The system will be considered complete and will auto destroy if desired etc.

DisableTick 

The system will simply stop ticking. Tick will be re-enabled when any emitters become significant again. This is useful for persistent fx such as environmental fx.

UMETA 

As DisableTick but will also kill all particles.

UMETA 

Function Documentation

◆ DECLARE_CYCLE_STAT_EXTERN() [1/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Activate Time GT" ,
STAT_ParticleActivateTime  ,
STATGROUP_Particles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [2/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("AnimTrail Notify Time GT" ,
STAT_AnimTrailNotifyTime  ,
STATGROUP_Particles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [3/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Async Work Time" ,
STAT_ParticleAsyncTime  ,
STATGROUP_Particles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [4/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Beam FillIndex Time RT" ,
STAT_BeamFillIndexTime  ,
STATGROUP_BeamParticles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [5/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Beam FillVertex Time RT" ,
STAT_BeamFillVertexTime  ,
STATGROUP_BeamParticles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [6/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Beam Render Time RT" ,
STAT_BeamRenderingTime  ,
STATGROUP_Particles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [7/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Beam Spawn Time GT" ,
STAT_BeamSpawnTime  ,
STATGROUP_Particles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [8/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Beam Tick Time GT" ,
STAT_BeamTickTime  ,
STATGROUP_Particles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [9/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Build Sim Commands" ,
STAT_GPUParticleBuildSimCmdsTime  ,
STATGROUP_GPUParticles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [10/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Execute Simulation Commands Time" ,
STAT_GPUParticlesSimulationCommands  ,
STATGROUP_GPUParticles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [11/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("GPU Particle Tick Time" ,
STAT_GPUParticleTickTime  ,
STATGROUP_GPUParticles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [12/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("GT Concurrent Total" ,
STAT_ParticlesOverview_GT_CNC  ,
STATGROUP_ParticlesOverview   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [13/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("GT Total" ,
STAT_ParticlesOverview_GT  ,
STATGROUP_ParticlesOverview   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [14/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Initialize Time GT" ,
STAT_ParticleInitializeTime  ,
STATGROUP_Particles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [15/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Injection Tick Time" ,
STAT_GPUParticlesInjectionTime  ,
STATGROUP_GPUParticles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [16/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Mesh Render Time RT" ,
STAT_MeshRenderingTime  ,
STATGROUP_Particles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [17/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Mesh Tick Time GT,AT" ,
STAT_MeshTickTime  ,
STATGROUP_Particles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [18/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Misc1")  ,
STAT_GPUParticleMisc1  ,
STATGROUP_GPUParticles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [19/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Misc2")  ,
STAT_GPUParticleMisc2  ,
STATGROUP_GPUParticles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [20/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Misc3")  ,
STAT_GPUParticleMisc3  ,
STATGROUP_GPUParticles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [21/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Particle Collision Time GT" ,
STAT_ParticleCollisionTime  ,
STATGROUP_Particles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [22/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Particle Compute Time GT,AT" ,
STAT_ParticleComputeTickTime  ,
STATGROUP_Particles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [23/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Particle Finalize Time GT" ,
STAT_ParticleFinalizeTickTime  ,
STATGROUP_Particles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [24/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Particle GT Stall Time" ,
STAT_GTSTallTime  ,
STATGROUP_Particles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [25/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Particle Packing Time RT" ,
STAT_ParticlePackingTime  ,
STATGROUP_Particles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [26/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Particle Pool Time RT" ,
STAT_ParticlePoolTime  ,
STATGROUP_Particles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [27/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Particle Render Time RT" ,
STAT_ParticleRenderingTime  ,
STATGROUP_Particles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [28/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Particle SkelMeshSurf Time GT" ,
STAT_ParticleSkelMeshSurfTime  ,
STATGROUP_Particles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [29/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("PSys Comp Tick Time GT" ,
STAT_PSysCompTickTime  ,
STATGROUP_Particles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [30/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("RT Concurrent Total" ,
STAT_ParticlesOverview_RT_CNC  ,
STATGROUP_ParticlesOverview   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [31/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("RT Total" ,
STAT_ParticlesOverview_RT  ,
STATGROUP_ParticlesOverview   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [32/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("SetTemplate Time GT" ,
STAT_ParticleSetTemplateTime  ,
STATGROUP_Particles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [33/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Sort Time RT" ,
STAT_SortingTime  ,
STATGROUP_Particles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [34/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Sprite PreRender Time" ,
STAT_GPUSpritePreRenderTime  ,
STATGROUP_GPUParticles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [35/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Sprite Render Time RT" ,
STAT_SpriteRenderingTime  ,
STATGROUP_Particles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [36/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Sprite Render Time" ,
STAT_GPUSpriteRenderingTime  ,
STATGROUP_GPUParticles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [37/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Sprite Spawn Time GT" ,
STAT_SpriteSpawnTime  ,
STATGROUP_Particles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [38/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Sprite Spawn Time" ,
STAT_GPUSpriteSpawnTime  ,
STATGROUP_GPUParticles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [39/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Sprite Tick Time GT" ,
STAT_SpriteTickTime  ,
STATGROUP_Particles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [40/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Sprite Tick Time" ,
STAT_GPUSpriteTickTime  ,
STATGROUP_GPUParticles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [41/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Trail FillIndex Time RT" ,
STAT_TrailFillIndexTime  ,
STATGROUP_TrailParticles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [42/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Trail FillVertex Time RT" ,
STAT_TrailFillVertexTime  ,
STATGROUP_TrailParticles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [43/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Trail Render Time RT" ,
STAT_TrailRenderingTime  ,
STATGROUP_Particles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [44/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Trail Tick Time GT" ,
STAT_TrailTickTime  ,
STATGROUP_Particles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [45/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Update Bounds Time GT" ,
STAT_ParticleUpdateBounds  ,
STATGROUP_Particles   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [46/46]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Wait For ASync Time" ,
STAT_ParticleAsyncWaitTime  ,
STATGROUP_Particles   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [1/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Beam Particles" ,
STAT_BeamParticles  ,
STATGROUP_Particles   
)

Beam particle stats

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [2/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Beam Ptcl Render Calls" ,
STAT_BeamParticlesRenderCalls  ,
STATGROUP_BeamParticles   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [3/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Beam Ptcl Tris" ,
STAT_BeamParticlesTrianglesRendered  ,
STATGROUP_Particles   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [4/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Beam Ptcl Update Calls" ,
STAT_BeamParticlesUpdateCalls  ,
STATGROUP_BeamParticles   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [5/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Beam Ptcls Killed" ,
STAT_BeamParticlesKilled  ,
STATGROUP_Particles   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [6/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Beam Ptcls Spawned" ,
STAT_BeamParticlesSpawned  ,
STATGROUP_Particles   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [7/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Beam Ptcls Updated" ,
STAT_BeamParticlesUpdated  ,
STATGROUP_BeamParticles   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [8/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("DynAnimTrail Count" ,
STAT_DynamicAnimTrailCount  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [9/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("DynAnimTrail GT Mem Max" ,
STAT_DynamicAnimTrailGTMem_MAX  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [10/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("DynAnimTrail Max" ,
STAT_DynamicAnimTrailCount_MAX  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [11/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("DynBeam Count" ,
STAT_DynamicBeamCount  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [12/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("DynBeam GT Mem Max" ,
STAT_DynamicBeamGTMem_MAX  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [13/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("DynBeam Max" ,
STAT_DynamicBeamCount_MAX  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [14/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("DynEmitter Count Max" ,
STAT_DynamicEmitterCount_MAX  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [15/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("DynEmitter Count" ,
STAT_DynamicEmitterCount  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [16/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("DynEmitter GTMem Largest MAX" ,
STAT_DynamicEmitterGTMem_Largest_MAX  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [17/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("DynEmitter GTMem Largest" ,
STAT_DynamicEmitterGTMem_Largest  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [18/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("DynEmitter GTMem Waste MAX" ,
STAT_DynamicEmitterGTMem_Waste_MAX  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [19/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("DynEmitter GTMem Waste" ,
STAT_DynamicEmitterGTMem_Waste  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [20/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("DynEmitter Mem MAX" ,
STAT_DynamicEmitterMem_MAX  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [21/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("DynEmitter Mem" ,
STAT_DynamicEmitterMem  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [22/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("DynMesh Count" ,
STAT_DynamicMeshCount  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [23/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("DynMesh GT Mem Max" ,
STAT_DynamicMeshGTMem_MAX  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [24/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("DynMesh Max" ,
STAT_DynamicMeshCount_MAX  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [25/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("DynPSysComp Count MAX" ,
STAT_DynamicPSysCompCount_MAX  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [26/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("DynPSysComp Count" ,
STAT_DynamicPSysCompCount  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [27/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("DynPSysComp Mem MAX" ,
STAT_DynamicPSysCompMem_MAX  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [28/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("DynPSysComp Mem" ,
STAT_DynamicPSysCompMem  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [29/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("DynRibbon Count" ,
STAT_DynamicRibbonCount  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [30/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("DynRibbon GT Mem Max" ,
STAT_DynamicRibbonGTMem_MAX  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [31/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("DynRibbon Max" ,
STAT_DynamicRibbonCount_MAX  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [32/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("DynSprite Count" ,
STAT_DynamicSpriteCount  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [33/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("DynSprite GT Mem Max" ,
STAT_DynamicSpriteGTMem_MAX  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [34/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("DynSprite Max" ,
STAT_DynamicSpriteCount_MAX  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [35/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("DynSubUV Count" ,
STAT_DynamicSubUVCount  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [36/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("DynSubUV GT Mem Max" ,
STAT_DynamicSubUVGTMem_Max  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [37/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("DynSubUV Max" ,
STAT_DynamicSubUVCount_MAX  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [38/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("DynUntracked Mem Max" ,
STAT_DynamicUntrackedGTMem_MAX  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [39/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Free Tiles" ,
STAT_FreeGPUTiles  ,
STATGROUP_GPUParticles   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [40/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Mesh Particle Polys" ,
STAT_MeshParticlePolys  ,
STATGROUP_Particles   
)

Mesh Particle Stats

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [41/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Mesh Particles" ,
STAT_MeshParticles  ,
STATGROUP_Particles   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [42/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Multi Iterations Emitters" ,
STAT_GPUMultiIterationsEmitters  ,
STATGROUP_GPUParticles   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [43/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Particle Draw Calls" ,
STAT_ParticleDrawCalls  ,
STATGROUP_Particles   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [44/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Ptcls Data GT Mem MAX" ,
STAT_GTParticleData_MAX  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [45/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Ptcls Data RT Largest MAX" ,
STAT_RTParticleData_Largest_MAX  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [46/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Ptcls Data RT Largest" ,
STAT_RTParticleData_Largest  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [47/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Ptcls Data RT Mem MAX" ,
STAT_RTParticleData_MAX  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [48/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Ptcls Data RT Mem" ,
STAT_RTParticleData  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [49/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Single Iteration Emitters" ,
STAT_GPUSingleIterationEmitters  ,
STATGROUP_GPUParticles   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [50/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Sorted Emitters" ,
STAT_SortedGPUEmitters  ,
STATGROUP_GPUParticles   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [51/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Sorted Particles" ,
STAT_SortedGPUParticles  ,
STATGROUP_GPUParticles   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [52/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Sprite Particles" ,
STAT_SpriteParticles  ,
STATGROUP_Particles   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [53/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Sprite Ptcls Killed" ,
STAT_SpriteParticlesKilled  ,
STATGROUP_Particles   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [54/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Sprite Ptcls Spawned" ,
STAT_SpriteParticlesSpawned  ,
STATGROUP_Particles   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [55/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Sprite Ptcls Updated" ,
STAT_SpriteParticlesUpdated  ,
STATGROUP_Particles   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [56/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Sprites Spawned" ,
STAT_GPUSpritesSpawned  ,
STATGROUP_GPUParticles   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [57/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Sprites")  ,
STAT_GPUSpriteParticles  ,
STATGROUP_GPUParticles   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [58/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Trail Particles" ,
STAT_TrailParticles  ,
STATGROUP_Particles   
)

Particle trail stats

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [59/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Trail Ptcl Render Calls" ,
STAT_TrailParticlesRenderCalls  ,
STATGROUP_TrailParticles   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [60/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Trail Ptcl Tris" ,
STAT_TrailParticlesTrianglesRendered  ,
STATGROUP_Particles   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [61/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Trail Ptcls Killed" ,
STAT_TrailParticlesKilled  ,
STATGROUP_Particles   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [62/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Trail Ptcls Spawned" ,
STAT_TrailParticlesSpawned  ,
STATGROUP_Particles   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [63/63]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Trail Tick Calls" ,
STAT_TrailParticlesTickCalls  ,
STATGROUP_TrailParticles   
)

◆ DECLARE_LOG_CATEGORY_EXTERN()

DECLARE_LOG_CATEGORY_EXTERN ( LogParticles  ,
Log  ,
All   
)

◆ DECLARE_MEMORY_STAT_EXTERN() [1/8]

DECLARE_MEMORY_STAT_EXTERN ( TEXT("DynAnimTrail GT Mem" ,
STAT_DynamicAnimTrailGTMem  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_MEMORY_STAT_EXTERN() [2/8]

DECLARE_MEMORY_STAT_EXTERN ( TEXT("DynBeam GT Mem" ,
STAT_DynamicBeamGTMem  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_MEMORY_STAT_EXTERN() [3/8]

DECLARE_MEMORY_STAT_EXTERN ( TEXT("DynMesh GT Mem" ,
STAT_DynamicMeshGTMem  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_MEMORY_STAT_EXTERN() [4/8]

DECLARE_MEMORY_STAT_EXTERN ( TEXT("DynRibbon GT Mem" ,
STAT_DynamicRibbonGTMem  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_MEMORY_STAT_EXTERN() [5/8]

DECLARE_MEMORY_STAT_EXTERN ( TEXT("DynSprite GT Mem" ,
STAT_DynamicSpriteGTMem  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_MEMORY_STAT_EXTERN() [6/8]

DECLARE_MEMORY_STAT_EXTERN ( TEXT("DynSubUV GT Mem" ,
STAT_DynamicSubUVGTMem  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_MEMORY_STAT_EXTERN() [7/8]

DECLARE_MEMORY_STAT_EXTERN ( TEXT("DynUntracked Mem" ,
STAT_DynamicUntrackedGTMem  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_MEMORY_STAT_EXTERN() [8/8]

DECLARE_MEMORY_STAT_EXTERN ( TEXT("Ptcls Data GT Mem" ,
STAT_GTParticleData  ,
STATGROUP_ParticleMem   
)

◆ DECLARE_STATS_GROUP()

DECLARE_STATS_GROUP ( TEXT("ParticlesOverview")  ,
STATGROUP_ParticlesOverview  ,
STATCAT_Advanced   
)

◆ GetDynamicValueFromPayload()

void GetDynamicValueFromPayload ( int32  InDynamicPayloadOffset,
const FBaseParticle InParticle,
FVector4f OutDynamicData 
)
inline

Helper function for retrieving the dynamic payload of a particle.

Parameters
InDynamicPayloadOffsetThe offset to the payload
InParticleThe particle being processed
OutDynamicDataThe dynamic data from the particle

◆ GetParticleBaseSize()

FVector3f GetParticleBaseSize ( const FBaseParticle Particle,
bool  bKeepFlipScale = false 
)
inline

◆ GetParticleSizeWithUVFlipInSign()

FVector2D GetParticleSizeWithUVFlipInSign ( const FBaseParticle Particle,
const FVector2D ScaledSize 
)
inline

◆ Particle_SetColorFromVector()

void Particle_SetColorFromVector ( const FVector3f InColorVec,
const float  InAlpha,
FLinearColor OutColor 
)
inline

Variable Documentation

◆ GNullDynamicParameterVertexBuffer

ENGINE_API TGlobalResource<FNullDynamicParameterVertexBuffer> GNullDynamicParameterVertexBuffer
extern

The global null color vertex buffer, which is set with a stride of 0 on meshes without a color component.

◆ PDM_DefaultValue

const int32 PDM_DefaultValue = 0xFFFF
inline