Developpez.com - Projets
X

Choisissez d'abord la catégorieensuite la rubrique :

Vertex Shader

Variables de type 'attribute' (ou 'in')

  • position : vec4
    Contient les coordonnées du vertex (substitution de gl_Vertex)
  • normal : vec3
    Contient les coordonnées de la normale au vertex (substitution de gl_Normal)
  • tangent : vec3
    Contient les coordonnées de la tangente au vertex (pour la constitution de l'espace tangent)
  • bitangent : vec3
    Contient les coordonnées de la bitangente au vertex (pour la constitution de l'espace tangent)
  • texture : vec3
    Contient les coordonnées de texture du vertex (substitution de gl_MultiTexCoords)
  • bone_ids0 : ivec4
  • bone_ids1 : ivec4
    Contient les indices des os affectant le sommet (jusqu'à 8)
  • weights0 : vec4
  • weights1 : vec4
    Contient les poids des os sur le sommet (la somme des 8 composantes fait 1.0)
  • transform : mat4
    Contient la matrice de transformation spécifique à cette instance (pour l'instanciation hardware)

Variables de type 'uniform'

Si le GPU le supporte, les différentes constantes 'uniform' sont regroupées dans des Uniform Buffer Object (UBO).
Sinon, elles sont définies en tant que 'uniform <type> <name>'.

Les matrices :

Le nom de l'UBO est : 'Matrices".

  • c3d_mtxProjection : mat4
    Contient la matrice projection
  • c3d_mtxView : mat4
    Contient la matrice vue
  • c3d_mtxModel : mat4
    Contient la matrice vue
  • c3d_mtxNormal : mat4
    Contient la matrice normale
  • c3d_mtxTexture0 : mat4
    Contient la matrice de transformation de la première texture
  • c3d_mtxTexture1 : mat4
    Contient la matrice de transformation de la seconde texture
  • c3d_mtxTexture2 : mat4
    Contient la matrice de transformation de la troisième texture
  • c3d_mtxTexture3 : mat4
    Contient la matrice de transformation de la quatrième texture
  • c3d_mtxBones : mat4 x 400
    Contient jusqu'à 400 matrices de transformation, une par os du squelette d'animation.

Les constantes de scène

Le nom de l'UBO est : 'Scene".

  • c3d_iLightsCount : ivec4
    Contient le compte des lumières composant la scène (directionnelles, ponctuelles et projecteurs)
  • c3d_v4AmbientLight : vec4
    Contient la couleur de la lumière ambiante
  • c3d_v4BackgroundColour : vec4
    Contient la couleur de fond de la scène
  • c3d_v3CameraPosition : vec4
    Contient la position de la caméra active

Les constantes de matériau

Le nom de l'UBO est : 'Pass".

  • c3d_v4MatAmbient : vec4
    Contient la valeur de la couleur ambiante de la passe courante
  • c3d_v4MatDiffuse : vec4
    Contient la valeur de la couleur diffuse de la passe courante
  • c3d_v4MatEmissive : vec4
    Contient la valeur de la couleur émissive de la passe courante
  • c3d_v4MatSpecular : vec4
    Contient la valeur de la couleur spéculaire de la passe courante
  • c3d_fMatShininess : float
    Contient la valeur de l'exposant de la passe courante
  • c3d_fMatOpacity : float
    Contient la valeur de transparence globale de la passe courante

Les sources lumineuses

Elles sont données au shader au travers d'une texture 1 dimension :
c3d_sLights (samplerBuffer).

Pour les récupérer, on passe donc par la structure "Light" et la fonction "GetLight( int index )".
La structure Light est décomposée comme suit :

  • m_v3Colour : vec3
    Contient la couleur de la source lumineuse
  • m_v3Intensity : vec3
    Contient les intensités (ambiante, diffuse et spéculaire) de la source lumineuse
  • m_v3Position : vec3
    Contient la position de la source lumineuse
  • m_iType : int
    Contient le type de la source lumineuse (0 : directionelle, 1 : ponctuelle, 2 : projecteur)
  • m_v3Attenuation : vec3
    Contient les 3 constantes d'atténuation (constante, linéaire et quadratique), pour les sources ponctuelles et projecteurs
  • m_v3Direction : vec3
    Contient la direction de la source lumineuse (pour les sources projecteurs)
  • m_fExponent : float
    Contient l'exposant de la source lumineuse (pour les sources projecteurs)
  • m_fCutOff : float
    Contient l'angle de champ de la source lumineuse (pour les sources projecteurs)

Contacter le responsable de la rubrique Projets