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 ShaderProgramBase. Plus de détails... | |
class | TextLoader |
Loader de ShaderProgramBase. Plus de détails... | |
Fonctions membres publiques | |
ShaderProgramBase (RenderSystem *p_pRenderSystem, eSHADER_LANGUAGE p_eLanguage) | |
Constructeur. Plus de détails... | |
virtual | ~ShaderProgramBase () |
Destructeur. Plus de détails... | |
virtual void | Cleanup () |
Nettoie le programme. Plus de détails... | |
virtual void | Initialise () |
Initialise le programme. Plus de détails... | |
Castor::String | GetVertexShaderSource (uint32_t p_uiProgramFlags, bool p_bLightPass=false) |
Récupère le source du vertex shader selon les flags donnés. Plus de détails... | |
Castor::String | GetPixelShaderSource (uint32_t p_uiFlags) |
Récupère le source du pixel shader selon les flags donnés. Plus de détails... | |
ShaderObjectBaseSPtr | CreateObject (eSHADER_TYPE p_eType) |
Crée le shader object voulu. Plus de détails... | |
virtual void | Begin (uint8_t p_byIndex, uint8_t p_byCount) |
Active le programme. Plus de détails... | |
virtual void | End () |
Désactive le programme. Plus de détails... | |
virtual void | SetFile (eSHADER_MODEL p_eModel, Castor::Path const &p_pathFile) |
Définit le fichier utilisé par tous les objets. Plus de détails... | |
virtual bool | Link () |
Link tous les objets du programme. Plus de détails... | |
virtual int | AssignLight () |
Assigne une lumière et retourne son index. Plus de détails... | |
virtual void | FreeLight (int p_iIndex) |
Libère une lumière. Plus de détails... | |
virtual void | SetLightAmbient (int p_iIndex, Castor::Colour const &p_crColour) |
virtual void | SetLightDiffuse (int p_iIndex, Castor::Colour const &p_crColour) |
virtual void | SetLightSpecular (int p_iIndex, Castor::Colour const &p_crColour) |
virtual void | SetLightPosition (int p_iIndex, Castor::Point4f const &p_ptPosition) |
virtual void | SetLightOrientation (int p_iIndex, Castor::Matrix4x4r const &p_mtxOrientation) |
virtual void | SetLightAttenuation (int p_iIndex, Castor::Point3f const &p_fAtt) |
virtual void | SetLightExponent (int p_iIndex, float p_fExp) |
virtual void | SetLightCutOff (int p_iIndex, float p_fCut) |
void | ResetToCompile () |
Réinitialise les variables de compilation afin de pouvoir compiler le shader à nouveau. Plus de détails... | |
virtual int | GetAttributeLocation (Castor::String const &p_strName) const =0 |
Récupère l'index d'un attribut de vertex dans le programme. Plus de détails... | |
FrameVariableBufferSPtr | GetMatrixBuffer () const |
Récupère le tampon de variables de matrices. Plus de détails... | |
FrameVariableBufferSPtr | GetPassBuffer () const |
Récupère le tampon de variables de passe. Plus de détails... | |
FrameVariableBufferSPtr | GetSceneBuffer () const |
Récupère le tampon de variables de scène. Plus de détails... | |
FrameVariableBufferSPtr | GetUserBuffer () const |
Récupère le tampon de variables constantes. Plus de détails... | |
void | SetInputType (eSHADER_TYPE p_eTarget, eTOPOLOGY p_ePrimitiveType) |
Définit le type des primitives en entrée. Plus de détails... | |
void | SetOutputType (eSHADER_TYPE p_eTarget, eTOPOLOGY p_ePrimitiveType) |
Définit le type des primitives en sortie. Plus de détails... | |
void | SetOutputVtxCount (eSHADER_TYPE p_eTarget, uint8_t p_uiCount) |
Définit le nombre de vertices générés. Plus de détails... | |
void | SetFile (eSHADER_TYPE p_eTarget, eSHADER_MODEL p_eModel, Castor::Path const &p_pathFile) |
Définit le fichier du shader pour le modèle donné Plus de détails... | |
Castor::Path | GetFile (eSHADER_TYPE p_eTarget, eSHADER_MODEL p_eModel) const |
Récupère le fichier du shader pour le modèle donné Plus de détails... | |
void | SetSource (eSHADER_TYPE p_eTarget, eSHADER_MODEL p_eModel, Castor::String const &p_strSource) |
Définit la source du shader pour le modèle donné Plus de détails... | |
Castor::String | GetSource (eSHADER_TYPE p_eTarget, eSHADER_MODEL p_eModel) const |
Récupère la source du shader pour le modèle donné Plus de détails... | |
bool | HasSource (eSHADER_TYPE p_eTarget) const |
Dit si le shader a un code source, quel que soit son modèle. Plus de détails... | |
void | SetEntryPoint (eSHADER_TYPE p_eTarget, Castor::String const &p_strName) |
Définit le point d'entrée pour ls langages en ayant besoin. Plus de détails... | |
Castor::String | GetEntryPoint (eSHADER_TYPE p_eTarget) const |
Récupère le point d'entrée du shader voulu. Plus de détails... | |
bool | HasProgram (eSHADER_TYPE p_eTarget) const |
Dit si le programme a un shader du type donné Plus de détails... | |
OneTextureFrameVariableSPtr | CreateFrameVariable (Castor::String const &p_strName, eSHADER_TYPE p_eType, int p_iNbOcc=1) |
Crée une variable. Plus de détails... | |
OneTextureFrameVariableSPtr | FindFrameVariable (Castor::String const &p_strName, eSHADER_TYPE p_eType) const |
Cherche une variable. 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... | |
RenderSystem * | GetRenderSystem () const |
Récupère le RenderSystem. Plus de détails... | |
Attributs publics statiques | |
Scene | |
static const Castor::String | CameraPos |
Nom de la frame variable contenant la position de la caméra. Plus de détails... | |
static const Castor::String | AmbientLight |
Nom de la frame variable contenant la lumière ambiante. Plus de détails... | |
static const Castor::String | BackgroundColour |
Nom de la frame variable contenant la couleur de fond. Plus de détails... | |
static const Castor::String | LightsCount |
Nom de la frame variable contenant le compte des lumières. Plus de détails... | |
static const Castor::String | Lights |
Nom de la frame variable contenant les lumières. Plus de détails... | |
Pass | |
static const Castor::String | MatAmbient |
Nom de la frame variable contenant la couleur ambiante du matériau. Plus de détails... | |
static const Castor::String | MatDiffuse |
Nom de la frame variable contenant la couleur diffuse du matériau. Plus de détails... | |
static const Castor::String | MatSpecular |
Nom de la frame variable contenant la couleur spéculaire du matériau. Plus de détails... | |
static const Castor::String | MatEmissive |
Nom de la frame variable contenant la couleur émissive du matériau. Plus de détails... | |
static const Castor::String | MatShininess |
Nom de la frame variable contenant l'exposante du matériau. Plus de détails... | |
static const Castor::String | MatOpacity |
Nom de la frame variable contenant l'opacité du matériau. Plus de détails... | |
Textures | |
static const Castor::String | MapColour |
Nom de la frame variable contenant la texture de couleur. Plus de détails... | |
static const Castor::String | MapAmbient |
Nom de la frame variable contenant la texture de couleur ambiante. Plus de détails... | |
static const Castor::String | MapDiffuse |
Nom de la frame variable contenant la texture de couleur diffuse. Plus de détails... | |
static const Castor::String | MapSpecular |
Nom de la frame variable contenant la texture de couleur spéculaire. Plus de détails... | |
static const Castor::String | MapNormal |
Nom de la frame variable contenant la texture de normales. Plus de détails... | |
static const Castor::String | MapOpacity |
Nom de la frame variable contenant texture d'opacité Plus de détails... | |
static const Castor::String | MapGloss |
Nom de la frame variable contenant la texture d'exposante. Plus de détails... | |
static const Castor::String | MapHeight |
Nom de la frame variable contenant texture de hauteur. Plus de détails... | |
Fonctions membres protégées | |
virtual ShaderObjectBaseSPtr | DoCreateObject (eSHADER_TYPE p_eType)=0 |
Crée le shader object voulu. Plus de détails... | |
virtual OneTextureFrameVariableSPtr | DoCreateTextureVariable (int p_iNbOcc)=0 |
Crée une variable de frame texture. Plus de détails... | |
virtual Castor::String | DoGetVertexShaderSource (uint32_t p_uiProgramFlags)=0 |
Récupère le source du vertex shader selon les flags donnés. Plus de détails... | |
virtual Castor::String | DoGetPixelShaderSource (uint32_t p_uiFlags)=0 |
Récupère le source du pixel shader selon les flags donnés. Plus de détails... | |
virtual Castor::String | DoGetDeferredVertexShaderSource (uint32_t p_uiProgramFlags, bool p_bLightPass)=0 |
Récupère le source du vertex shader pour la passe géométrique du deferred shading selon les flags donnés. Plus de détails... | |
virtual Castor::String | DoGetDeferredPixelShaderSource (uint32_t p_uiFlags)=0 |
Récupère le source du pixel shader pour la passe géométrique du deferred shading selon les flags donnés. Plus de détails... | |
Attributs protégés | |
ePROGRAM_STATUS | m_eStatus |
< Le statut du programme Plus de détails... | |
eSHADER_LANGUAGE | m_eLanguage |
Dit si le shader est activé ou pas. Plus de détails... | |
bool | m_bEnabled |
ShaderObjectBaseSPtr | m_pShaders [eSHADER_TYPE_COUNT] |
Le tableau de shaders. 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... | |
RenderSystem * | m_pRenderSystem |
L'instance du RenderSystem. Plus de détails... | |
bool | m_bLightsChanged |
Dit si une lumière au moins a changé depuis la dernière frame. Plus de détails... | |
OneIntFrameVariableSPtr | m_pLightsCount |
Contient le nombre de lumières actives. Plus de détails... | |
OneTextureFrameVariableSPtr | m_pLights |
Contient les lumières. Plus de détails... | |
Point3rFrameVariableSPtr | m_pCameraPos |
Contient la position de la caméra. Plus de détails... | |
Castor::PxBufferBaseSPtr | m_pLightsData |
L'image contenant les données des lumières. Plus de détails... | |
TextureUnitSPtr | m_pLightsTexture |
La texture contenant les lumières. Plus de détails... | |
std::set< int > | m_setFreeLights |
Le set contenant les indices des lumières disponibles. Plus de détails... | |
FrameVariableBufferSPtr | m_pMatrixBuffer |
Le tampon de variables de matrices. Plus de détails... | |
FrameVariableBufferSPtr | m_pPassBuffer |
Le tampon de variables de passe. Plus de détails... | |
FrameVariableBufferSPtr | m_pSceneBuffer |
Le tampon de variables de scène. Plus de détails... | |
FrameVariableBufferSPtr | m_pUserBuffer |
Le tampon de variables utilisateur. Plus de détails... | |
Amis | |
template<class Ty > | |
struct | FrameVariableCreator |
template<class Ty > | |
struct | ShaderObjectCreator |
class | Castor::TextLoader< Castor3D::ShaderProgramBase > |
Implémentation de base d'un programme de shader, utilisé afin d'exposer les fonctions communes aux langages de shader.
Castor3D::ShaderProgramBase::ShaderProgramBase | ( | RenderSystem * | p_pRenderSystem, |
eSHADER_LANGUAGE | p_eLanguage | ||
) |
Constructeur.
[in] | p_pRenderSystem | L'instance du RenderSystem |
[in] | p_eLanguage | Le langage du programme |
|
virtual |
Destructeur.
|
virtual |
Assigne une lumière et retourne son index.
|
virtual |
Active le programme.
[in] | p_byIndex | L'index de la passe courante |
[in] | p_byCount | Le compte des passes du material |
|
virtual |
Nettoie le programme.
OneTextureFrameVariableSPtr Castor3D::ShaderProgramBase::CreateFrameVariable | ( | Castor::String const & | p_strName, |
eSHADER_TYPE | p_eType, | ||
int | p_iNbOcc = 1 |
||
) |
Crée une variable.
[in] | p_strName | Le nom de la variable |
[in] | p_eType | Le type du shader |
[in] | p_iNbOcc | Les dimensions du tableau |
ShaderObjectBaseSPtr Castor3D::ShaderProgramBase::CreateObject | ( | eSHADER_TYPE | p_eType | ) |
Crée le shader object voulu.
[in] | p_eType | Le shader object concerné |
|
protectedpure virtual |
Crée le shader object voulu.
[in] | p_eType | Le shader object concerné |
|
protectedpure virtual |
Crée une variable de frame texture.
[in] | p_iNbOcc | Les dimensions du tableau |
|
protectedpure virtual |
Récupère le source du pixel shader pour la passe géométrique du deferred shading selon les flags donnés.
[in] | p_uiFlags | Une combinaison de eTEXTURE_CHANNEL |
|
protectedpure virtual |
Récupère le source du vertex shader pour la passe géométrique du deferred shading selon les flags donnés.
[in] | p_uiProgramFlags | Une combinaison de ePROGRAM_FLAG |
[in] | p_bLightPass | Dit si on veut le shader de la passe de lumières |
|
protectedpure virtual |
Récupère le source du pixel shader selon les flags donnés.
[in] | p_uiFlags | Une combinaison de eTEXTURE_CHANNEL |
|
protectedpure virtual |
Récupère le source du vertex shader selon les flags donnés.
[in] | p_uiProgramFlags | Une combinaison de ePROGRAM_FLAG |
|
virtual |
Désactive le programme.
OneTextureFrameVariableSPtr Castor3D::ShaderProgramBase::FindFrameVariable | ( | Castor::String const & | p_strName, |
eSHADER_TYPE | p_eType | ||
) | const |
Cherche une variable.
[in] | p_strName | Le nom de la variable |
[in] | p_eType | Le type du shader |
|
virtual |
Libère une lumière.
[in] | L'index | de la lumière |
|
pure virtual |
Récupère l'index d'un attribut de vertex dans le programme.
[in] | p_strName | Le nom de l'attribut |
Castor::String Castor3D::ShaderProgramBase::GetEntryPoint | ( | eSHADER_TYPE | p_eTarget | ) | const |
Récupère le point d'entrée du shader voulu.
[in] | p_eTarget | Le shader object concerné |
Castor::Path Castor3D::ShaderProgramBase::GetFile | ( | eSHADER_TYPE | p_eTarget, |
eSHADER_MODEL | p_eModel | ||
) | const |
Récupère le fichier du shader pour le modèle donné
[in] | p_eTarget | Le shader object concerné |
[in] | p_eModel | Le modèle de shader |
|
inline |
Récupère le language du shader.
|
inline |
Récupère le tampon de variables de matrices.
|
inline |
Récupère le tampon de variables de passe.
Castor::String Castor3D::ShaderProgramBase::GetPixelShaderSource | ( | uint32_t | p_uiFlags | ) |
Récupère le source du pixel shader selon les flags donnés.
[in] | p_uiFlags | Une combinaison de eTEXTURE_CHANNEL |
|
inline |
Récupère le RenderSystem.
|
inline |
Récupère le tampon de variables de scène.
Castor::String Castor3D::ShaderProgramBase::GetSource | ( | eSHADER_TYPE | p_eTarget, |
eSHADER_MODEL | p_eModel | ||
) | const |
Récupère la source du shader pour le modèle donné
[in] | p_eTarget | Le shader object concerné |
[in] | p_eModel | Le modèle de shader |
|
inline |
Récupère le statut de link du programme.
|
inline |
Récupère le tampon de variables constantes.
Castor::String Castor3D::ShaderProgramBase::GetVertexShaderSource | ( | uint32_t | p_uiProgramFlags, |
bool | p_bLightPass = false |
||
) |
Récupère le source du vertex shader selon les flags donnés.
[in] | p_uiProgramFlags | Combinaison de ePROGRAM_FLAG |
[in] | p_bLightPass | Dit si on veut le shader de la passe de lumières |
bool Castor3D::ShaderProgramBase::HasProgram | ( | eSHADER_TYPE | p_eTarget | ) | const |
Dit si le programme a un shader du type donné
[in] | p_eTarget | Le type du shader object |
true
si le shader object existe bool Castor3D::ShaderProgramBase::HasSource | ( | eSHADER_TYPE | p_eTarget | ) | const |
Dit si le shader a un code source, quel que soit son modèle.
[in] | p_eTarget | Le shader object concerné |
true
si le shader a un code source
|
virtual |
Initialise le programme.
|
virtual |
Link tous les objets du programme.
void Castor3D::ShaderProgramBase::ResetToCompile | ( | ) |
Réinitialise les variables de compilation afin de pouvoir compiler le shader à nouveau.
void Castor3D::ShaderProgramBase::SetEntryPoint | ( | eSHADER_TYPE | p_eTarget, |
Castor::String const & | p_strName | ||
) |
Définit le point d'entrée pour ls langages en ayant besoin.
[in] | p_eTarget | Le shader object concerné |
[in] | p_strName | Le point d'entrée |
|
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 |
void Castor3D::ShaderProgramBase::SetFile | ( | eSHADER_TYPE | p_eTarget, |
eSHADER_MODEL | p_eModel, | ||
Castor::Path const & | p_pathFile | ||
) |
Définit le fichier du shader pour le modèle donné
[in] | p_eTarget | Le shader object concerné |
[in] | p_eModel | Le modèle de shader |
[in] | p_pathFile | Le nom du fichier |
void Castor3D::ShaderProgramBase::SetInputType | ( | eSHADER_TYPE | p_eTarget, |
eTOPOLOGY | p_ePrimitiveType | ||
) |
Définit le type des primitives en entrée.
[in] | p_eTarget | Le shader object concerné |
[in] | p_ePrimitiveType | Le type des primitives en entrée |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
void Castor3D::ShaderProgramBase::SetOutputType | ( | eSHADER_TYPE | p_eTarget, |
eTOPOLOGY | p_ePrimitiveType | ||
) |
Définit le type des primitives en sortie.
[in] | p_eTarget | Le shader object concerné |
[in] | p_ePrimitiveType | Le type des primitives en sortie |
void Castor3D::ShaderProgramBase::SetOutputVtxCount | ( | eSHADER_TYPE | p_eTarget, |
uint8_t | p_uiCount | ||
) |
Définit le nombre de vertices générés.
[in] | p_eTarget | Le shader object concerné |
[in] | p_uiCount | Le compte |
void Castor3D::ShaderProgramBase::SetSource | ( | eSHADER_TYPE | p_eTarget, |
eSHADER_MODEL | p_eModel, | ||
Castor::String const & | p_strSource | ||
) |
Définit la source du shader pour le modèle donné
[in] | p_eTarget | Le shader object concerné |
[in] | p_eModel | Le modèle de shader |
[in] | p_strSource | Le code de la source |
|
friend |
|
friend |
|
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 la frame variable contenant la position de la caméra.
|
static |
Nom de la frame variable contenant les lumières.
|
static |
Nom de la frame variable contenant le compte des lumières.
|
protected |
Tableau des chemins de fichiers, triés par modèle de shader.
|
protected |
|
protected |
Dit si une lumière au moins a changé depuis la dernière frame.
|
protected |
Dit si le shader est activé ou pas.
|
protected |
< Le statut du programme
Le langage du programme
|
protected |
Contient la position de la caméra.
|
protected |
Contient les lumières.
|
protected |
Contient le nombre de lumières actives.
|
protected |
L'image contenant les données des lumières.
|
protected |
La texture contenant les lumières.
|
protected |
Le tampon de variables de matrices.
|
protected |
Le tampon de variables de passe.
|
protected |
L'instance du RenderSystem.
|
protected |
Le tampon de variables de scène.
|
protected |
Le tableau de shaders.
|
protected |
Le tampon de variables utilisateur.
|
protected |
Le set contenant les indices des lumières disponibles.
|
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 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 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.