• Aucun résultat trouvé

3.2 Description du rendu graphique

3.2.1 Partie sommets (Vertex)

Cette partie est la première ; elle a pour objectif la transformation des données qui lui ont été transférées (coordonnées, couleurs, etc.) en triangles. Ces triangles seront ensuite envoyés à la partie suivante.

Récupération des données (Primitive Processing)

Afin de minimiser la bande passante nécessaire aux échanges entre le processeur géné- raliste et le processeur graphique, les données peuvent être compressées par le processeur généraliste afin de diminuer la taille des données à tranférer. Les données peuvent être des sommets, des textures ou les paramètres de rendu. Après réception, il faut donc les décompresser pour qu’elles puissent être utilisées. Cet étage récupère ainsi les données qui ont été envoyées par le processeur et les décompresse afin qu’elles puissent ensuite être utilisées par les autres étages.

Calcul des différents repères ainsi que des transformations (Model and View Transform)

Chaque sommet est défini par ses coordonnées par rapport à un repère. Durant le rendu graphique, on va utiliser plusieurs repères parmi lesquels on peut citer :

— le repère qui permet de définir chaque primitive (son propre repère), — le repère global qui permet ensuite de placer la primitive dans la scène,

— le repère de la caméra qui permet de projeter la scène selon le point de vue de la caméra.

40 CHAPITRE 3. ETUDE D’UN PIPELINE GRAPHIQUE

Un des objectifs de cet étage est donc de calculer les coordonnées de chaque sommet selon les différents repères. La Figure 3.3 illustre le calcul des coordonnées des différentes primitives selon le repère de la caméra en partant du repère global.

Figure 3.3 – Exemple de calcul de la position des primitives de la scène dans le repère de la caméra.

Le changement de repère s’effectue en réalisant une multiplication du vecteur définissant les coordonnées de chaque sommet par une matrice de changement de repère.

L’utilisateur peut de plus appliquer à chaque primitive des transformations comme des rotations, des translations, des agrandissements, etc. Ces transformations peuvent se représenter sous la forme d’une matrice qui est multipliée avec le vecteur contenant les coordonnées du sommet courant. Par exemple, une rotation peut être définie par la matrice qui suit : Rx( ) = 0 B B @ 1 0 0 0 0 cos sin 0 0 sin cos 0 0 0 0 1 1 C C A (3.1)

La matrice 3.1 est un exemple de matrice définissant une rotation d’un angle . Cette matrice est multipliée par le vecteur définissant les coordonnées du sommet afin de lui appliquer la rotation. Plusieurs transformations peuvent être concaténées dans une seule matrice afin de les appliquer au sommet. La matrice est de rang quatre car la notation cou- ramment utilisée dans le rendu graphique, appelée notation homogène, utilise des vecteurs de dimension quatre pour stocker à la fois des points et des vecteurs ; le dernier élément du vecteur servant à différencier les deux.

Calcul de la couleur de chaque sommet (Vertex Shading)

La couleur de chaque pixel est calculée à partir de plusieurs composantes : la couleur initiale du sommet, les paramètres du matériau constituant la primitive définie par le sommet, ainsi que la couleur de chaque source de lumière présente dans la scène.

Une source de lumière peut être définie comme un spot qui émet dans une certaine direction délimitée par un cône dont l’angle d’ouverture est paramétrable et selon une certaine couleur. Plusieurs méthodes permettent de calculer l’impact des différentes sources de lumière. Les plus connues sont les méthodes de Phong [62] et de Gouraud [63]. Elles ont des complexités calculatoires différentes qui influencent la qualité de la scène rendue. La méthode de Gouraud consiste à calculer l’impact des lumières sur chaque sommet, puis ces valeurs sont interpolées entre les sommets de la primitive par la partie fragments. En revanche, la méthode de Phong détermine l’impact de la lumière sur chaque fragment.

3.2. DESCRIPTION DU RENDU GRAPHIQUE 41

Cette démarche est donc beaucoup plus calculatoire, mais aussi plus réaliste. En pratique, la méthode Phong est la plus utilisée car elle permet un rendu plus réaliste et les performances des processeurs graphiques embarqués récents la permettent.

Le calcul de l’impact de la lumière sur chaque pixel soumis à des sources lumineuses s’effectue suivant l’équation suivante (méthode Phong) :

Ip = kaIa+

X

m2Lights

(kd(bLm· bN )im,d+ ks( bRm· bV )↵im,s) (3.2)

avec :

— ia, is, id: intensités des composantes ambiantes, spéculaires et de diffusion

— im : intensité de la source de lumière

— ks : intensité de la réflexion de la composante spéculaire

— kd : intensité de la réflexion de la composante de diffusion

— ka : intensité de la réflexion de la composante constante

— ↵ : intensité de la réflexion globale de la matière

— bLm : vecteur définissant la direction de la surface vers chaque lumière (Figure 3.4)

— bN : normale à la surface

— bRm : direction vers laquelle la lumière est réfléchie

— bV : direction vers la caméra

— m : définit chaque source de lumière

Ces différents paramètres sont en partie définis selon le matériau que l’on souhaite rendre (métal, bois, etc.), ceci impactera en particulier les intensités des composantes am- biantes, spéculaires et de diffusion ainsi que les intensités des réflexions. D’un point de vue géométrique, la normale de la surface est elle aussi prédéfinie, par contre les autres vecteurs sont dépendants de la scène et de la position de l’objet ainsi que des lumières dans la scène ; ils sont donc calculés en ligne.

Figure 3.4 – Illustration des différents vecteurs.

Documents relatifs