Castor3D
..
|
Implémentation de base d'un programme de shader, utilisé afin d'exposer les fonctions communes aux langages de shader. Plus de détails...
Classes | |
class | TextWriter |
Loader de ShaderProgram. Plus de détails... | |
Fonctions membres publiques | |
C3D_API | ShaderProgram (RenderSystem &p_renderSystem) |
Constructeur. Plus de détails... | |
virtual C3D_API | ~ShaderProgram () |
Destructeur. Plus de détails... | |
C3D_API ShaderObjectSPtr | CreateObject (ShaderType p_type) |
Crée le shader object voulu. Plus de détails... | |
C3D_API void | SetFile (ShaderModel p_eModel, Castor::Path const &p_pathFile) |
Définit le fichier utilisé par tous les objets. Plus de détails... | |
C3D_API ShaderStorageBuffer & | CreateStorageBuffer (Castor::String const &p_name, ShaderTypeFlags const &p_shaderMask) |
Crée un tampon de stockage. Plus de détails... | |
C3D_API ShaderStorageBufferSPtr | FindStorageBuffer (Castor::String const &p_name) const |
Trouve un tampon de stockage. Plus de détails... | |
C3D_API AtomicCounterBuffer & | CreateAtomicCounterBuffer (Castor::String const &p_name, ShaderTypeFlags const &p_shaderMask) |
Crée un tampon de compteurs atomiques. Plus de détails... | |
C3D_API AtomicCounterBufferSPtr | FindAtomicCounterBuffer (Castor::String const &p_name) const |
Trouve un tampon de compteurs atomiques. Plus de détails... | |
C3D_API void | ResetToCompile () |
Réinitialise les variables de compilation afin de pouvoir compiler le shader à nouveau. Plus de détails... | |
C3D_API void | SetInputType (ShaderType p_target, Topology p_topology) |
Définit le type des primitives en entrée. Plus de détails... | |
C3D_API void | SetOutputType (ShaderType p_target, Topology p_topology) |
Définit le type des primitives en sortie. Plus de détails... | |
C3D_API void | SetOutputVtxCount (ShaderType p_target, uint8_t p_count) |
Définit le nombre de vertices générés. Plus de détails... | |
C3D_API void | SetFile (ShaderType p_target, ShaderModel p_eModel, Castor::Path const &p_pathFile) |
Définit le fichier du shader pour le modèle donné. Plus de détails... | |
C3D_API Castor::Path | GetFile (ShaderType p_target, ShaderModel p_eModel) const |
Récupère le fichier du shader pour le modèle donné. Plus de détails... | |
C3D_API bool | HasFile (ShaderType p_target) const |
Dit si le shader a un fichier source, quel que soit son modèle. Plus de détails... | |
C3D_API void | SetSource (ShaderType p_target, ShaderModel p_eModel, Castor::String const &p_strSource) |
Définit la source du shader pour le modèle donné. Plus de détails... | |
C3D_API Castor::String | GetSource (ShaderType p_target, ShaderModel p_eModel) const |
Récupère la source du shader pour le modèle donné. Plus de détails... | |
C3D_API bool | HasSource (ShaderType p_target) const |
Dit si le shader a un code source, quel que soit son modèle. Plus de détails... | |
C3D_API bool | HasObject (ShaderType p_target) const |
Dit si le programme a un shader du type donné. Plus de détails... | |
C3D_API ShaderStatus | GetObjectStatus (ShaderType p_target) const |
C3D_API PushUniformSPtr | CreateUniform (UniformType p_type, Castor::String const &p_name, ShaderType p_shader, int p_nbOcc=1) |
Crée une variable. Plus de détails... | |
template<UniformType Type> | |
std::shared_ptr< TPushUniform< Type > > | CreateUniform (Castor::String const &p_name, ShaderType p_shader, int p_nbOcc=1) |
Crée une variable. Plus de détails... | |
C3D_API PushUniformSPtr | FindUniform (UniformType p_type, Castor::String const &p_name, ShaderType p_shader) const |
Cherche une variable. Plus de détails... | |
template<UniformType Type> | |
std::shared_ptr< TPushUniform< Type > > | FindUniform (Castor::String const &p_name, ShaderType p_shader) const |
Cherche une variable. Plus de détails... | |
C3D_API PushUniformList & | GetUniforms (ShaderType p_type) |
Récupère les variables de frame liées à un type de shader particulier. Plus de détails... | |
C3D_API PushUniformList const & | GetUniforms (ShaderType p_type) const |
Récupère les variables de frame liées à un type de shader particulier. Plus de détails... | |
virtual C3D_API void | Cleanup ()=0 |
Nettoie le programme. Plus de détails... | |
virtual C3D_API bool | Initialise ()=0 |
Initialise le programme. Plus de détails... | |
virtual C3D_API void | Bind () const =0 |
Active le programme. Plus de détails... | |
virtual C3D_API void | Unbind () const =0 |
Désactive le programme. Plus de détails... | |
virtual C3D_API bool | Link ()=0 |
Link tous les objets du programme. Plus de détails... | |
virtual C3D_API ProgramInputLayout const & | GetLayout () const =0 |
virtual C3D_API ProgramInputLayout & | GetLayout ()=0 |
void | SetTransformLayout (BufferDeclaration const &p_declaration) |
Définit le layout de transform feedback. Plus de détails... | |
ShaderStorageBufferPtrList & | GetShaderStorageBuffers (ShaderType p_type) |
Récupère les tampons de stockage liés à un type de shader particulier. Plus de détails... | |
ShaderStorageBufferPtrList const & | GetShaderStorageBuffers (ShaderType p_type) const |
Récupère les tampons de stockage liés à un type de shader particulier. Plus de détails... | |
ShaderStorageBufferPtrList & | GetShaderStorageBuffers () |
ShaderStorageBufferPtrList const & | GetShaderStorageBuffers () const |
AtomicCounterBufferPtrList & | GetAtomicCounterBuffers (ShaderType p_type) |
Récupère les tampons de compteurs atomiques liés à un type de shader particulier. Plus de détails... | |
AtomicCounterBufferPtrList const & | GetAtomicCounterBuffers (ShaderType p_type) const |
Récupère les tampons de compteurs atomiques liés à un type de shader particulier. Plus de détails... | |
AtomicCounterBufferPtrList & | GetAtomicCounterBuffers () |
AtomicCounterBufferPtrList const & | GetAtomicCounterBuffers () const |
ProgramStatus | GetStatus () const |
Récupère le statut de link du programme. Plus de détails... | |
Attributs publics statiques | |
Attributes | |
static C3D_API const Castor::String | Position |
static C3D_API const Castor::String | Normal |
static C3D_API const Castor::String | Tangent |
static C3D_API const Castor::String | Bitangent |
static C3D_API const Castor::String | Texture |
static C3D_API const Castor::String | Colour |
static C3D_API const Castor::String | Position2 |
static C3D_API const Castor::String | Normal2 |
static C3D_API const Castor::String | Tangent2 |
static C3D_API const Castor::String | Bitangent2 |
static C3D_API const Castor::String | Texture2 |
static C3D_API const Castor::String | Colour2 |
static C3D_API const Castor::String | Text |
static C3D_API const Castor::String | BoneIds0 |
static C3D_API const Castor::String | BoneIds1 |
static C3D_API const Castor::String | Weights0 |
static C3D_API const Castor::String | Weights1 |
static C3D_API const Castor::String | Transform |
Scene | |
static C3D_API const Castor::String | CameraPos |
static C3D_API const Castor::String | AmbientLight |
static C3D_API const Castor::String | BackgroundColour |
static C3D_API const Castor::String | FogType |
static C3D_API const Castor::String | FogDensity |
static C3D_API const Castor::String | LightsCount |
static C3D_API const Castor::String | Lights |
Pass | |
static C3D_API const Castor::String | MatAmbient |
static C3D_API const Castor::String | MatDiffuse |
static C3D_API const Castor::String | MatSpecular |
static C3D_API const Castor::String | MatEmissive |
static C3D_API const Castor::String | MatShininess |
static C3D_API const Castor::String | MatOpacity |
static C3D_API const Castor::String | MapShadow |
static C3D_API const Castor::String | MapText |
Model | |
static C3D_API const Castor::String | ShadowReceiver |
Animation | |
static C3D_API const Castor::String | Bones |
static C3D_API const Castor::String | Time |
Billboard | |
static C3D_API const Castor::String | Dimensions |
static C3D_API const Castor::String | WindowSize |
Overlay | |
static C3D_API const Castor::String | OvPosition |
Textures | |
static C3D_API const Castor::String | MapColour |
static C3D_API const Castor::String | MapAmbient |
static C3D_API const Castor::String | MapDiffuse |
static C3D_API const Castor::String | MapSpecular |
static C3D_API const Castor::String | MapEmissive |
static C3D_API const Castor::String | MapNormal |
static C3D_API const Castor::String | MapOpacity |
static C3D_API const Castor::String | MapGloss |
static C3D_API const Castor::String | MapHeight |
Frame Variable Buffers | |
static C3D_API const Castor::String | BufferMatrix |
static C3D_API const Castor::String | BufferModelMatrix |
static C3D_API const Castor::String | BufferScene |
static C3D_API const Castor::String | BufferPass |
static C3D_API const Castor::String | BufferModel |
static C3D_API const Castor::String | BufferBillboards |
static C3D_API const Castor::String | BufferSkinning |
static C3D_API const Castor::String | BufferMorphing |
static C3D_API const Castor::String | BufferOverlay |
Fonctions membres protégées | |
C3D_API void | DoCleanup () |
Nettoie le programme. Plus de détails... | |
C3D_API bool | DoInitialise () |
Initialise le programme. Plus de détails... | |
C3D_API void | DoBind () const |
Active le programme. Plus de détails... | |
C3D_API void | DoUnbind () const |
Désactive le programme. Plus de détails... | |
C3D_API bool | DoLink () |
Link tous les objets du programme. Plus de détails... | |
Attributs protégés | |
ProgramStatus | m_status { ProgramStatus::eNotLinked } |
std::array< ShaderObjectSPtr, size_t(ShaderType::eCount) > | m_shaders |
std::vector< ShaderObjectSPtr > | m_activeShaders |
std::array< Castor::Path, size_t(ShaderModel::eCount) > | m_arrayFiles |
ShaderStorageBufferPtrStrMap | m_storageBuffersByName |
std::array< ShaderStorageBufferPtrList, size_t(ShaderType::eCount) > | m_storageBuffers |
ShaderStorageBufferPtrList | m_listStorageBuffers |
AtomicCounterBufferPtrStrMap | m_atomicCounterBuffersByName |
std::array< AtomicCounterBufferPtrList, size_t(ShaderType::eCount) > | m_atomicCounterBuffers |
AtomicCounterBufferPtrList | m_listAtomicCounterBuffers |
BufferDeclaration | m_declaration |
Amis | |
class | Castor::TextWriter< Castor3D::ShaderProgram > |
Implémentation de base d'un programme de shader, utilisé afin d'exposer les fonctions communes aux langages de shader.
|
explicit |
Constructeur.
[in] | p_renderSystem | L'instance du RenderSystem. |
|
virtual |
Destructeur.
|
pure virtual |
Active le programme.
|
pure virtual |
Nettoie le programme.
C3D_API AtomicCounterBuffer& Castor3D::ShaderProgram::CreateAtomicCounterBuffer | ( | Castor::String const & | p_name, |
ShaderTypeFlags const & | p_shaderMask | ||
) |
Crée un tampon de compteurs atomiques.
[in] | p_name | Le nom du tampon. |
[in] | p_shaderMask | Combinaison de ShaderTypeFlag, pour déterminer les shaders auxquels il doit être lié. |
C3D_API ShaderObjectSPtr Castor3D::ShaderProgram::CreateObject | ( | ShaderType | p_type | ) |
Crée le shader object voulu.
[in] | p_type | Le shader object concerné. |
C3D_API ShaderStorageBuffer& Castor3D::ShaderProgram::CreateStorageBuffer | ( | Castor::String const & | p_name, |
ShaderTypeFlags const & | p_shaderMask | ||
) |
Crée un tampon de stockage.
[in] | p_name | Le nom du tampon. |
[in] | p_shaderMask | Combinaison de ShaderTypeFlag, pour déterminer les shaders auxquels il doit être lié. |
C3D_API PushUniformSPtr Castor3D::ShaderProgram::CreateUniform | ( | UniformType | p_type, |
Castor::String const & | p_name, | ||
ShaderType | p_shader, | ||
int | p_nbOcc = 1 |
||
) |
Crée une variable.
[in] | p_type | Le type de variable. |
[in] | p_name | Le nom de la variable. |
[in] | p_shader | Le type du shader. |
[in] | p_nbOcc | Les dimensions du tableau. |
|
inline |
Crée une variable.
[in] | p_name | Le nom de la variable. |
[in] | p_shader | Le type du shader. |
[in] | p_nbOcc | Les dimensions du tableau. |
Références C3D_API.
|
protected |
Active le programme.
|
protected |
Nettoie le programme.
|
protected |
Initialise le programme.
|
protected |
Link tous les objets du programme.
|
protected |
Désactive le programme.
C3D_API AtomicCounterBufferSPtr Castor3D::ShaderProgram::FindAtomicCounterBuffer | ( | Castor::String const & | p_name | ) | const |
Trouve un tampon de compteurs atomiques.
[in] | p_name | Le nom du tampon. |
C3D_API ShaderStorageBufferSPtr Castor3D::ShaderProgram::FindStorageBuffer | ( | Castor::String const & | p_name | ) | const |
Trouve un tampon de stockage.
[in] | p_name | Le nom du tampon. |
C3D_API PushUniformSPtr Castor3D::ShaderProgram::FindUniform | ( | UniformType | p_type, |
Castor::String const & | p_name, | ||
ShaderType | p_shader | ||
) | const |
Cherche une variable.
[in] | p_type | Le type de variable. |
[in] | p_name | Le nom de la variable. |
[in] | p_shader | Le type du shader. |
|
inline |
Cherche une variable.
[in] | p_name | Le nom de la variable. |
[in] | p_shader | Le type du shader. |
Références C3D_API.
|
inline |
Récupère les tampons de compteurs atomiques liés à un type de shader particulier.
[in] | p_type | The shader type |
|
inline |
Récupère les tampons de compteurs atomiques liés à un type de shader particulier.
[in] | p_type | The shader type |
|
inline |
|
inline |
C3D_API Castor::Path Castor3D::ShaderProgram::GetFile | ( | ShaderType | p_target, |
ShaderModel | p_eModel | ||
) | const |
Récupère le fichier du shader pour le modèle donné.
[in] | p_target | Le shader object concerné. |
[in] | p_eModel | Le modèle de shader. |
|
pure virtual |
|
pure virtual |
C3D_API ShaderStatus Castor3D::ShaderProgram::GetObjectStatus | ( | ShaderType | p_target | ) | const |
|
inline |
Récupère les tampons de stockage liés à un type de shader particulier.
[in] | p_type | The shader type |
|
inline |
Récupère les tampons de stockage liés à un type de shader particulier.
[in] | p_type | The shader type |
|
inline |
|
inline |
C3D_API Castor::String Castor3D::ShaderProgram::GetSource | ( | ShaderType | p_target, |
ShaderModel | p_eModel | ||
) | const |
Récupère la source du shader pour le modèle donné.
[in] | p_target | Le shader object concerné. |
[in] | p_eModel | Le modèle de shader. |
|
inline |
C3D_API PushUniformList& Castor3D::ShaderProgram::GetUniforms | ( | ShaderType | p_type | ) |
Récupère les variables de frame liées à un type de shader particulier.
[in] | p_type | The shader type. |
C3D_API PushUniformList const& Castor3D::ShaderProgram::GetUniforms | ( | ShaderType | p_type | ) | const |
Récupère les variables de frame liées à un type de shader particulier.
[in] | p_type | The shader type. |
C3D_API bool Castor3D::ShaderProgram::HasFile | ( | ShaderType | p_target | ) | const |
Dit si le shader a un fichier source, quel que soit son modèle.
[in] | p_target | Le shader object concerné. |
true
si le shader a un fichier source. C3D_API bool Castor3D::ShaderProgram::HasObject | ( | ShaderType | p_target | ) | const |
Dit si le programme a un shader du type donné.
[in] | p_target | Le type du shader object. |
true
si le shader object existe. C3D_API bool Castor3D::ShaderProgram::HasSource | ( | ShaderType | p_target | ) | const |
Dit si le shader a un code source, quel que soit son modèle.
[in] | p_target | Le shader object concerné. |
true
si le shader a un code source.
|
pure virtual |
Initialise le programme.
|
pure virtual |
Link tous les objets du programme.
C3D_API void Castor3D::ShaderProgram::ResetToCompile | ( | ) |
Réinitialise les variables de compilation afin de pouvoir compiler le shader à nouveau.
C3D_API void Castor3D::ShaderProgram::SetFile | ( | ShaderModel | p_eModel, |
Castor::Path const & | p_pathFile | ||
) |
Définit le fichier utilisé par tous les objets.
[in] | p_eModel | Le modèle de shader. |
[in] | p_pathFile | Le nom du fichier. |
C3D_API void Castor3D::ShaderProgram::SetFile | ( | ShaderType | p_target, |
ShaderModel | p_eModel, | ||
Castor::Path const & | p_pathFile | ||
) |
Définit le fichier du shader pour le modèle donné.
[in] | p_target | Le shader object concerné. |
[in] | p_eModel | Le modèle de shader. |
[in] | p_pathFile | Le nom du fichier. |
C3D_API void Castor3D::ShaderProgram::SetInputType | ( | ShaderType | p_target, |
Topology | p_topology | ||
) |
Définit le type des primitives en entrée.
[in] | p_target | Le shader object concerné. |
[in] | p_topology | Le type des primitives en entrée. |
C3D_API void Castor3D::ShaderProgram::SetOutputType | ( | ShaderType | p_target, |
Topology | p_topology | ||
) |
Définit le type des primitives en sortie.
[in] | p_target | Le shader object concerné. |
[in] | p_topology | Le type des primitives en sortie. |
C3D_API void Castor3D::ShaderProgram::SetOutputVtxCount | ( | ShaderType | p_target, |
uint8_t | p_count | ||
) |
Définit le nombre de vertices générés.
[in] | p_target | Le shader object concerné. |
[in] | p_count | Le compte. |
C3D_API void Castor3D::ShaderProgram::SetSource | ( | ShaderType | p_target, |
ShaderModel | p_eModel, | ||
Castor::String const & | p_strSource | ||
) |
Définit la source du shader pour le modèle donné.
[in] | p_target | Le shader object concerné. |
[in] | p_eModel | Le modèle de shader. |
[in] | p_strSource | Le code de la source. |
|
inline |
Définit le layout de transform feedback.
[in] | p_declaration | Le layout. |
|
pure virtual |
Désactive le programme.
|
friend |
|
static |
Nom de la frame variable contenant la lumière ambiante.
|
static |
Nom de la frame variable contenant la couleur de fond.
|
static |
Nom de l'attribut bitangente.
|
static |
Nom de l'attribut bitangente pour les animations par sommet.
|
static |
Nom du premier attribut d'ID des bones.
|
static |
Nom du second attribut d'ID des bones.
|
static |
Nom de l'attribut de de matrices d'os.
|
static |
Nom du frame variable buffer contenant les données de billboards.
|
static |
Nom du frame variable buffer contenant les matrices.
|
static |
Nom du frame variable buffer contenant les données de modèle.
|
static |
Nom du frame variable buffer contenant les matrices modèle.
|
static |
Nom du frame variable buffer contenant les données d'animation de morphing.
|
static |
Nom du frame variable buffer contenant les informations de l'incrustation.
|
static |
Nom du frame variable buffer contenant les données de passe.
|
static |
Nom du frame variable buffer contenant les données de scène.
|
static |
Nom du frame variable buffer contenant les données d'animation de skinning.
|
static |
Nom de la frame variable contenant la position de la caméra.
|
static |
Nom du de l'attribut couleur.
|
static |
Nom du de l'attribut couleur pour les animations par sommet.
|
static |
Nom de la frame variable contenant les dimensions du billboard.
|
static |
Nom de la frame variable contenant la densité du brouillard.
|
static |
Nom de la frame variable contenant le type de brouillard.
|
static |
Nom de la frame variable contenant les lumières.
|
static |
Nom de la frame variable contenant le compte des lumières.
|
protected |
Le tableau de shaders actifs.
|
protected |
Tableau des chemins de fichiers, triés par modèle de shader.
|
protected |
La liste des tampons de compteurs atomiques, triés par type de shader.
|
protected |
La liste des tampons de compteurs atomiques, triés par nom.
|
protected |
Le layout de transform feedback.
|
protected |
La liste des tampons de compteurs atomiques.
|
protected |
La liste des tampons de stockage.
|
protected |
Le tableau de shaders.
|
protected |
< Le statut du programme.
|
protected |
La liste des tampons de stockage, triés par type de shader.
|
protected |
La liste des tampons de stockage, triés par nom.
|
static |
Nom de la frame variable contenant la texture de couleur ambiante.
|
static |
Nom de la frame variable contenant la texture de couleur.
|
static |
Nom de la frame variable contenant la texture de couleur diffuse.
|
static |
Nom de la frame variable contenant la texture de couleur émissive.
|
static |
Nom de la frame variable contenant la texture d'exposante.
|
static |
Nom de la frame variable contenant texture de hauteur.
|
static |
Nom de la frame variable contenant la texture de normales.
|
static |
Nom de la frame variable contenant texture d'opacité.
|
static |
Nom de la frame variable contenant l'image de shadow map.
|
static |
Nom de la frame variable contenant la texture de couleur spéculaire.
|
static |
Nom de la frame variable contenant l'image de texte pour les overlays.
|
static |
Nom de la frame variable contenant la couleur ambiante du matériau.
|
static |
Nom de la frame variable contenant la couleur diffuse du matériau.
|
static |
Nom de la frame variable contenant la couleur émissive du matériau.
|
static |
Nom de la frame variable contenant l'opacité du matériau.
|
static |
Nom de la frame variable contenant l'exposante du matériau.
|
static |
Nom de la frame variable contenant la couleur spéculaire du matériau.
|
static |
Nom de l'attribut normale.
|
static |
Nom de l'attribut normale pour les animations par sommet.
|
static |
Nom de la frame variable contenant la position de l'incrustation.
|
static |
Nom de l'attribut position.
|
static |
Nom de l'attribut position pour les animations par sommet.
|
static |
Nom de la frame variable contenant le statut de réception d'ombres.
|
static |
Nom de l'attribut tangente.
|
static |
Nom de l'attribut tangente pour les animations par sommet.
|
static |
Nom du de l'attribut texture pour les incrustations texte.
|
static |
Nom du de l'attribut texture.
|
static |
Nom du de l'attribut texture pour les animations par sommet.
|
static |
Nom de l'attribut du temps d'animation par sommet.
|
static |
Nom de l'attribut de transformation d'instance.
|
static |
Nom du premier attribut de poids des bones.
|
static |
Nom du second attribut de poids des bones.
|
static |
Nom de la frame variable contenant les dimensions de la fenêtre.