Améliorer le rendu avec le High Level Shader Language
CHAPITRE 13
307
• La première manière consiste à utiliser le mot-clé floatLxC, où L est le nombre de
lignes et C, le nombre de colonnes. La ligne de code suivante sert donc à déclarer une
matrice de 4 colonnes par 4 lignes.
float4x4 myMatrix;
• La seconde repose sur le mot-clé matrix auquel vous ajoutez le type des données et les
dimensions de la matrice :
matrix myMatrix;
Accéder au contenu de la matrice
Voici les deux manières d’accéder au contenu de la matrice :
• La première consiste à considérer la matrice comme un tableau de tableaux :
float element = myMatrix[0][0];
• La deuxième repose sur l’utilisation de la notation pointée « . », comme vous le faites
en C# pour accéder aux membres d’une structure ou d’une classe :
float element = myMatrix._m23;
À la différence du C#, il n’existe pas de types Vector2, Vector3, etc. Vous utiliserez donc les
types vector ou floatX, où X est le nombre de composantes utilisées. Ainsi, vous stockerez
la position d’un vertex dans une variable de type vector ou float3.
Accéder aux composantes d’un vecteur
L’accès aux différentes composantes d’un vecteur se fait de deux manières :
• La première consiste à utiliser les crochets [], comme vous le feriez pour un tableau en
C#.
float value = myVector[0];
• La deuxième consiste à utiliser la notation pointée « . ». Les composantes peuvent
être identifiées par deux noms différents. La première série de noms est rgba et la
seconde, xyzw.
Par exemple, si vous avez un vecteur color, vous pouvez accéder à son niveau de
vert des deux manières suivantes :
float green = color.g;
float green = color.y;
Le swizzling sert à accéder à plusieurs composantes d’un vecteur en même temps. Dans
les deux exemples suivants (qui utilisent les deux méthodes d’accès aux composantes),
vous accédez aux composantes rouge et verte d’une couleur :
float2 redGreen = { color[0],color[1]};
float2 redGreen = color.rg;
=Labat FM.book Page 307 Vendredi, 19. juin 2009 4:01 16
Précédent

- 328/366

Suivant