Skip to content

GPUParticleRenderModule

class GPUParticleRenderModule : public cauldron::RenderModule

The GPUParticlesRenderModule is responsible for spawning and simulating all entities with ParticleSpawnerComponents. Actual rendering will be handled by the translucency render module (on which GPUParticles is dependent) so they can be sorted with other translucent instances.

Dependencies: ParallelSort

Inherits from: public cauldron::RenderModule

Public Interface

Constructor:

GPUParticleRenderModule

inline GPUParticleRenderModule()

Construction.

Attributes: inline

Source: framework/rendermodules/gpuparticle/gpuparticlerendermodule.h (line 57, column 5)

Destructor:

~GPUParticleRenderModule

virtual ~GPUParticleRenderModule()

Destruction.

Attributes: virtual

Source: framework/rendermodules/gpuparticle/gpuparticlerendermodule.h (line 62, column 13)

Public Functions:

Init

virtual void Init(const json &initData) override

Initialization function. Sets up resource pointers, pipeline objects, root signatures, and parameter sets.

Parameters:

NameTypeDefault
initDataconst json &

Attributes: virtual

Source: framework/rendermodules/gpuparticle/gpuparticlerendermodule.h (line 67, column 18)

Execute

virtual void Execute(double deltaTime, cauldron::CommandList *pCmdList) override

Performs GPUParticle simulation if enabled.

Parameters:

NameTypeDefault
deltaTimedouble
pCmdListcauldron::CommandList *

Attributes: virtual

Source: framework/rendermodules/gpuparticle/gpuparticlerendermodule.h (line 72, column 18)

PreTransCallback

void PreTransCallback(double deltaTime, cauldron::CommandList *pCmdList)

Pre-translucent pass callback to sort particles before rendering in the translucency pass if needed.

Parameters:

NameTypeDefault
deltaTimedouble
pCmdListcauldron::CommandList *

Source: framework/rendermodules/gpuparticle/gpuparticlerendermodule.h (line 77, column 10)

Private Interface

Private Functions:

Execute

void Execute(double deltaTime, cauldron::CommandList *pCmdList, cauldron::ParticleSystem *pParticleSystem)

Parameters:

NameTypeDefault
deltaTimedouble
pCmdListcauldron::CommandList *
pParticleSystemcauldron::ParticleSystem *

Source: framework/rendermodules/gpuparticle/gpuparticlerendermodule.h (line 85, column 10)

Emit

void Emit(cauldron::CommandList *pCmdList, cauldron::ParticleSystem *pParticleSystem)

Parameters:

NameTypeDefault
pCmdListcauldron::CommandList *
pParticleSystemcauldron::ParticleSystem *

Source: framework/rendermodules/gpuparticle/gpuparticlerendermodule.h (line 86, column 10)

Simulate

void Simulate(cauldron::CommandList *pCmdList, cauldron::ParticleSystem *pParticleSystem)

Parameters:

NameTypeDefault
pCmdListcauldron::CommandList *
pParticleSystemcauldron::ParticleSystem *

Source: framework/rendermodules/gpuparticle/gpuparticlerendermodule.h (line 87, column 10)

Private Members:

cauldron::ParameterSet * m_pParameters

cauldron::ParameterSet * m_pParameters = = nullptr

Attributes: private

Source: framework/rendermodules/gpuparticle/gpuparticlerendermodule.h (line 91, column 28)

cauldron::PipelineObject * m_pSimulatePipelineObj

cauldron::PipelineObject * m_pSimulatePipelineObj = = nullptr

Attributes: private

Source: framework/rendermodules/gpuparticle/gpuparticlerendermodule.h (line 92, column 30)

cauldron::PipelineObject * m_pEmitPipelineObj

cauldron::PipelineObject * m_pEmitPipelineObj = = nullptr

Attributes: private

Source: framework/rendermodules/gpuparticle/gpuparticlerendermodule.h (line 93, column 30)

cauldron::PipelineObject * m_pResetParticlesPipelineObj

cauldron::PipelineObject * m_pResetParticlesPipelineObj = = nullptr

Attributes: private

Source: framework/rendermodules/gpuparticle/gpuparticlerendermodule.h (line 94, column 30)

cauldron::PipelineObject * m_pClearAliveCountPipelineObj

cauldron::PipelineObject * m_pClearAliveCountPipelineObj = = nullptr

Attributes: private

Source: framework/rendermodules/gpuparticle/gpuparticlerendermodule.h (line 95, column 30)

cauldron::RootSignature * m_pRootSignature

cauldron::RootSignature * m_pRootSignature = = nullptr

Attributes: private

Source: framework/rendermodules/gpuparticle/gpuparticlerendermodule.h (line 96, column 30)

const cauldron::Texture * m_pDepthBuffer

const cauldron::Texture * m_pDepthBuffer = = nullptr

Attributes: private

Source: framework/rendermodules/gpuparticle/gpuparticlerendermodule.h (line 98, column 29)

std::mutex m_CriticalSection

std::mutex m_CriticalSection

Attributes: private

Source: framework/rendermodules/gpuparticle/gpuparticlerendermodule.h (line 100, column 16)

float m_ElapsedTime

float m_ElapsedTime = = 0.0f

Attributes: private

Source: framework/rendermodules/gpuparticle/gpuparticlerendermodule.h (line 102, column 11)

bool m_bResetSystem

bool m_bResetSystem = = true

Attributes: private

Source: framework/rendermodules/gpuparticle/gpuparticlerendermodule.h (line 103, column 11)

bool m_bPlayAnimations

bool m_bPlayAnimations = = true

Attributes: private

Source: framework/rendermodules/gpuparticle/gpuparticlerendermodule.h (line 105, column 10)

bool m_bSort

bool m_bSort = = true

Attributes: private

Source: framework/rendermodules/gpuparticle/gpuparticlerendermodule.h (line 106, column 10)

ParallelSort m_ParallelSort

ParallelSort m_ParallelSort

Attributes: private

Source: framework/rendermodules/gpuparticle/gpuparticlerendermodule.h (line 108, column 18)

Source: framework/rendermodules/gpuparticle/gpuparticlerendermodule.h (line 50, column 1)