11#include "VectorField.h"
22class UParticleSystemComponent;
204 virtual void Suspend()
override;
205 virtual void Resume()
override;
258 return ParticleSimulationResources;
310 void InitGPUSimulation();
315 virtual void DestroyGPUSimulation();
320 void InitGPUResources();
325 void ReleaseGPUResources();
332 bool UsesGlobalDistanceFieldInternal()
const;
333 bool UsesDepthBufferInternal()
const;
334 bool RequiresEarlyViewUniformBufferInternal()
const;
335 bool RequiresRayTracingSceneInternal()
const;
347 void SimulateGPUParticles(
358 void VisualizeGPUParticles(
FCanvas* Canvas);
362 template<
typename TVectorFieldUniformParametersType>
363 void SimulateGPUParticles_Internal(
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
EParticleCollisionShaderMode
Definition FXSystemPrivate.h:56
@ PCM_DepthBuffer
Definition FXSystemPrivate.h:58
@ PCM_None
Definition FXSystemPrivate.h:57
@ PCM_DistanceField
Definition FXSystemPrivate.h:59
bool IsParticleCollisionModeSupported(EShaderPlatform InPlatform, EParticleCollisionShaderMode InCollisionShaderMode)
Definition FXSystem.cpp:27
EParticleSimulatePhase::Type GetLastParticleSimulationPhase(EShaderPlatform InPlatform)
Definition FXSystemPrivate.h:65
EGPUSortFlags
Definition GPUSortManager.h:95
@ PVFT_MAX
Definition ParticleVertexFactory.h:24
#define GShaderPlatformForFeatureLevel
Definition RHIGlobals.h:915
#define DECLARE_VERTEX_FACTORY_TYPE(FactoryClass)
Definition VertexFactory.h:548
EVertexInputStreamType
Definition VertexFactory.h:128
Definition CanvasTypes.h:211
Definition FXSystem.h:131
Definition FXSystemPrivate.h:188
virtual bool UsesDepthBuffer() const override
Definition FXSystem.cpp:477
static const FName Name
Definition FXSystemPrivate.h:197
void OnSimulationPhaseChanged(const FParticleSimulationGPU *Simulation, EParticleSimulatePhase::Type PrevPhase)
Definition ParticleGpuSimulation.cpp:5176
FParticleEmitterInstance * CreateGPUSpriteEmitterInstance(IParticleEmitterInstanceOwner &InComponent, FGPUSpriteEmitterInfo &EmitterInfo)
Definition ParticleGpuSimulation.cpp:5265
virtual void RemoveVectorField(UVectorFieldComponent *VectorFieldComponent) override
Definition FXSystem.cpp:374
void RemoveGPUSimulation(FParticleSimulationGPU *Simulation)
Definition ParticleGpuSimulation.cpp:4601
virtual void PostInitViews(FRDGBuilder &GraphBuilder, TConstStridedView< FSceneView > Views, bool bAllowGPUParticleUpdate) override
Definition FXSystem.cpp:462
virtual FFXSystemInterface * GetInterface(const FName &InName) override
Definition FXSystem.cpp:273
virtual void OnMarkPendingKill() override
Definition FXSystem.cpp:299
bool AddSortedGPUSimulation(FRHICommandListBase &RHICmdList, FParticleSimulationGPU *Simulation, const FVector &ViewOrigin, bool bIsTranslucent, FGPUSortManager::FAllocationInfo &OutInfo)
Definition ParticleGpuSimulation.cpp:4620
void FinalizeGPUSimulation(FRHICommandListImmediate &RHICmdList)
Definition ParticleGpuSimulation.cpp:4772
virtual void SetSceneTexturesUniformBuffer(const TUniformBufferRef< FSceneTextureUniformParameters > &InSceneTexturesUniformParams) override
Definition FXSystemPrivate.h:279
void AddGPUSimulation(FParticleSimulationGPU *Simulation)
Definition ParticleGpuSimulation.cpp:4579
virtual bool UsesGlobalDistanceField() const override
Definition FXSystem.cpp:467
void PrepareGPUSimulation(FRHICommandListImmediate &RHICmdList)
Definition ParticleGpuSimulation.cpp:4760
virtual void DrawDebug(FCanvas *Canvas) override
Definition FXSystem.cpp:441
virtual void AddVectorField(UVectorFieldComponent *VectorFieldComponent) override
Definition FXSystem.cpp:345
virtual ~FFXSystem()
Definition FXSystem.cpp:265
EShaderPlatform GetShaderPlatform() const
Definition FXSystemPrivate.h:233
FParticleSimulationResources * GetParticleSimulationResources()
Definition FXSystemPrivate.h:256
virtual void UpdateVectorField(UVectorFieldComponent *VectorFieldComponent) override
Definition FXSystem.cpp:400
virtual bool RequiresEarlyViewUniformBuffer() const override
Definition FXSystem.cpp:487
virtual void PostRenderOpaque(FRDGBuilder &GraphBuilder, TConstStridedView< FSceneView > Views, FSceneUniformBuffer &SceneUniformBuffer, bool bAllowGPUParticleUpdate) override
Definition FXSystem.cpp:549
ERHIFeatureLevel::Type GetFeatureLevel() const
Definition FXSystemPrivate.h:228
virtual void PreInitViews(class FRDGBuilder &GraphBuilder, bool bAllowGPUParticleUpdate, const TArrayView< const FSceneViewFamily * > &ViewFamilies, const FSceneViewFamily *CurrentFamily) override
Definition FXSystem.cpp:452
virtual void PreRender(FRDGBuilder &GraphBuilder, TConstStridedView< FSceneView > Views, FSceneUniformBuffer &SceneUniformBuffer, bool bAllowGPUParticleUpdate) override
Definition FXSystem.cpp:510
virtual bool RequiresRayTracingScene() const override
Definition FXSystem.cpp:497
virtual FGPUSortManager * GetGPUSortManager() const override
Definition FXSystem.cpp:573
Definition GPUSortManager.h:167
Definition FXSystemPrivate.h:114
static void ModifyCompilationEnvironment(const FVertexFactoryShaderPermutationParameters &Parameters, FShaderCompilerEnvironment &OutEnvironment)
Definition ParticleGpuSimulation.cpp:933
void SetUnsortedParticleIndicesSRV(FRHIShaderResourceView *VertexBuffer)
Definition FXSystemPrivate.h:159
static void GetPSOPrecacheVertexFetchElements(EVertexInputStreamType VertexInputStreamType, FVertexDeclarationElementList &Elements)
Definition ParticleGpuSimulation.cpp:897
FGPUSpriteVertexFactory()
Definition FXSystemPrivate.h:140
FUniformBufferRHIRef EmitterDynamicUniformBuffer
Definition FXSystemPrivate.h:126
virtual bool RendersPrimitivesAsCameraFacingSprites() const override
Definition FXSystemPrivate.h:154
FVector3f LWCTile
Definition FXSystemPrivate.h:136
FRHITexture * PositionTextureRHI
Definition FXSystemPrivate.h:130
FRHIUniformBuffer * EmitterUniformBuffer
Definition FXSystemPrivate.h:124
virtual void InitRHI(FRHICommandListBase &RHICmdList) override
Definition ParticleGpuSimulation.cpp:905
FGPUSpriteVertexFactory(ERHIFeatureLevel::Type InFeatureLevel)
Definition FXSystemPrivate.h:118
FRHIShaderResourceView * UnsortedParticleIndicesSRV
Definition FXSystemPrivate.h:128
FVector3f TilePageScale
Definition FXSystemPrivate.h:138
static bool ShouldCompilePermutation(const FVertexFactoryShaderPermutationParameters &Parameters)
Definition ParticleGpuSimulation.cpp:925
FRHITexture * AttributesTextureRHI
Definition FXSystemPrivate.h:134
FRHITexture * VelocityTextureRHI
Definition FXSystemPrivate.h:132
Definition GlobalDistanceFieldParameters.h:18
Definition NameTypes.h:617
Definition ParticleGpuSimulation.cpp:2544
Definition ParticleGpuSimulation.cpp:513
Definition ParticleVertexFactory.h:31
Definition RenderGraphBuilder.h:49
Definition RHICommandList.h:455
Definition RHIResources.h:3304
Definition RHIResources.h:2153
Definition RHIResources.h:3294
Definition SceneView.h:2212
Definition ParticleEmitterInstanceOwner.h:29
Definition ArrayView.h:139
Definition VectorFieldComponent.h:19
Definition FXSystemPrivate.h:37
Type
Definition FXSystemPrivate.h:39
@ Last
Definition FXSystemPrivate.h:51
@ CollisionDistanceField
Definition FXSystemPrivate.h:42
@ First
Definition FXSystemPrivate.h:49
@ Main
Definition FXSystemPrivate.h:41
@ CollisionDepthBuffer
Definition FXSystemPrivate.h:44
Definition SceneComponent.h:24
Type
Definition RHIFeatureLevel.h:20
Definition GPUSortManager.h:172
Definition ParticleModuleTypeDataGpu.h:95
Definition FXSystemPrivate.h:78
FVector3f Position
Definition FXSystemPrivate.h:80
float VectorFieldScale
Definition FXSystemPrivate.h:96
FVector3f Velocity
Definition FXSystemPrivate.h:84
float RelativeTime
Definition FXSystemPrivate.h:82
FVector2f Size
Definition FXSystemPrivate.h:88
float Rotation
Definition FXSystemPrivate.h:90
int32 AllocatedTileIndex
Definition FXSystemPrivate.h:101
FVector3f Offset
Definition FXSystemPrivate.h:106
float Resilience
Definition FXSystemPrivate.h:100
union FNewParticle::@1087 ResilienceAndTileIndex
float DragCoefficient
Definition FXSystemPrivate.h:94
float RelativeRotationRate
Definition FXSystemPrivate.h:92
float TimeScale
Definition FXSystemPrivate.h:86
float RandomOrbit
Definition FXSystemPrivate.h:104
Definition ParticleEmitterInstances.h:226
Definition ShaderCore.h:544
Definition MeshMaterialShader.h:44