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 | BinaryParser |
Loader de ShaderProgram. Plus de détails... | |
class | TextLoader |
Loader de ShaderProgram. Plus de détails... | |
Fonctions membres publiques | |
C3D_API | ShaderProgram (RenderSystem &p_renderSystem, eSHADER_LANGUAGE p_langage) |
Constructeur. Plus de détails... | |
virtual C3D_API | ~ShaderProgram () |
Destructeur. Plus de détails... | |
C3D_API ShaderObjectSPtr | CreateObject (eSHADER_TYPE p_type) |
Crée le shader object voulu. Plus de détails... | |
virtual C3D_API void | SetFile (eSHADER_MODEL p_eModel, Castor::Path const &p_pathFile) |
Définit le fichier utilisé par tous les objets. Plus de détails... | |
C3D_API void | AddFrameVariableBuffer (FrameVariableBufferSPtr p_pVariableBuffer, uint64_t p_shaderMask) |
Crée une buffer de variables uniformes à ajouter. 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 (eSHADER_TYPE p_target, eTOPOLOGY p_topology) |
Définit le type des primitives en entrée. Plus de détails... | |
C3D_API void | SetOutputType (eSHADER_TYPE p_target, eTOPOLOGY p_topology) |
Définit le type des primitives en sortie. Plus de détails... | |
C3D_API void | SetOutputVtxCount (eSHADER_TYPE p_target, uint8_t p_count) |
Définit le nombre de vertices générés. Plus de détails... | |
C3D_API void | SetFile (eSHADER_TYPE p_target, eSHADER_MODEL 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 (eSHADER_TYPE p_target, eSHADER_MODEL p_eModel) const |
Récupère le fichier du shader pour le modèle donné Plus de détails... | |
C3D_API bool | HasFile (eSHADER_TYPE 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 (eSHADER_TYPE p_target, eSHADER_MODEL 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 (eSHADER_TYPE p_target, eSHADER_MODEL p_eModel) const |
Récupère la source du shader pour le modèle donné Plus de détails... | |
C3D_API bool | HasSource (eSHADER_TYPE 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 (eSHADER_TYPE p_target) const |
Dit si le programme a un shader du type donné Plus de détails... | |
C3D_API eSHADER_STATUS | GetObjectStatus (eSHADER_TYPE p_target) const |
Récupère le statut du type d'objet donné Plus de détails... | |
C3D_API OneIntFrameVariableSPtr | CreateFrameVariable (Castor::String const &p_name, eSHADER_TYPE p_type, int p_iNbOcc=1) |
Crée une variable. Plus de détails... | |
C3D_API OneIntFrameVariableSPtr | FindFrameVariable (Castor::String const &p_name, eSHADER_TYPE p_type) const |
Cherche une variable. Plus de détails... | |
C3D_API FrameVariableBufferSPtr | FindFrameVariableBuffer (Castor::String const &p_name) const |
Trouve une variable. Plus de détails... | |
C3D_API FrameVariablePtrList & | GetFrameVariables (eSHADER_TYPE p_type) |
Récupère les variables de frame liées à un type de shader particulier. Plus de détails... | |
C3D_API FrameVariablePtrList const & | GetFrameVariables (eSHADER_TYPE 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 (bool p_bindUbo=true)=0 |
Active le programme. Plus de détails... | |
virtual C3D_API void | Unbind ()=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 |
FrameVariableBufferPtrList & | GetFrameVariableBuffers (eSHADER_TYPE p_type) |
Récupère les tampons de variables de frame liés à un type de shader particulier. Plus de détails... | |
FrameVariableBufferPtrList const & | GetFrameVariableBuffers (eSHADER_TYPE p_type) const |
Récupère les tampons de variable de frames liés à un type de shader particulier. Plus de détails... | |
FrameVariableBufferPtrList & | GetFrameVariableBuffers () |
Récupère les tampons de variables de frame. Plus de détails... | |
FrameVariableBufferPtrList const & | GetFrameVariableBuffers () const |
Récupère les tampons de variable de frames. Plus de détails... | |
ePROGRAM_STATUS | GetStatus () const |
Récupère le statut de link du programme. Plus de détails... | |
eSHADER_LANGUAGE | GetLanguage () const |
Récupère le language du shader. Plus de détails... | |
Attributs publics statiques | |
Attributes | |
static C3D_API const Castor::String | Position |
Nom de l'attribut position. Plus de détails... | |
static C3D_API const Castor::String | Normal |
Nom de l'attribut normale. Plus de détails... | |
static C3D_API const Castor::String | Tangent |
Nom de l'attribut tangente. Plus de détails... | |
static C3D_API const Castor::String | Bitangent |
Nom de l'attribut bitangente. Plus de détails... | |
static C3D_API const Castor::String | Texture |
Nom du de l'attribut texture. Plus de détails... | |
static C3D_API const Castor::String | Colour |
Nom du de l'attribut couleur. Plus de détails... | |
static C3D_API const Castor::String | Text |
Nom du de l'attribut texture pour les incrustations texte. Plus de détails... | |
static C3D_API const Castor::String | BoneIds0 |
Nom du premier attribut d'ID des bones. Plus de détails... | |
static C3D_API const Castor::String | BoneIds1 |
Nom du second attribut d'ID des bones. Plus de détails... | |
static C3D_API const Castor::String | Weights0 |
Nom du premier attribut de poids des bones. Plus de détails... | |
static C3D_API const Castor::String | Weights1 |
Nom du second attribut de poids des bones. Plus de détails... | |
static C3D_API const Castor::String | Transform |
Nom de l'attribut de transformation d'instance. Plus de détails... | |
Scene | |
static C3D_API const Castor::String | CameraPos |
Nom de la frame variable contenant la position de la caméra. Plus de détails... | |
static C3D_API const Castor::String | AmbientLight |
Nom de la frame variable contenant la lumière ambiante. Plus de détails... | |
static C3D_API const Castor::String | BackgroundColour |
Nom de la frame variable contenant la couleur de fond. Plus de détails... | |
static C3D_API const Castor::String | LightsCount |
Nom de la frame variable contenant le compte des lumières. Plus de détails... | |
static C3D_API const Castor::String | Lights |
Nom de la frame variable contenant les lumières. Plus de détails... | |
Pass | |
static C3D_API const Castor::String | MatAmbient |
Nom de la frame variable contenant la couleur ambiante du matériau. Plus de détails... | |
static C3D_API const Castor::String | MatDiffuse |
Nom de la frame variable contenant la couleur diffuse du matériau. Plus de détails... | |
static C3D_API const Castor::String | MatSpecular |
Nom de la frame variable contenant la couleur spéculaire du matériau. Plus de détails... | |
static C3D_API const Castor::String | MatEmissive |
Nom de la frame variable contenant la couleur émissive du matériau. Plus de détails... | |
static C3D_API const Castor::String | MatShininess |
Nom de la frame variable contenant l'exposante du matériau. Plus de détails... | |
static C3D_API const Castor::String | MatOpacity |
Nom de la frame variable contenant l'opacité du matériau. Plus de détails... | |
static C3D_API const Castor::String | MapText |
Nom de la frame variable contenant l'image de texte pour les overlays. Plus de détails... | |
Textures | |
static C3D_API const Castor::String | MapColour |
Nom de la frame variable contenant la texture de couleur. Plus de détails... | |
static C3D_API const Castor::String | MapAmbient |
Nom de la frame variable contenant la texture de couleur ambiante. Plus de détails... | |
static C3D_API const Castor::String | MapDiffuse |
Nom de la frame variable contenant la texture de couleur diffuse. Plus de détails... | |
static C3D_API const Castor::String | MapSpecular |
Nom de la frame variable contenant la texture de couleur spéculaire. Plus de détails... | |
static C3D_API const Castor::String | MapEmissive |
Nom de la frame variable contenant la texture de couleur émissive. Plus de détails... | |
static C3D_API const Castor::String | MapNormal |
Nom de la frame variable contenant la texture de normales. Plus de détails... | |
static C3D_API const Castor::String | MapOpacity |
Nom de la frame variable contenant texture d'opacité Plus de détails... | |
static C3D_API const Castor::String | MapGloss |
Nom de la frame variable contenant la texture d'exposante. Plus de détails... | |
static C3D_API const Castor::String | MapHeight |
Nom de la frame variable contenant texture de hauteur. Plus de détails... | |
Frame Variable Buffers | |
static C3D_API const Castor::String | BufferMatrix |
Nom du frame variable buffer contenant les matrices. Plus de détails... | |
static C3D_API const Castor::String | BufferScene |
Nom du frame variable buffer contenant les données de scène. Plus de détails... | |
static C3D_API const Castor::String | BufferPass |
Nom du frame variable buffer contenant les données de passe. Plus de détails... | |
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 (bool p_bindUbo) |
Active le programme. Plus de détails... | |
C3D_API void | DoUnbind () |
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 | |
ePROGRAM_STATUS | m_status |
< Le statut du programme Plus de détails... | |
eSHADER_LANGUAGE | m_eLanguage |
std::array< ShaderObjectSPtr, eSHADER_TYPE_COUNT > | m_pShaders |
Le tableau de shaders. Plus de détails... | |
std::vector< ShaderObjectSPtr > | m_activeShaders |
Le tableau de shaders actifs. Plus de détails... | |
std::array< Castor::Path, eSHADER_MODEL_COUNT > | m_arrayFiles |
Tableau des chemins de fichiers, triés par modèle de shader. Plus de détails... | |
FrameVariableBufferPtrStrMap | m_frameVariableBuffersByName |
La liste des buffers de variable de frame, triés par nom. Plus de détails... | |
std::array< FrameVariableBufferPtrList, eSHADER_TYPE_COUNT > | m_frameVariableBuffers |
La liste des buffers de variable de frame, triés par type de shader. Plus de détails... | |
FrameVariableBufferPtrList | m_listFrameVariableBuffers |
La liste des buffer de variables de frame. Plus de détails... | |
Amis | |
class | Castor::TextLoader< Castor3D::ShaderProgram > |
Implémentation de base d'un programme de shader, utilisé afin d'exposer les fonctions communes aux langages de shader.
C3D_API Castor3D::ShaderProgram::ShaderProgram | ( | RenderSystem & | p_renderSystem, |
eSHADER_LANGUAGE | p_langage | ||
) |
Constructeur.
[in] | p_renderSystem | L'instance du RenderSystem |
[in] | p_langage | Le langage du programme |
|
virtual |
Destructeur.
C3D_API void Castor3D::ShaderProgram::AddFrameVariableBuffer | ( | FrameVariableBufferSPtr | p_pVariableBuffer, |
uint64_t | p_shaderMask | ||
) |
Crée une buffer de variables uniformes à ajouter.
[in] | p_pVariableBuffer | Le tampon de variables GPU |
[in] | p_shaderMask | Combinaison de MASK_SHADER_TYPE, pour déterminer les shaders auxquels il doit être lié |
|
pure virtual |
Active le programme.
[in] | p_bindUbo | Dit si les tampons de variables de frames doivent être liés. |
|
pure virtual |
Nettoie le programme.
C3D_API OneIntFrameVariableSPtr Castor3D::ShaderProgram::CreateFrameVariable | ( | Castor::String const & | p_name, |
eSHADER_TYPE | p_type, | ||
int | p_iNbOcc = 1 |
||
) |
Crée une variable.
[in] | p_name | Le nom de la variable |
[in] | p_type | Le type du shader |
[in] | p_iNbOcc | Les dimensions du tableau |
C3D_API ShaderObjectSPtr Castor3D::ShaderProgram::CreateObject | ( | eSHADER_TYPE | p_type | ) |
Crée le shader object voulu.
[in] | p_type | Le shader object concerné |
|
protected |
Active le programme.
[in] | p_bindUbo | Dit si les tampons de variables de frames doivent être liés. |
Référencé par GetLanguage().
|
protected |
Nettoie le programme.
Référencé par GetLanguage().
|
protected |
Initialise le programme.
Référencé par GetLanguage().
|
protected |
Link tous les objets du programme.
Référencé par GetLanguage().
|
protected |
Désactive le programme.
Référencé par GetLanguage().
C3D_API OneIntFrameVariableSPtr Castor3D::ShaderProgram::FindFrameVariable | ( | Castor::String const & | p_name, |
eSHADER_TYPE | p_type | ||
) | const |
Cherche une variable.
[in] | p_name | Le nom de la variable |
[in] | p_type | Le type du shader |
C3D_API FrameVariableBufferSPtr Castor3D::ShaderProgram::FindFrameVariableBuffer | ( | Castor::String const & | p_name | ) | const |
Trouve une variable.
C3D_API Castor::Path Castor3D::ShaderProgram::GetFile | ( | eSHADER_TYPE | p_target, |
eSHADER_MODEL | 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 |
|
inline |
Récupère les tampons de variables de frame liés à un type de shader particulier.
[in] | p_type | The shader type |
Références m_frameVariableBuffers.
|
inline |
Récupère les tampons de variable de frames liés à un type de shader particulier.
[in] | p_type | The shader type |
Références m_frameVariableBuffers.
|
inline |
|
inline |
C3D_API FrameVariablePtrList& Castor3D::ShaderProgram::GetFrameVariables | ( | eSHADER_TYPE | p_type | ) |
Récupère les variables de frame liées à un type de shader particulier.
[in] | p_type | The shader type |
C3D_API FrameVariablePtrList const& Castor3D::ShaderProgram::GetFrameVariables | ( | eSHADER_TYPE | p_type | ) | const |
Récupère les variables de frame liées à un type de shader particulier.
[in] | p_type | The shader type |
|
inline |
Récupère le language du shader.
Références DoBind(), DoCleanup(), DoInitialise(), DoLink(), DoUnbind(), et m_eLanguage.
|
pure virtual |
|
pure virtual |
C3D_API eSHADER_STATUS Castor3D::ShaderProgram::GetObjectStatus | ( | eSHADER_TYPE | p_target | ) | const |
Récupère le statut du type d'objet donné
C3D_API Castor::String Castor3D::ShaderProgram::GetSource | ( | eSHADER_TYPE | p_target, |
eSHADER_MODEL | 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 bool Castor3D::ShaderProgram::HasFile | ( | eSHADER_TYPE | 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 | ( | eSHADER_TYPE | 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 | ( | eSHADER_TYPE | 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.
|
virtual |
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 | ( | eSHADER_TYPE | p_target, |
eSHADER_MODEL | 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 | ( | eSHADER_TYPE | p_target, |
eTOPOLOGY | 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 | ( | eSHADER_TYPE | p_target, |
eTOPOLOGY | 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 | ( | eSHADER_TYPE | 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 | ( | eSHADER_TYPE | p_target, |
eSHADER_MODEL | 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 |
|
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 du premier attribut d'ID des bones.
|
static |
Nom du second attribut d'ID des bones.
|
static |
Nom du frame variable buffer contenant les matrices.
|
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 de la frame variable contenant la position de la caméra.
|
static |
Nom du de l'attribut couleur.
|
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 |
Référencé par GetLanguage().
|
protected |
La liste des buffers de variable de frame, triés par type de shader.
Référencé par GetFrameVariableBuffers().
|
protected |
La liste des buffers de variable de frame, triés par nom.
|
protected |
La liste des buffer de variables de frame.
Référencé par GetFrameVariableBuffers().
|
protected |
Le tableau de shaders.
|
protected |
|
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 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 position.
|
static |
Nom de l'attribut tangente.
|
static |
Nom du de l'attribut texture pour les incrustations texte.
|
static |
Nom du de l'attribut texture.
|
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.