Castor3D
..
|
Implémentation d'un système de particules utilisant un compute shader. Plus de détails...
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 | |
ParticleSystem & | m_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... | |
Implémentation d'un système de particules utilisant un compute shader.
|
explicit |
Constructeur.
[in] | p_parent | Le système de particules parent. |
|
virtual |
Destructeur.
|
overridevirtual |
Ajoute une variable de particule.
[in] | p_name | Le nom de la variable. |
[in] | p_type | Le type de la variable. |
[in] | p_defaultValue | La valeur par défaut de la variable. |
Implémente castor3d::ParticleSystemImpl.
|
overridevirtual |
Nettoie l'implémentation.
Implémente castor3d::ParticleSystemImpl.
|
inline |
false
si le programme de mise à jour n'a pas été défini. Références m_updateProgram.
|
inline |
false
si le programme de mise à jour n'a pas été défini. Références m_updateProgram.
|
overridevirtual |
Initialise l'implémentation.
true
si tout s'est bien passé. Implémente castor3d::ParticleSystemImpl.
C3D_API void castor3d::ComputeParticleSystem::setUpdateProgram | ( | ShaderProgramSPtr | p_program | ) |
Définit le programme utilisé pour mettre à jour les particules.
[in] | p_program | Le programme. |
|
overridevirtual |
Met à jour les particules.
[in] | p_time | Le temps écoulé depuis la dernière mise à jour. |
[in] | p_total | Le temps total écoulé. |
Implémente castor3d::ParticleSystemImpl.
|
protected |
Le binding de l'UBO avec le programme.
|
protected |
Le pipeline de calcul.
|
protected |
La variable de frame contenant le nombre actuel de particules.
|
protected |
La variable de frame contenant le temps écoulé depuis la dernière mise à jour.
|
protected |
La variable de frame contenant la position de l'émetteur de particules.
|
protected |
Le tampon contenant le nombre de particules générées en une passe.
|
protected |
L'indice du stockage de particules d'entrée.
|
protected |
La description des éléments d'une particule.
|
protected |
La variable de frame contenant la durée de vie des lanceurs.
|
protected |
La variable de frame contenant le nombre maximal de particules.
|
protected |
L'indice du stockage de particules de sortie.
|
protected |
Le nombre actuel de particules.
|
protected |
Les tampons de stockage contenant les particules.
|
protected |
Le tampon de stockage contenant des directions aléatoires.
|
protected |
La variable de frame contenant la durée de vie des particules secondaires.
|
protected |
La variable de frame contenant la durée de vie des particules.
|
protected |
La variable de frame contenant le temps total écoulé.
|
protected |
Le tampon de variables contenant les variables relatives au système de particules.
|
protected |
Le programme utilisé pour mettre à jour le tampon de transformation.
Référencé par getUpdateProgram(), et hasUpdateProgram().
|
protected |
La taille d'un groupe de travail.