Projet

Général

Profil

Variables passées aux shaders

Documentation utilisateur
21/12/2010

GLSL

Vertex Shader

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

  • vertex : 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_ids : ivec4
    Contient les indices des os affectant le sommet (jusqu'à 4)
  • weights : vec4
    Contient les poids des os sur le sommet (la somme des 4 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_mtxModelView : mat4
    Contient la matrice vue-modèle
  • c3d_mtxProjectionView : mat4
    Contient la matrice vue-projection
  • c3d_mtxProjectionModelView : mat4
    Contient la matrice vue-modèle-projection
  • 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 100
    Contient jusqu'à 100 matrices de transformation, une par os du squelette d'animation.

Les constantes de scène

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

  • c3d_iLightsCount : int
    Contient le compte des lumières composant la scène
  • 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 (sampler1D).

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_v4Ambient : vec4
    Contient la couleur diffuse de la source lumineuse
  • m_v4Diffuse : vec4
    Contient la couleur ambiante de la source lumineuse
  • m_v4Specular : vec4
    Contient la couleur spéculaire de la source lumineuse
  • m_v4Position : vec4
    Contient la position de la source lumineuse
  • m_iType : int
    Contient le type de la source lumineuse (0 : directional, 1 : point, 2 : spot)
  • m_v4Attenuation : vec3
    Contient les 4 constantes d'atténuation (constante, linéaire et quadratique) de 8 lumières (max), utile pour les point lights et spot lights
  • m_mtx4Orientation : mat4
    Contient l'orientation de la source lumineuse, utile pour les spot lights
  • m_fExponent : float
    Contient l'exposant de la source lumineuse, utile pour les spot lights
  • m_fCutOff : float
    Contient l'angle de champ de la source lumineuse, utile pour les spot lights

HLSL

Variables paramètres du main

  • vertex : float4 : POSITION0
    Contient les coordonnées du vertex
  • normal : float3 : NORMAL0
    Contient les coordonnées de la normale au vertex
  • tangent : float3 : TANGENT
    Contient les coordonnées de la tangent au vertex (pour la constitution de l'espace tangent)
  • texture : float2 : TEXCOORD0
    Contient les coordonnées de texture du vertex

Autres variables

  • ProjectionModelViewMatrix : float4x4
    Contient la matrice modèle-projection
  • ModelViewMatrix : float4x4
    Contient la matrice modèle
  • NormalMatrix : float3x3
    Contient la matrice normale
  • in_AmbientLight : float4
    Contient la couleur de la lumière ambiante
  • in_MatAmbient : float4
    Contient la valeur de la couleur ambiante de la passe courante
  • in_MatDiffuse : float4
    Contient la valeur de la couleur diffuse de la passe courante
  • in_MatEmissive : float4
    Contient la valeur de la couleur emissive de la passe courante
  • in_MatSpecular : float4
    Contient la valeur de la couleur spéculaire de la passe courante
  • in_MatShininess : float
    Contient la valeur de l'exposant de la passe courante
  • in_LightsPosition : Tableau de 8 float4
    Contient les positions de 8 lumières (max)
  • in_LightsDiffuse : Tableau de 8 float4
    Contient les couleurs ambiantes de 8 lumières (max)
  • in_LightsAmbient : Tableau de 8 float4
    Contient les couleurs diffuses de 8 lumières (max)
  • in_LightsSpecular : Tableau de 8 float4
    Contient les couleurs spéculaires de 8 lumières (max)
  • in_LightsAttenuation : Tableau de 8 float3
    Contient les attenuations (constante, linéaire et quadratique) de 8 lumières (max), utile pour les point lights et spot lights
  • in_LightsExponent : Tableau de 8 float
    Contient l'exposant de 8 lumières (max), utile pour les spot lights
  • in_LightsCutOff : Tableau de 8 float
    Contient l'angle de champ de 8 lumières (max), utile pour les spot lights

Fichiers