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 (std::chrono::milliseconds const &p_time, std::chrono::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)

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 ( std::chrono::milliseconds const &  p_time,
std::chrono::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 :