![]() |
UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
|
#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"Macros | |
| #define | TRACK_TILE_ALLOCATIONS 0 |
| #define | PARTICLE_BOUNDS_THREADS 64 |
Enumerations | |
| enum | { TILES_PER_INSTANCE = 8 } |
| enum | { MAX_VECTOR_FIELDS = 4 } |
| #define PARTICLE_BOUNDS_THREADS 64 |
The number of threads per group used to generate particle keys.
| #define TRACK_TILE_ALLOCATIONS 0 |
Enable this define to permit tracking of tile allocations by GPU emitters.
| typedef TUniformBufferRef<FGPUSpriteEmitterDynamicUniformParameters> FGPUSpriteEmitterDynamicUniformBufferRef |
| FGPUSpriteResources * BeginCreateGPUSpriteResources | ( | const FGPUSpriteResourceData & | InResourceData | ) |
Allocates memory to hold GPU sprite resources and begins the resource initialization process.
| InResourceData | The data with which to create resources. |
| 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.
| Resources | The resources to be released. |
| void BeginUpdateGPUSpriteResources | ( | FGPUSpriteResources * | Resources, |
| const FGPUSpriteResourceData & | InResourceData | ||
| ) |
Updates GPU sprite resources.
| Resources | Sprite resources to update. |
| InResourceData | Data with which to update resources. |
| 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.
| Tiles | - The list of tiles to clear. |
| FORCEINLINE int32 ComputeAlignedTileCount | ( | int32 | TileCount | ) |
Computes the aligned tile count.
| DECLARE_CYCLE_STAT | ( | TEXT("GPUSpriteEmitterInstance Init GT") | , |
| STAT_GPUSpriteEmitterInstance_Init | , | ||
| STATGROUP_Particles | |||
| ) |
| DECLARE_GPU_STAT_NAMED | ( | ParticleSimulation | , |
| TEXT("Particle Simulation") | |||
| ) |
| 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
| SimulationCommands | The list of simulation commands to execute. |
| TextureResources | The resources from which the current state can be read. |
| AttributeTexture | The texture from which particle simulation attributes can be read. |
| CollisionView | The view to use for collision, if any. |
| 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 | ||
| ) |
| FParticlePerFrameSimulationShaderParameters GetParticlePerFrameSimulationShaderParameters | ( | const FParticlePerFrameSimulationParameters & | Parameters, |
| bool | bUseFixDT | ||
| ) |
| IMPLEMENT_GLOBAL_SHADER_PARAMETER_STRUCT | ( | FGPUSpriteEmitterDynamicUniformParameters | , |
| "EmitterDynamicUniforms" | |||
| ) |
Uniform buffer to hold dynamic parameters for GPU particle sprite emitters.
| IMPLEMENT_GLOBAL_SHADER_PARAMETER_STRUCT | ( | FGPUSpriteEmitterUniformParameters | , |
| "EmitterUniforms" | |||
| ) |
Uniform buffer for GPU particle sprite emitters.
| IMPLEMENT_GLOBAL_SHADER_PARAMETER_STRUCT | ( | FParticleBoundsParameters | , |
| "ParticleBounds" | |||
| ) |
Uniform buffer parameters for generating particle bounds.
| IMPLEMENT_GLOBAL_SHADER_PARAMETER_STRUCT | ( | FParticleInjectionParameters | , |
| "ParticleInjection" | |||
| ) |
Uniform buffer to hold parameters for particle simulation.
| IMPLEMENT_GLOBAL_SHADER_PARAMETER_STRUCT | ( | FParticleSimulationParameters | , |
| "Simulation" | |||
| ) |
Uniform buffer to hold parameters for particle simulation.
| IMPLEMENT_GLOBAL_SHADER_PARAMETER_STRUCT | ( | FParticleSimVisualizeParameters | , |
| "PSV" | |||
| ) |
Uniform buffer to hold parameters for visualizing particle simulation.
| IMPLEMENT_GLOBAL_SHADER_PARAMETER_STRUCT | ( | FVectorFieldUniformParameters | , |
| "VectorFields" | |||
| ) |
Uniform buffer to hold parameters for vector fields sampled during particle simulation.
| IMPLEMENT_SHADER_TYPE | ( | FParticleBoundsCS | , |
| TEXT("/Engine/Private/ParticleBoundsShader.usf") | , | ||
| TEXT("ComputeParticleBounds") | , | ||
| SF_Compute | |||
| ) |
| IMPLEMENT_SHADER_TYPE | ( | FParticleInjectionVS | , |
| TEXT("/Engine/Private/ParticleInjectionShader.usf") | , | ||
| TEXT("VertexMain") | , | ||
| SF_Vertex | |||
| ) |
Implementation for all shaders used for particle injection.
| IMPLEMENT_SHADER_TYPE | ( | FParticleSimulationClearPS | , |
| TEXT("/Engine/Private/ParticleSimulationShader.usf") | , | ||
| TEXT("PixelMain") | , | ||
| SF_Pixel | |||
| ) |
| IMPLEMENT_SHADER_TYPE | ( | FParticleSimVisualizePS | , |
| TEXT("/Engine/Private/ParticleSimVisualizeShader.usf") | , | ||
| TEXT("PixelMain") | , | ||
| SF_Pixel | |||
| ) |
| IMPLEMENT_SHADER_TYPE | ( | FParticleSimVisualizeVS | , |
| TEXT("/Engine/Private/ParticleSimVisualizeShader.usf") | , | ||
| TEXT("VertexMain") | , | ||
| SF_Vertex | |||
| ) |
Implementation for all shaders used for visualization.
| IMPLEMENT_SHADER_TYPE | ( | FParticleTileVS | , |
| TEXT("/Engine/Private/ParticleSimulationShader.usf") | , | ||
| TEXT("VertexMain") | , | ||
| SF_Vertex | |||
| ) |
Implementation for all shaders used for simulation.
| 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 | |||
| ) |
| 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 | ( | template<> | , |
| TParticleSimulationPS< PCM_None > | , | ||
| TEXT("/Engine/Private/ParticleSimulationShader.usf") | , | ||
| TEXT("PixelMain") | , | ||
| SF_Pixel | |||
| ) |
| IMPLEMENT_TYPE_LAYOUT | ( | FGPUSpriteVertexFactoryShaderParametersPS | ) |
| IMPLEMENT_TYPE_LAYOUT | ( | FGPUSpriteVertexFactoryShaderParametersVS | ) |
| IMPLEMENT_VERTEX_FACTORY_PARAMETER_TYPE | ( | FGPUSpriteVertexFactory | , |
| SF_Pixel | , | ||
| FGPUSpriteVertexFactoryShaderParametersPS | |||
| ) |
| IMPLEMENT_VERTEX_FACTORY_PARAMETER_TYPE | ( | FGPUSpriteVertexFactory | , |
| SF_Vertex | , | ||
| FGPUSpriteVertexFactoryShaderParametersVS | |||
| ) |
| IMPLEMENT_VERTEX_FACTORY_TYPE | ( | FGPUSpriteVertexFactory | , |
| "/Engine/Private/ParticleGPUSpriteVertexFactory.ush" | , | ||
| EVertexFactoryFlags::UsedWithMaterials|EVertexFactoryFlags::SupportsDynamicLighting|EVertexFactoryFlags::SupportsPSOPrecaching | |||
| ) |
| void InjectNewParticles | ( | FRHICommandList & | RHICmdList, |
| FGraphicsPipelineStateInitializer & | GraphicsPSOInit, | ||
| ERHIFeatureLevel::Type | FeatureLevel, | ||
| const TArray< FNewParticle > & | NewParticles, | ||
| const FParticleSimulationResources * | ParticleSimulationResources | ||
| ) |
Injects new particles in to the GPU simulation.
| NewParticles | - A list of particles to inject in to the simulation. |
| FRegisterGlobalPSOCollectorFunction RegisterParticleGPUSimulationGlobalPSOCollector & ParticleGPUSimulationGlobalPSOCollector | ( | "ParticleGPUSimulationGlobalPSOCollector" | ) |
| void ParticleGPUSimulationGlobalPSOCollector | ( | const FSceneTexturesConfig & | SceneTexturesConfig, |
| int32 | GlobalPSOCollectorIndex, | ||
| TArray< FPSOPrecacheData > & | PSOInitializers | ||
| ) |
| 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 | |||
| ) |
| 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 | |||
| ) |
| TGlobalResource<FGPUSpriteVertexDeclaration> GGPUSpriteVertexDeclaration |
Global GPU sprite vertex declaration.
| TGlobalResource<FInstancedParticleTileVertexDeclaration> GInstancedParticleTileVertexDeclaration |
| TGlobalResource<FParticleInjectionVertexDeclaration> GParticleInjectionVertexDeclaration |
The global particle injection vertex declaration.
| int32 GParticleSimulationDynTextureSizeXY = 16 |
| int32 GParticleSimulationTextureSizeX = 1024 |
The texture size allocated for GPU simulation.
| int32 GParticleSimulationTextureSizeY = 1024 |
| const int32 GParticleSimulationTileSize = 4 |
The tile size. Texture space is allocated in TileSize x TileSize units.
| TGlobalResource<FParticleSimVisualizeVertexDeclaration> GParticleSimVisualizeVertexDeclaration |
Global vertex declaration resource for particle sim visualization.
| const int32 GParticlesPerTile = GParticleSimulationTileSize * GParticleSimulationTileSize |
| TGlobalResource<FParticleTileVertexDeclaration> GParticleTileVertexDeclaration |
Global vertex declaration resource for particle sim visualization.