UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ParticleGpuSimulation.cpp File Reference
#include "Engine/World.h"
#include "DataDrivenShaderPlatformInfo.h"
#include "Math/Float16.h"
#include "RHIStaticStates.h"
#include "GlobalDistanceFieldParameters.h"
#include "Materials/Material.h"
#include "MaterialDomain.h"
#include "MeshDrawShaderBindings.h"
#include "SceneManagement.h"
#include "Misc/DelayedAutoRegister.h"
#include "ParticleEmitterInstances.h"
#include "ParticleEmitterInstanceOwner.h"
#include "Particles/Orientation/ParticleModuleOrientationAxisLock.h"
#include "Particles/ParticleSystemComponent.h"
#include "CanvasTypes.h"
#include "Particles/FXSystemPrivate.h"
#include "Particles/ParticleEmitter.h"
#include "Particles/ParticleSortingGPU.h"
#include "Particles/ParticleCurveTexture.h"
#include "ParticleResources.h"
#include "ParticleSystemSceneProxy.h"
#include "Particles/ParticleModule.h"
#include "SceneView.h"
#include "ShaderParameterStruct.h"
#include "VectorFieldVisualization.h"
#include "Particles/ParticleSpriteEmitter.h"
#include "Particles/Spawn/ParticleModuleSpawn.h"
#include "Particles/ParticleSystem.h"
#include "Particles/Spawn/ParticleModuleSpawnPerUnit.h"
#include "Particles/TypeData/ParticleModuleTypeDataBase.h"
#include "Particles/TypeData/ParticleModuleTypeDataGpu.h"
#include "Particles/ParticleLODLevel.h"
#include "Particles/ParticleModuleRequired.h"
#include "RHIBreadcrumbs.h"
#include "UnrealClient.h"
#include "SceneInterface.h"
#include "VectorField/VectorField.h"
#include "MeshMaterialShader.h"
#include "Stats/StatsTrace.h"
#include "ShaderParameterUtils.h"
#include "RenderGraphUtils.h"
#include "SceneTexturesConfig.h"

Classes

class  FParticleTileAllocator
 
struct  FParticleIndex
 
class  FParticleStateTextures
 
class  FParticleAttributesTexture
 
class  FParticleSimulationResources
 
class  FGPUSpriteVertexFactoryShaderParametersVS
 
class  FGPUSpriteVertexFactoryShaderParametersPS
 
class  FGPUSpriteVertexDeclaration
 
struct  FGPUSpriteMeshDataUserData
 
struct  FParticlePerFrameSimulationParameters
 
class  FParticleTileVS
 
class  TParticleSimulationPS< CollisionMode >
 
class  FParticleSimulationClearPS
 
class  FParticleTileVertexDeclaration
 
class  FInstancedParticleTileVertexDeclaration
 
struct  FSimulationCommandGPU
 
class  FParticleInjectionVS
 
class  TParticleInjectionPS< StaticPropertiesOnly >
 
class  FParticleInjectionVertexDeclaration
 
class  FParticleSimVisualizeVS
 
class  FParticleSimVisualizePS
 
class  FParticleSimVisualizeVertexDeclaration
 
class  FParticleBoundsCS
 
struct  FParticleEmitterSimulationResources
 
class  FParticleTileVertexBuffer
 
class  FGPUParticleVertexBuffer
 
class  FParticleSimulationGPU
 
class  FGPUSpriteResources
 
class  FGPUSpriteCollectorResources
 
struct  FGPUSpriteDynamicEmitterData
 
class  FGPUSpriteParticleEmitterInstance
 

Macros

#define TRACK_TILE_ALLOCATIONS   0
 
#define PARTICLE_BOUNDS_THREADS   64
 

Typedefs

typedef TUniformBufferRef< FGPUSpriteEmitterUniformParametersFGPUSpriteEmitterUniformBufferRef
 
typedef TUniformBufferRef< FGPUSpriteEmitterDynamicUniformParametersFGPUSpriteEmitterDynamicUniformBufferRef
 
typedef TUniformBufferRef< FParticleSimulationParametersFParticleSimulationBufferRef
 
typedef TUniformBufferRef< FVectorFieldUniformParametersFVectorFieldUniformBufferRef
 
typedef TUniformBufferRef< FParticleInjectionParametersFParticleInjectionBufferRef
 
typedef TUniformBufferRef< FParticleSimVisualizeParametersFParticleSimVisualizeBufferRef
 
typedef TUniformBufferRef< FParticleBoundsParametersFParticleBoundsUniformBufferRef
 

Enumerations

enum  { TILES_PER_INSTANCE = 8 }
 
enum  { MAX_VECTOR_FIELDS = 4 }
 

Functions

 DECLARE_CYCLE_STAT (TEXT("GPUSpriteEmitterInstance Init GT"), STAT_GPUSpriteEmitterInstance_Init, STATGROUP_Particles)
 
 DECLARE_GPU_STAT_NAMED (ParticleSimulation, TEXT("Particle Simulation"))
 
 IMPLEMENT_GLOBAL_SHADER_PARAMETER_STRUCT (FGPUSpriteEmitterUniformParameters, "EmitterUniforms")
 
 IMPLEMENT_GLOBAL_SHADER_PARAMETER_STRUCT (FGPUSpriteEmitterDynamicUniformParameters, "EmitterDynamicUniforms")
 
 IMPLEMENT_TYPE_LAYOUT (FGPUSpriteVertexFactoryShaderParametersVS)
 
 IMPLEMENT_TYPE_LAYOUT (FGPUSpriteVertexFactoryShaderParametersPS)
 
 IMPLEMENT_VERTEX_FACTORY_PARAMETER_TYPE (FGPUSpriteVertexFactory, SF_Vertex, FGPUSpriteVertexFactoryShaderParametersVS)
 
 IMPLEMENT_VERTEX_FACTORY_PARAMETER_TYPE (FGPUSpriteVertexFactory, SF_Pixel, FGPUSpriteVertexFactoryShaderParametersPS)
 
 IMPLEMENT_VERTEX_FACTORY_TYPE (FGPUSpriteVertexFactory,"/Engine/Private/ParticleGPUSpriteVertexFactory.ush", EVertexFactoryFlags::UsedWithMaterials|EVertexFactoryFlags::SupportsDynamicLighting|EVertexFactoryFlags::SupportsPSOPrecaching)
 
 IMPLEMENT_GLOBAL_SHADER_PARAMETER_STRUCT (FParticleSimulationParameters, "Simulation")
 
FParticlePerFrameSimulationShaderParameters GetParticlePerFrameSimulationShaderParameters (const FParticlePerFrameSimulationParameters &Parameters, bool bUseFixDT)
 
 IMPLEMENT_GLOBAL_SHADER_PARAMETER_STRUCT (FVectorFieldUniformParameters, "VectorFields")
 
 IMPLEMENT_SHADER_TYPE (, FParticleTileVS, TEXT("/Engine/Private/ParticleSimulationShader.usf"), TEXT("VertexMain"), SF_Vertex)
 
 IMPLEMENT_SHADER_TYPE (template<>, TParticleSimulationPS< PCM_None >, TEXT("/Engine/Private/ParticleSimulationShader.usf"), TEXT("PixelMain"), SF_Pixel)
 
 IMPLEMENT_SHADER_TYPE (template<>, TParticleSimulationPS< PCM_DepthBuffer >, TEXT("/Engine/Private/ParticleSimulationShader.usf"), TEXT("PixelMain"), SF_Pixel)
 
 IMPLEMENT_SHADER_TYPE (template<>, TParticleSimulationPS< PCM_DistanceField >, TEXT("/Engine/Private/ParticleSimulationShader.usf"), TEXT("PixelMain"), SF_Pixel)
 
 IMPLEMENT_SHADER_TYPE (, FParticleSimulationClearPS, TEXT("/Engine/Private/ParticleSimulationShader.usf"), TEXT("PixelMain"), SF_Pixel)
 
FORCEINLINE int32 ComputeAlignedTileCount (int32 TileCount)
 
template<EParticleCollisionShaderMode CollisionMode>
void ExecuteSimulationCommands (FRHICommandList &RHICmdList, FGraphicsPipelineStateInitializer &GraphicsPSOInit, ERHIFeatureLevel::Type FeatureLevel, const TArray< FSimulationCommandGPU > &SimulationCommands, FParticleSimulationResources *ParticleSimulationResources, const TUniformBufferRef< FViewUniformShaderParameters > &ViewUniformBuffer, const FGlobalDistanceFieldParameterData *GlobalDistanceFieldParameterData, FRHIUniformBuffer *SceneTexturesUniformBuffer, bool bUseFixDT)
 
void ExecuteSimulationCommands (FRHICommandList &RHICmdList, FGraphicsPipelineStateInitializer &GraphicsPSOInit, ERHIFeatureLevel::Type FeatureLevel, const TArray< FSimulationCommandGPU > &SimulationCommands, FParticleSimulationResources *ParticleSimulationResources, const TUniformBufferRef< FViewUniformShaderParameters > &ViewUniformBuffer, const FGlobalDistanceFieldParameterData *GlobalDistanceFieldParameterData, FRHIUniformBuffer *SceneTexturesUniformBuffer, EParticleSimulatePhase::Type Phase, bool bUseFixDT)
 
void ClearTiles (FRHICommandList &RHICmdList, FGraphicsPipelineStateInitializer &GraphicsPSOInit, ERHIFeatureLevel::Type FeatureLevel, const TArray< uint32 > &Tiles, const FParticleSimulationResources *ParticleSimulationResources)
 
 IMPLEMENT_GLOBAL_SHADER_PARAMETER_STRUCT (FParticleInjectionParameters, "ParticleInjection")
 
 IMPLEMENT_SHADER_TYPE (, FParticleInjectionVS, TEXT("/Engine/Private/ParticleInjectionShader.usf"), TEXT("VertexMain"), SF_Vertex)
 
 IMPLEMENT_SHADER_TYPE (template<>, TParticleInjectionPS< false >, TEXT("/Engine/Private/ParticleInjectionShader.usf"), TEXT("PixelMain"), SF_Pixel)
 
 IMPLEMENT_SHADER_TYPE (template<>, TParticleInjectionPS< true >, TEXT("/Engine/Private/ParticleInjectionShader.usf"), TEXT("PixelMain"), SF_Pixel)
 
template<bool StaticPropertiesOnly>
void InjectNewParticles (FRHICommandList &RHICmdList, FGraphicsPipelineStateInitializer &GraphicsPSOInit, ERHIFeatureLevel::Type FeatureLevel, const TArray< FNewParticle > &NewParticles, const FParticleSimulationResources *ParticleSimulationResources)
 
 IMPLEMENT_GLOBAL_SHADER_PARAMETER_STRUCT (FParticleSimVisualizeParameters,"PSV")
 
 IMPLEMENT_SHADER_TYPE (, FParticleSimVisualizeVS, TEXT("/Engine/Private/ParticleSimVisualizeShader.usf"), TEXT("VertexMain"), SF_Vertex)
 
 IMPLEMENT_SHADER_TYPE (, FParticleSimVisualizePS, TEXT("/Engine/Private/ParticleSimVisualizeShader.usf"), TEXT("PixelMain"), SF_Pixel)
 
 IMPLEMENT_GLOBAL_SHADER_PARAMETER_STRUCT (FParticleBoundsParameters,"ParticleBounds")
 
 IMPLEMENT_SHADER_TYPE (, FParticleBoundsCS, TEXT("/Engine/Private/ParticleBoundsShader.usf"), TEXT("ComputeParticleBounds"), SF_Compute)
 
FGPUSpriteResourcesBeginCreateGPUSpriteResources (const FGPUSpriteResourceData &InResourceData)
 
void BeginUpdateGPUSpriteResources (FGPUSpriteResources *Resources, const FGPUSpriteResourceData &InResourceData)
 
void BeginReleaseGPUSpriteResources (FGPUSpriteResources *Resources)
 
void ParticleGPUSimulationGlobalPSOCollector (const FSceneTexturesConfig &SceneTexturesConfig, int32 GlobalPSOCollectorIndex, TArray< FPSOPrecacheData > &PSOInitializers)
 
FRegisterGlobalPSOCollectorFunction RegisterParticleGPUSimulationGlobalPSOCollectorParticleGPUSimulationGlobalPSOCollector ("ParticleGPUSimulationGlobalPSOCollector")
 

Variables

int32 GParticleSimulationTextureSizeX = 1024
 
int32 GParticleSimulationTextureSizeY = 1024
 
FAutoConsoleVariableRef CVarParticleSimulationSizeY (TEXT("fx.GPUSimulationTextureSizeY"), GParticleSimulationTextureSizeY, TEXT("GPU Particle simulation texture Y dimension (default=1024); set in project renderer settings, potentially overridden by device profile."), ECVF_ReadOnly)
 
int32 GParticleSimulationDynTextureSizeXY = 16
 
FAutoConsoleVariableRef CVarParticleSimulationDynTextureSizeXY (TEXT("fx.GPUSimulationDynTextureSizeXY"), GParticleSimulationDynTextureSizeXY, TEXT("GPU Particle simulation texture XY dimension when dynamic resizing is enabled (default=16)"), ECVF_ReadOnly)
 
const int32 GParticleSimulationTileSize = 4
 
const int32 GParticlesPerTile = GParticleSimulationTileSize * GParticleSimulationTileSize
 
TGlobalResource< FGPUSpriteVertexDeclarationGGPUSpriteVertexDeclaration
 
TGlobalResource< FParticleTileVertexDeclarationGParticleTileVertexDeclaration
 
TGlobalResource< FInstancedParticleTileVertexDeclarationGInstancedParticleTileVertexDeclaration
 
TGlobalResource< FParticleInjectionVertexDeclarationGParticleInjectionVertexDeclaration
 
TGlobalResource< FParticleSimVisualizeVertexDeclarationGParticleSimVisualizeVertexDeclaration
 

Macro Definition Documentation

◆ PARTICLE_BOUNDS_THREADS

#define PARTICLE_BOUNDS_THREADS   64

The number of threads per group used to generate particle keys.

◆ TRACK_TILE_ALLOCATIONS

#define TRACK_TILE_ALLOCATIONS   0

Enable this define to permit tracking of tile allocations by GPU emitters.

Typedef Documentation

◆ FGPUSpriteEmitterDynamicUniformBufferRef

◆ FGPUSpriteEmitterUniformBufferRef

◆ FParticleBoundsUniformBufferRef

◆ FParticleInjectionBufferRef

◆ FParticleSimulationBufferRef

◆ FParticleSimVisualizeBufferRef

◆ FVectorFieldUniformBufferRef

Enumeration Type Documentation

◆ anonymous enum

Tile size must be power-of-two and <= each dimension of the simulation texture. GPU particle rendering code assumes that the number of particles per instanced draw is <= 16. Also, it must be a power of 2. Particle tiles are aligned to the same number as when rendering.

Enumerator
TILES_PER_INSTANCE 

◆ anonymous enum

The number of tiles per instance must be <= MAX_PARTICLES_PER_INSTANCE. Also, it must be a power of 2. Maximum number of vector fields that can be evaluated at once.

Enumerator
MAX_VECTOR_FIELDS 

Function Documentation

◆ BeginCreateGPUSpriteResources()

FGPUSpriteResources * BeginCreateGPUSpriteResources ( const FGPUSpriteResourceData InResourceData)

Allocates memory to hold GPU sprite resources and begins the resource initialization process.

Parameters
InResourceDataThe data with which to create resources.
Returns
a pointer to sprite resources.

◆ BeginReleaseGPUSpriteResources()

void BeginReleaseGPUSpriteResources ( FGPUSpriteResources Resources)

Begins the process of releasing GPU sprite resources. Memory will be freed during this time and the pointer should be considered invalid after this call.

Parameters
ResourcesThe resources to be released.

◆ BeginUpdateGPUSpriteResources()

void BeginUpdateGPUSpriteResources ( FGPUSpriteResources Resources,
const FGPUSpriteResourceData InResourceData 
)

Updates GPU sprite resources.

Parameters
ResourcesSprite resources to update.
InResourceDataData with which to update resources.

◆ ClearTiles()

void ClearTiles ( FRHICommandList RHICmdList,
FGraphicsPipelineStateInitializer GraphicsPSOInit,
ERHIFeatureLevel::Type  FeatureLevel,
const TArray< uint32 > &  Tiles,
const FParticleSimulationResources ParticleSimulationResources 
)

Invokes the clear simulation shader for each particle in each tile.

Parameters
Tiles- The list of tiles to clear.

◆ ComputeAlignedTileCount()

FORCEINLINE int32 ComputeAlignedTileCount ( int32  TileCount)

Computes the aligned tile count.

◆ DECLARE_CYCLE_STAT()

DECLARE_CYCLE_STAT ( TEXT("GPUSpriteEmitterInstance Init GT" ,
STAT_GPUSpriteEmitterInstance_Init  ,
STATGROUP_Particles   
)

◆ DECLARE_GPU_STAT_NAMED()

DECLARE_GPU_STAT_NAMED ( ParticleSimulation  ,
TEXT("Particle Simulation"  
)

◆ ExecuteSimulationCommands() [1/2]

template<EParticleCollisionShaderMode CollisionMode>
void ExecuteSimulationCommands ( FRHICommandList RHICmdList,
FGraphicsPipelineStateInitializer GraphicsPSOInit,
ERHIFeatureLevel::Type  FeatureLevel,
const TArray< FSimulationCommandGPU > &  SimulationCommands,
FParticleSimulationResources ParticleSimulationResources,
const TUniformBufferRef< FViewUniformShaderParameters > &  ViewUniformBuffer,
const FGlobalDistanceFieldParameterData GlobalDistanceFieldParameterData,
FRHIUniformBuffer SceneTexturesUniformBuffer,
bool  bUseFixDT 
)

Executes each command invoking the simulation pixel shader for each particle. calling with empty SimulationCommands is a waste of performance

Parameters
SimulationCommandsThe list of simulation commands to execute.
TextureResourcesThe resources from which the current state can be read.
AttributeTextureThe texture from which particle simulation attributes can be read.
CollisionViewThe view to use for collision, if any.

◆ ExecuteSimulationCommands() [2/2]

void ExecuteSimulationCommands ( FRHICommandList RHICmdList,
FGraphicsPipelineStateInitializer GraphicsPSOInit,
ERHIFeatureLevel::Type  FeatureLevel,
const TArray< FSimulationCommandGPU > &  SimulationCommands,
FParticleSimulationResources ParticleSimulationResources,
const TUniformBufferRef< FViewUniformShaderParameters > &  ViewUniformBuffer,
const FGlobalDistanceFieldParameterData GlobalDistanceFieldParameterData,
FRHIUniformBuffer SceneTexturesUniformBuffer,
EParticleSimulatePhase::Type  Phase,
bool  bUseFixDT 
)

◆ GetParticlePerFrameSimulationShaderParameters()

FParticlePerFrameSimulationShaderParameters GetParticlePerFrameSimulationShaderParameters ( const FParticlePerFrameSimulationParameters Parameters,
bool  bUseFixDT 
)

◆ IMPLEMENT_GLOBAL_SHADER_PARAMETER_STRUCT() [1/7]

IMPLEMENT_GLOBAL_SHADER_PARAMETER_STRUCT ( FGPUSpriteEmitterDynamicUniformParameters  ,
"EmitterDynamicUniforms"   
)

Uniform buffer to hold dynamic parameters for GPU particle sprite emitters.

◆ IMPLEMENT_GLOBAL_SHADER_PARAMETER_STRUCT() [2/7]

IMPLEMENT_GLOBAL_SHADER_PARAMETER_STRUCT ( FGPUSpriteEmitterUniformParameters  ,
"EmitterUniforms"   
)

Uniform buffer for GPU particle sprite emitters.

◆ IMPLEMENT_GLOBAL_SHADER_PARAMETER_STRUCT() [3/7]

IMPLEMENT_GLOBAL_SHADER_PARAMETER_STRUCT ( FParticleBoundsParameters  ,
"ParticleBounds"   
)

Uniform buffer parameters for generating particle bounds.

◆ IMPLEMENT_GLOBAL_SHADER_PARAMETER_STRUCT() [4/7]

IMPLEMENT_GLOBAL_SHADER_PARAMETER_STRUCT ( FParticleInjectionParameters  ,
"ParticleInjection"   
)

Uniform buffer to hold parameters for particle simulation.

◆ IMPLEMENT_GLOBAL_SHADER_PARAMETER_STRUCT() [5/7]

IMPLEMENT_GLOBAL_SHADER_PARAMETER_STRUCT ( FParticleSimulationParameters  ,
"Simulation"   
)

Uniform buffer to hold parameters for particle simulation.

◆ IMPLEMENT_GLOBAL_SHADER_PARAMETER_STRUCT() [6/7]

IMPLEMENT_GLOBAL_SHADER_PARAMETER_STRUCT ( FParticleSimVisualizeParameters  ,
"PSV"   
)

Uniform buffer to hold parameters for visualizing particle simulation.

◆ IMPLEMENT_GLOBAL_SHADER_PARAMETER_STRUCT() [7/7]

IMPLEMENT_GLOBAL_SHADER_PARAMETER_STRUCT ( FVectorFieldUniformParameters  ,
"VectorFields"   
)

Uniform buffer to hold parameters for vector fields sampled during particle simulation.

◆ IMPLEMENT_SHADER_TYPE() [1/11]

IMPLEMENT_SHADER_TYPE ( FParticleBoundsCS  ,
TEXT("/Engine/Private/ParticleBoundsShader.usf" ,
TEXT("ComputeParticleBounds")  ,
SF_Compute   
)

◆ IMPLEMENT_SHADER_TYPE() [2/11]

IMPLEMENT_SHADER_TYPE ( FParticleInjectionVS  ,
TEXT("/Engine/Private/ParticleInjectionShader.usf" ,
TEXT("VertexMain")  ,
SF_Vertex   
)

Implementation for all shaders used for particle injection.

◆ IMPLEMENT_SHADER_TYPE() [3/11]

IMPLEMENT_SHADER_TYPE ( FParticleSimulationClearPS  ,
TEXT("/Engine/Private/ParticleSimulationShader.usf" ,
TEXT("PixelMain")  ,
SF_Pixel   
)

◆ IMPLEMENT_SHADER_TYPE() [4/11]

IMPLEMENT_SHADER_TYPE ( FParticleSimVisualizePS  ,
TEXT("/Engine/Private/ParticleSimVisualizeShader.usf" ,
TEXT("PixelMain")  ,
SF_Pixel   
)

◆ IMPLEMENT_SHADER_TYPE() [5/11]

IMPLEMENT_SHADER_TYPE ( FParticleSimVisualizeVS  ,
TEXT("/Engine/Private/ParticleSimVisualizeShader.usf" ,
TEXT("VertexMain")  ,
SF_Vertex   
)

Implementation for all shaders used for visualization.

◆ IMPLEMENT_SHADER_TYPE() [6/11]

IMPLEMENT_SHADER_TYPE ( FParticleTileVS  ,
TEXT("/Engine/Private/ParticleSimulationShader.usf" ,
TEXT("VertexMain")  ,
SF_Vertex   
)

Implementation for all shaders used for simulation.

◆ IMPLEMENT_SHADER_TYPE() [7/11]

IMPLEMENT_SHADER_TYPE ( template<>  ,
TParticleInjectionPS< false ,
TEXT("/Engine/Private/ParticleInjectionShader.usf" ,
TEXT("PixelMain")  ,
SF_Pixel   
)

◆ IMPLEMENT_SHADER_TYPE() [8/11]

IMPLEMENT_SHADER_TYPE ( template<>  ,
TParticleInjectionPS< true ,
TEXT("/Engine/Private/ParticleInjectionShader.usf" ,
TEXT("PixelMain")  ,
SF_Pixel   
)

◆ IMPLEMENT_SHADER_TYPE() [9/11]

IMPLEMENT_SHADER_TYPE ( template<>  ,
TParticleSimulationPS< PCM_DepthBuffer ,
TEXT("/Engine/Private/ParticleSimulationShader.usf" ,
TEXT("PixelMain")  ,
SF_Pixel   
)

◆ IMPLEMENT_SHADER_TYPE() [10/11]

IMPLEMENT_SHADER_TYPE ( template<>  ,
TParticleSimulationPS< PCM_DistanceField ,
TEXT("/Engine/Private/ParticleSimulationShader.usf" ,
TEXT("PixelMain")  ,
SF_Pixel   
)

◆ IMPLEMENT_SHADER_TYPE() [11/11]

IMPLEMENT_SHADER_TYPE ( template<>  ,
TParticleSimulationPS< PCM_None ,
TEXT("/Engine/Private/ParticleSimulationShader.usf" ,
TEXT("PixelMain")  ,
SF_Pixel   
)

◆ IMPLEMENT_TYPE_LAYOUT() [1/2]

IMPLEMENT_TYPE_LAYOUT ( FGPUSpriteVertexFactoryShaderParametersPS  )

◆ IMPLEMENT_TYPE_LAYOUT() [2/2]

IMPLEMENT_TYPE_LAYOUT ( FGPUSpriteVertexFactoryShaderParametersVS  )

◆ IMPLEMENT_VERTEX_FACTORY_PARAMETER_TYPE() [1/2]

IMPLEMENT_VERTEX_FACTORY_PARAMETER_TYPE ( FGPUSpriteVertexFactory  ,
SF_Pixel  ,
FGPUSpriteVertexFactoryShaderParametersPS   
)

◆ IMPLEMENT_VERTEX_FACTORY_PARAMETER_TYPE() [2/2]

IMPLEMENT_VERTEX_FACTORY_PARAMETER_TYPE ( FGPUSpriteVertexFactory  ,
SF_Vertex  ,
FGPUSpriteVertexFactoryShaderParametersVS   
)

◆ IMPLEMENT_VERTEX_FACTORY_TYPE()

◆ InjectNewParticles()

template<bool StaticPropertiesOnly>
void InjectNewParticles ( FRHICommandList RHICmdList,
FGraphicsPipelineStateInitializer GraphicsPSOInit,
ERHIFeatureLevel::Type  FeatureLevel,
const TArray< FNewParticle > &  NewParticles,
const FParticleSimulationResources ParticleSimulationResources 
)

Injects new particles in to the GPU simulation.

Parameters
NewParticles- A list of particles to inject in to the simulation.

◆ ParticleGPUSimulationGlobalPSOCollector() [1/2]

FRegisterGlobalPSOCollectorFunction RegisterParticleGPUSimulationGlobalPSOCollector & ParticleGPUSimulationGlobalPSOCollector ( "ParticleGPUSimulationGlobalPSOCollector"  )

◆ ParticleGPUSimulationGlobalPSOCollector() [2/2]

void ParticleGPUSimulationGlobalPSOCollector ( const FSceneTexturesConfig SceneTexturesConfig,
int32  GlobalPSOCollectorIndex,
TArray< FPSOPrecacheData > &  PSOInitializers 
)

Variable Documentation

◆ CVarParticleSimulationDynTextureSizeXY

FAutoConsoleVariableRef CVarParticleSimulationDynTextureSizeXY(TEXT("fx.GPUSimulationDynTextureSizeXY"), GParticleSimulationDynTextureSizeXY, TEXT("GPU Particle simulation texture XY dimension when dynamic resizing is enabled (default=16)"), ECVF_ReadOnly) ( TEXT("fx.GPUSimulationDynTextureSizeXY")  ,
GParticleSimulationDynTextureSizeXY  ,
TEXT("GPU Particle simulation texture XY dimension when dynamic resizing is enabled (default=16)")  ,
ECVF_ReadOnly   
)

◆ CVarParticleSimulationSizeY

FAutoConsoleVariableRef CVarParticleSimulationSizeY(TEXT("fx.GPUSimulationTextureSizeY"), GParticleSimulationTextureSizeY, TEXT("GPU Particle simulation texture Y dimension (default=1024); set in project renderer settings, potentially overridden by device profile."), ECVF_ReadOnly) ( TEXT("fx.GPUSimulationTextureSizeY")  ,
GParticleSimulationTextureSizeY  ,
TEXT("GPU Particle simulation texture Y dimension (default=1024); set in project renderer settings, potentially overridden by device profile." ,
ECVF_ReadOnly   
)

◆ GGPUSpriteVertexDeclaration

TGlobalResource<FGPUSpriteVertexDeclaration> GGPUSpriteVertexDeclaration

Global GPU sprite vertex declaration.

◆ GInstancedParticleTileVertexDeclaration

TGlobalResource<FInstancedParticleTileVertexDeclaration> GInstancedParticleTileVertexDeclaration

◆ GParticleInjectionVertexDeclaration

TGlobalResource<FParticleInjectionVertexDeclaration> GParticleInjectionVertexDeclaration

The global particle injection vertex declaration.

◆ GParticleSimulationDynTextureSizeXY

int32 GParticleSimulationDynTextureSizeXY = 16

◆ GParticleSimulationTextureSizeX

int32 GParticleSimulationTextureSizeX = 1024

The texture size allocated for GPU simulation.

◆ GParticleSimulationTextureSizeY

int32 GParticleSimulationTextureSizeY = 1024

◆ GParticleSimulationTileSize

const int32 GParticleSimulationTileSize = 4

The tile size. Texture space is allocated in TileSize x TileSize units.

◆ GParticleSimVisualizeVertexDeclaration

TGlobalResource<FParticleSimVisualizeVertexDeclaration> GParticleSimVisualizeVertexDeclaration

Global vertex declaration resource for particle sim visualization.

◆ GParticlesPerTile

◆ GParticleTileVertexDeclaration

TGlobalResource<FParticleTileVertexDeclaration> GParticleTileVertexDeclaration

Global vertex declaration resource for particle sim visualization.