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 &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 (castor::Path const &p_pathFile) |
Définit le fichier utilisé par tous les objets. 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, castor::Path const &p_pathFile) |
Définit le fichier du shader. Plus de détails... | |
C3D_API castor::Path | getFile (ShaderType p_target) const |
Récupère le fichier du shader. Plus de détails... | |
C3D_API bool | hasFile (ShaderType p_target) const |
Dit si le shader a un fichier source. Plus de détails... | |
C3D_API void | setSource (ShaderType p_target, castor::String const &p_source) |
Définit la source du shader. Plus de détails... | |
C3D_API void | setSource (ShaderType p_target, glsl::Shader const &p_source) |
Définit la source du shader. Plus de détails... | |
C3D_API castor::String | getSource (ShaderType p_target) const |
Récupère la source du shader. Plus de détails... | |
C3D_API bool | hasSource (ShaderType p_target) const |
Dit si le shader a un code source. 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 type, castor::String const &name, ShaderType shader, int nbOcc=1) |
Crée une variable. Plus de détails... | |
template<UniformType Type> | |
std::shared_ptr< TPushUniform< Type > > | createUniform (castor::String const &name, ShaderType shader, int nbOcc=1) |
Crée une variable. Plus de détails... | |
C3D_API PushUniformSPtr | findUniform (UniformType type, castor::String const &name, ShaderType shader) const |
Cherche une variable. Plus de détails... | |
template<UniformType Type> | |
std::shared_ptr< TPushUniform< Type > > | findUniform (castor::String const &name, ShaderType 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... | |
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 |
static C3D_API const castor::String | Material |
Scene | |
static C3D_API const castor::String | Lights |
Textures | |
static C3D_API const castor::String | MapAlbedo |
static C3D_API const castor::String | MapDiffuse |
static C3D_API const castor::String | MapSpecular |
static C3D_API const castor::String | MapRoughness |
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 | MapMetallic |
static C3D_API const castor::String | MapHeight |
static C3D_API const castor::String | MapAmbientOcclusion |
static C3D_API const castor::String | MapTransmittance |
static C3D_API const castor::String | MapEnvironment |
static C3D_API const castor::String | MapIrradiance |
static C3D_API const castor::String | MapPrefiltered |
static C3D_API const castor::String | MapBrdf |
static C3D_API const castor::String | MapText |
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 |
castor::Path | m_file |
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] | 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 PushUniformSPtr castor3d::ShaderProgram::createUniform | ( | UniformType | type, |
castor::String const & | name, | ||
ShaderType | shader, | ||
int | nbOcc = 1 |
||
) |
Crée une variable.
[in] | type | Le type de variable. |
[in] | name | Le nom de la variable. |
[in] | shader | Le type du shader. |
[in] | nbOcc | Les dimensions du tableau. |
|
inline |
Crée une variable.
[in] | name | Le nom de la variable. |
[in] | shader | Le type du shader. |
[in] | 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 PushUniformSPtr castor3d::ShaderProgram::findUniform | ( | UniformType | type, |
castor::String const & | name, | ||
ShaderType | shader | ||
) | const |
Cherche une variable.
[in] | type | Le type de variable. |
[in] | name | Le nom de la variable. |
[in] | shader | Le type du shader. |
|
inline |
Cherche une variable.
[in] | name | Le nom de la variable. |
[in] | 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 | ) | const |
Récupère le fichier du shader.
[in] | p_target | Le shader object concerné. |
|
pure virtual |
|
pure virtual |
C3D_API ShaderStatus castor3d::ShaderProgram::getObjectStatus | ( | ShaderType | p_target | ) | const |
C3D_API castor::String castor3d::ShaderProgram::getSource | ( | ShaderType | p_target | ) | const |
Récupère la source du shader.
[in] | p_target | Le shader object concerné. |
|
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.
[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.
[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 | ( | castor::Path const & | p_pathFile | ) |
Définit le fichier utilisé par tous les objets.
[in] | p_pathFile | Le nom du fichier. |
C3D_API void castor3d::ShaderProgram::setFile | ( | ShaderType | p_target, |
castor::Path const & | p_pathFile | ||
) |
Définit le fichier du shader.
[in] | p_target | Le shader object concerné. |
[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, |
castor::String const & | p_source | ||
) |
Définit la source du shader.
[in] | p_target | Le shader object concerné. |
[in] | p_source | Le code de la source. |
C3D_API void castor3d::ShaderProgram::setSource | ( | ShaderType | p_target, |
glsl::Shader const & | p_source | ||
) |
Définit la source du shader.
[in] | p_target | Le shader object concerné. |
[in] | p_source | 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 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 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 lumières.
|
protected |
Le tableau de shaders actifs.
|
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 |
Tableau des chemins de fichiers, triés par modèle de shader.
|
protected |
La liste des tampons de compteurs atomiques.
|
protected |
Le tableau de shaders.
|
protected |
< Le statut du programme.
|
static |
Nom de la frame variable contenant la texture de couleur albedo.
|
static |
Nom de la frame variable contenant la texture d'occlusion ambiante.
|
static |
Nom de la frame variable contenant la texture BRDF.
|
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'environnement.
|
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 d'irradiance.
|
static |
Nom de la frame variable contenant la texture de "métallosité".
|
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 préfiltrée.
|
static |
Nom de la frame variable contenant la texture de rugosité.
|
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 texture de transmission.
|
static |
Nom de l'attribut d'instance d'indice de matériau.
|
static |
Nom de l'attribut normale.
|
static |
Nom de l'attribut normale pour les animations par sommet.
|
static |
Nom de l'attribut position.
|
static |
Nom de l'attribut position pour les animations par sommet.
|
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 d'instance de transformation.
|
static |
Nom du premier attribut de poids des bones.
|
static |
Nom du second attribut de poids des bones.