Castor3D 0.15.0
Multiplatform 3D engine
Classes | Fonctions membres publiques | Attributs protégés | Liste de tous les membres
Référence de la classe castor3d::ComputeParticleSystem

#include <ComputeParticleSystem.hpp>

Graphe d'héritage de castor3d::ComputeParticleSystem:
Inheritance graph
[légende]
Graphe de collaboration de castor3d::ComputeParticleSystem:
Collaboration graph
[légende]

Classes

struct  Configuration
 

Fonctions membres publiques

C3D_API ComputeParticleSystem (ParticleSystem &parent)
 Constructeur.
 
C3D_API bool initialise (RenderDevice const &device) override
 Initialise l'implémentation.
 
C3D_API void cleanup (RenderDevice const &device) override
 Nettoie l'implémentation.
 
C3D_API void update (CpuUpdater &updater) override
 Met à jour la passe de rendu, au niveau CPU.
 
C3D_API uint32_t update (GpuUpdater &updater) override
 Met à jour la passe de rendu, au niveau CPU.
 
C3D_API void addParticleVariable (castor::String const &name, ParticleFormat type, castor::String const &defaultValue) override
 Ajoute une variable de particule.
 
C3D_API void setUpdateProgram (ShaderProgramRPtr program)
 Définit le programme utilisé pour mettre à jour les particules.
 
void setGroupSizes (castor::Point3i sizes)
 Définit les dimensions des groupes de travail, tels que définis dans le compute shader.
 
bool hasUpdateProgram () const
 
ShaderProgram const & getUpdateProgram () const
 
- Fonctions membres publiques hérités de castor3d::ParticleSystemImpl
C3D_API ParticleSystemImpl (Type type, ParticleSystem &parent)
 Constructeur.
 
virtual C3D_API ~ParticleSystemImpl ()
 Destructeur.
 
virtual C3D_API bool initialise (RenderDevice const &device)=0
 Initialise l'implémentation.
 
virtual C3D_API void cleanup (RenderDevice const &device)=0
 Nettoie l'implémentation.
 
virtual C3D_API void addParticleVariable (castor::String const &name, ParticleFormat type, castor::String const &defaultValue)=0
 Ajoute une variable de particule.
 
virtual C3D_API void update (CpuUpdater &updater)=0
 Met à jour la passe de rendu, au niveau CPU.
 
virtual C3D_API uint32_t update (GpuUpdater &updater)=0
 Met à jour la passe de rendu, au niveau GPU.
 
Type getType ()
 
ParticleSystem const & getParent () const
 

Attributs protégés

ParticleDeclaration m_inputs
 
ShaderProgramRPtr m_program {}
 
UniformBufferOffsetT< Configurationm_ubo
 
std::array< ashes::BufferPtr< uint8_t >, 2 > m_particlesStorages
 
ashes::BufferPtr< uint32_t > m_generatedCountBuffer
 
ashes::DescriptorSetLayoutPtr m_descriptorLayout
 
ashes::PipelineLayoutPtr m_pipelineLayout
 
ashes::ComputePipelinePtr m_pipeline
 
ashes::DescriptorSetPoolPtr m_descriptorPool
 
std::array< ashes::DescriptorSetPtr, 2u > m_descriptorSets
 
ashes::CommandBufferPtr m_commandBuffer
 
ashes::FencePtr m_fence
 
uint32_t m_particlesCount { 0u }
 
castor::Point3i m_worgGroupSizes { 128, 1, 1 }
 
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 class  Type {
  eCpu , eTransformFeedback , eComputeShader , eCount ,
  eMin = eCpu , eMax =eCount-1
}
 Enumération des types d'implémentation de système de particules. Plus de détails...
 

Documentation des constructeurs et destructeur

◆ ComputeParticleSystem()

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

Constructeur.

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

Documentation des fonctions membres

◆ addParticleVariable()

C3D_API void castor3d::ComputeParticleSystem::addParticleVariable ( castor::String const &  name,
ParticleFormat  type,
castor::String const &  defaultValue 
)
overridevirtual

Ajoute une variable de particule.

Paramètres
[in]nameLe nom de la variable.
[in]typeLe type de la variable.
[in]defaultValueLa valeur par défaut de la variable.

Implémente castor3d::ParticleSystemImpl.

◆ cleanup()

C3D_API void castor3d::ComputeParticleSystem::cleanup ( RenderDevice const &  device)
overridevirtual

Nettoie l'implémentation.

Paramètres
deviceLe device actuel.

Implémente castor3d::ParticleSystemImpl.

◆ getUpdateProgram()

ShaderProgram const & castor3d::ComputeParticleSystem::getUpdateProgram ( ) const
inline
Renvoie
Le programme de mise à jour.

Références m_program.

◆ 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_program.

◆ initialise()

C3D_API bool castor3d::ComputeParticleSystem::initialise ( RenderDevice const &  device)
overridevirtual

Initialise l'implémentation.

Paramètres
deviceLe device actuel.
Renvoie
true si tout s'est bien passé.

Implémente castor3d::ParticleSystemImpl.

◆ setGroupSizes()

void castor3d::ComputeParticleSystem::setGroupSizes ( castor::Point3i  sizes)
inline

Définit les dimensions des groupes de travail, tels que définis dans le compute shader.

Paramètres
[in]sizesLes dimensions.

Références m_worgGroupSizes.

◆ setUpdateProgram()

C3D_API void castor3d::ComputeParticleSystem::setUpdateProgram ( ShaderProgramRPtr  program)

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

Paramètres
[in]programLe programme shader.

◆ update() [1/2]

C3D_API void castor3d::ComputeParticleSystem::update ( CpuUpdater updater)
overridevirtual

Met à jour la passe de rendu, au niveau CPU.

Paramètres
[in,out]updaterLes données d'update.

Implémente castor3d::ParticleSystemImpl.

◆ update() [2/2]

C3D_API uint32_t castor3d::ComputeParticleSystem::update ( GpuUpdater updater)
overridevirtual

Met à jour la passe de rendu, au niveau CPU.

Paramètres
[in,out]updaterLes données d'update.

Implémente castor3d::ParticleSystemImpl.

Documentation des données membres

◆ m_commandBuffer

ashes::CommandBufferPtr castor3d::ComputeParticleSystem::m_commandBuffer
protected

◆ m_descriptorLayout

ashes::DescriptorSetLayoutPtr castor3d::ComputeParticleSystem::m_descriptorLayout
protected

◆ m_descriptorPool

ashes::DescriptorSetPoolPtr castor3d::ComputeParticleSystem::m_descriptorPool
protected

◆ m_descriptorSets

std::array< ashes::DescriptorSetPtr, 2u > castor3d::ComputeParticleSystem::m_descriptorSets
protected

◆ m_fence

ashes::FencePtr castor3d::ComputeParticleSystem::m_fence
protected

◆ m_generatedCountBuffer

ashes::BufferPtr< uint32_t > castor3d::ComputeParticleSystem::m_generatedCountBuffer
protected

◆ m_in

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

◆ m_inputs

ParticleDeclaration castor3d::ComputeParticleSystem::m_inputs
protected

◆ m_out

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

◆ m_particlesCount

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

◆ m_particlesStorages

std::array< ashes::BufferPtr< uint8_t >, 2 > castor3d::ComputeParticleSystem::m_particlesStorages
protected

◆ m_pipeline

ashes::ComputePipelinePtr castor3d::ComputeParticleSystem::m_pipeline
protected

◆ m_pipelineLayout

ashes::PipelineLayoutPtr castor3d::ComputeParticleSystem::m_pipelineLayout
protected

◆ m_program

ShaderProgramRPtr castor3d::ComputeParticleSystem::m_program {}
protected

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

◆ m_ubo

UniformBufferOffsetT< Configuration > castor3d::ComputeParticleSystem::m_ubo
protected

◆ m_worgGroupSizes

castor::Point3i castor3d::ComputeParticleSystem::m_worgGroupSizes { 128, 1, 1 }
protected

Référencé par setGroupSizes().


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