Castor3D  ..
Fonctions membres publiques | Attributs protégés | Liste de tous les membres
Référence de la classe castor3d::ComputeParticleSystem

Implémentation d'un système de particules utilisant un compute shader. Plus de détails...

+ Graphe d'héritage de castor3d::ComputeParticleSystem:
+ Graphe de collaboration de castor3d::ComputeParticleSystem:

Fonctions membres publiques

C3D_API ComputeParticleSystem (ParticleSystem &p_parent)
 Constructeur. Plus de détails...
 
virtual C3D_API ~ComputeParticleSystem ()
 Destructeur. Plus de détails...
 
C3D_API bool initialise () override
 Initialise l'implémentation. Plus de détails...
 
C3D_API void cleanup () override
 Nettoie l'implémentation. Plus de détails...
 
C3D_API uint32_t update (castor::Milliseconds const &p_time, castor::Milliseconds const &p_total) override
 Met à jour les particules. Plus de détails...
 
C3D_API void addParticleVariable (castor::String const &p_name, ElementType p_type, castor::String const &p_defaultValue) override
 Ajoute une variable de particule. Plus de détails...
 
C3D_API void setUpdateProgram (ShaderProgramSPtr p_program)
 Définit le programme utilisé pour mettre à jour les particules. Plus de détails...
 
bool hasUpdateProgram () const
 
ShaderProgram const & getUpdateProgram () const
 
- Fonctions membres publiques hérités de castor3d::ParticleSystemImpl
C3D_API ParticleSystemImpl (Type p_type, ParticleSystem &p_parent)
 Constructeur. Plus de détails...
 
virtual C3D_API ~ParticleSystemImpl ()
 Destructeur. Plus de détails...
 
Type getType ()
 
ParticleSystem const & getParent () const
 

Attributs protégés

BufferDeclaration m_inputs
 
ShaderProgramSPtr m_updateProgram
 
UniformBuffer m_ubo
 
UniformBufferBindingRPtr m_binding
 
Uniform1fSPtr m_deltaTime
 
Uniform1fSPtr m_time
 
Uniform1uiSPtr m_maxParticleCount
 
Uniform1uiSPtr m_currentParticleCount
 
Uniform3fSPtr m_emitterPosition
 
Uniform1fSPtr m_launcherLifetime
 
Uniform1fSPtr m_shellLifetime
 
Uniform1fSPtr m_secondaryShellLifetime
 
std::array< ShaderStorageBufferSPtr, 2 > m_particlesStorages
 
ShaderStorageBufferSPtr m_randomStorage
 
uint32_t m_particlesCount { 0u }
 
uint32_t m_worgGroupSize { 128u }
 
ComputePipelineUPtr m_computePipeline
 
AtomicCounterBufferSPtr m_generatedCountBuffer
 
uint32_t m_in { 0 }
 
uint32_t m_out { 1 }
 
- Attributs protégés hérités de castor3d::ParticleSystemImpl
ParticleSystemm_parent
 
Type m_type
 

Membres hérités additionnels

- Types publics hérités de castor3d::ParticleSystemImpl
enum  Type { Type::eCpu, Type::eTransformFeedback, Type::eComputeShader }
 Enumération des types d'implémentation de système de particules. Plus de détails...
 

Description détaillée

Implémentation d'un système de particules utilisant un compute shader.

Auteur
Sylvain DOREMUS
Version
0.9.0
Date
21/11/2016

Documentation des constructeurs et destructeur

◆ ComputeParticleSystem()

C3D_API castor3d::ComputeParticleSystem::ComputeParticleSystem ( ParticleSystem p_parent)
explicit

Constructeur.

Paramètres
[in]p_parentLe système de particules parent.

◆ ~ComputeParticleSystem()

virtual C3D_API castor3d::ComputeParticleSystem::~ComputeParticleSystem ( )
virtual

Destructeur.

Documentation des fonctions membres

◆ addParticleVariable()

C3D_API void castor3d::ComputeParticleSystem::addParticleVariable ( castor::String const &  p_name,
ElementType  p_type,
castor::String const &  p_defaultValue 
)
overridevirtual

Ajoute une variable de particule.

Paramètres
[in]p_nameLe nom de la variable.
[in]p_typeLe type de la variable.
[in]p_defaultValueLa valeur par défaut de la variable.

Implémente castor3d::ParticleSystemImpl.

◆ cleanup()

C3D_API void castor3d::ComputeParticleSystem::cleanup ( )
overridevirtual

Nettoie l'implémentation.

Implémente castor3d::ParticleSystemImpl.

◆ getUpdateProgram()

ShaderProgram const& castor3d::ComputeParticleSystem::getUpdateProgram ( ) const
inline
Renvoie
false si le programme de mise à jour n'a pas été défini.

Références m_updateProgram.

◆ hasUpdateProgram()

bool castor3d::ComputeParticleSystem::hasUpdateProgram ( ) const
inline
Renvoie
false si le programme de mise à jour n'a pas été défini.

Références m_updateProgram.

◆ initialise()

C3D_API bool castor3d::ComputeParticleSystem::initialise ( )
overridevirtual

Initialise l'implémentation.

Renvoie
true si tout s'est bien passé.

Implémente castor3d::ParticleSystemImpl.

◆ setUpdateProgram()

C3D_API void castor3d::ComputeParticleSystem::setUpdateProgram ( ShaderProgramSPtr  p_program)

Définit le programme utilisé pour mettre à jour les particules.

Paramètres
[in]p_programLe programme.

◆ update()

C3D_API uint32_t castor3d::ComputeParticleSystem::update ( castor::Milliseconds const &  p_time,
castor::Milliseconds const &  p_total 
)
overridevirtual

Met à jour les particules.

Paramètres
[in]p_timeLe temps écoulé depuis la dernière mise à jour.
[in]p_totalLe temps total écoulé.
Renvoie
Le nombre de particules.

Implémente castor3d::ParticleSystemImpl.

Documentation des données membres

◆ m_binding

UniformBufferBindingRPtr castor3d::ComputeParticleSystem::m_binding
protected

Le binding de l'UBO avec le programme.

◆ m_computePipeline

ComputePipelineUPtr castor3d::ComputeParticleSystem::m_computePipeline
protected

Le pipeline de calcul.

◆ m_currentParticleCount

Uniform1uiSPtr castor3d::ComputeParticleSystem::m_currentParticleCount
protected

La variable de frame contenant le nombre actuel de particules.

◆ m_deltaTime

Uniform1fSPtr castor3d::ComputeParticleSystem::m_deltaTime
protected

La variable de frame contenant le temps écoulé depuis la dernière mise à jour.

◆ m_emitterPosition

Uniform3fSPtr castor3d::ComputeParticleSystem::m_emitterPosition
protected

La variable de frame contenant la position de l'émetteur de particules.

◆ m_generatedCountBuffer

AtomicCounterBufferSPtr castor3d::ComputeParticleSystem::m_generatedCountBuffer
protected

Le tampon contenant le nombre de particules générées en une passe.

◆ m_in

uint32_t castor3d::ComputeParticleSystem::m_in { 0 }
protected

L'indice du stockage de particules d'entrée.

◆ m_inputs

BufferDeclaration castor3d::ComputeParticleSystem::m_inputs
protected

La description des éléments d'une particule.

◆ m_launcherLifetime

Uniform1fSPtr castor3d::ComputeParticleSystem::m_launcherLifetime
protected

La variable de frame contenant la durée de vie des lanceurs.

◆ m_maxParticleCount

Uniform1uiSPtr castor3d::ComputeParticleSystem::m_maxParticleCount
protected

La variable de frame contenant le nombre maximal de particules.

◆ m_out

uint32_t castor3d::ComputeParticleSystem::m_out { 1 }
protected

L'indice du stockage de particules de sortie.

◆ m_particlesCount

uint32_t castor3d::ComputeParticleSystem::m_particlesCount { 0u }
protected

Le nombre actuel de particules.

◆ m_particlesStorages

std::array< ShaderStorageBufferSPtr, 2 > castor3d::ComputeParticleSystem::m_particlesStorages
protected

Les tampons de stockage contenant les particules.

◆ m_randomStorage

ShaderStorageBufferSPtr castor3d::ComputeParticleSystem::m_randomStorage
protected

Le tampon de stockage contenant des directions aléatoires.

◆ m_secondaryShellLifetime

Uniform1fSPtr castor3d::ComputeParticleSystem::m_secondaryShellLifetime
protected

La variable de frame contenant la durée de vie des particules secondaires.

◆ m_shellLifetime

Uniform1fSPtr castor3d::ComputeParticleSystem::m_shellLifetime
protected

La variable de frame contenant la durée de vie des particules.

◆ m_time

Uniform1fSPtr castor3d::ComputeParticleSystem::m_time
protected

La variable de frame contenant le temps total écoulé.

◆ m_ubo

UniformBuffer castor3d::ComputeParticleSystem::m_ubo
protected

Le tampon de variables contenant les variables relatives au système de particules.

◆ m_updateProgram

ShaderProgramSPtr castor3d::ComputeParticleSystem::m_updateProgram
protected

Le programme utilisé pour mettre à jour le tampon de transformation.

Référencé par getUpdateProgram(), et hasUpdateProgram().

◆ m_worgGroupSize

uint32_t castor3d::ComputeParticleSystem::m_worgGroupSize { 128u }
protected

La taille d'un groupe de travail.


La documentation de cette classe a été générée à partir du fichier suivant :