Quoi que vous fassiez sur votre micro (Internet, travail, jeux, photos…), il se passe toujours quelque chose à l’écran. Et quand il se passe quelque chose à l’écran, c’est que la puce graphique travaille. Des données lui arrivent sans cesse pour être traitées. La puce doit d’abord découvrir la nature de ces infos : s’il s’agit de données vidéo (provenant de la lecture d’un DVD-Vidéo par exemple) elle les envoie directement vers un module de traitement dédié à cet usage. Même chose s’il s’agit de données 2D (pour afficher un tableau Excel, par exemple). Mais si ces données sont des informations en 3D, comme celles d’un jeu vidéo, les choses se compliquent singulièrement. Ces données s’appellent des vertices. Ce sont les éléments de base servant à la construction d’objets en 3D (un point, une ligne, un triangle, etc.). Elles sont envoyées dans un premier centre de calcul : les Vertex pipelines. Ils servent à créer les formes géométriques virtuelles qu’utilisera le chip 3D. Il y a plusieurs pipelines en parallèle (jusqu’à 8). Plus il y en a, et plus l’objet sera fabriqué rapidement.
A noter : L’ensemble des étapes décrites ci-après s’effectuent très rapidement, de 1/15e à 1/60e de seconde ! On vous le dit, la puce graphique doit ‘ pédaler ‘ vite !
1. Traitement des vertices
La première étape consiste à décoder les vertices qui arrivent. Un vertex (le singulier de vertices) contient une partie des plans d’assemblage des objets en 3D. Notez qu’un vertex tout seul ne sert pas à grand-chose : il faut tous les prendre en compte.
2. Création des primitives
Avec toutes les instructions provenant des vertices, il est possible de construire des formes primaires : points, lignes, triangles ou parfois polygones complexes. C’est ce qu’on appelle des primitives : le matériau de construction de base, les briques d’une maison en somme. C’est en assemblant toutes ces primitives que l’on peut former des objets en 3 dimensions, même les plus compliqués ! A la fin de l’étape, la puce graphique a créé des objets en 3D, mais sans texture, une armature de tente sur laquelle on n’aurait pas encore posé la toile. Ce sont des objets en ‘ fil de fer ‘.
3. Clipping-Culling
Devant la complexité des scènes de jeux, le processeur 3D a recours à quelques astuces pour accélérer les calculs. Supposons que l’objet à matérialiser soit une table : si vous la regardez du dessus, vous ne pouvez pas voir ses pieds. Dans ce cas, pourquoi les conserver ? C’est le principe du culling : définir ce qui n’est pas visible en fonction de la position de l’objet, et l’éliminer des calculs à venir. Autre astuce : vous regardez une forêt. Vous voyez les arbres proches de vous, mais pas ceux trop éloignés. C’est le principe du clipping, tout ce qui est ‘ trop loin ‘ ou ‘ trop petit ‘ sera éliminé des calculs à venir.
4. Mapping
Maintenant que les objets visibles sont construits, il faut les habiller. Le chip 3D leur applique des textures : des couleurs ou des motifs. C’est le travail de la deuxième grande famille de modules 3D, les Pixel pipelines. Le Pixel pipeline lit une sorte d’étiquette attachée à l’objet qui entre. Elle contient les informations d’habillage : quelle texture doit être appliquée (apparence du bois, motif d’un tissu, couleur d’une carrosserie, mur de brique, peau, ou tout simplement une couleur, etc.). C’est le mapping. Mais le mapping est bien plus complexe qu’une simple séance de décalcomanie sur une forme. En effet, chaque objet peut avoir une propriété de matière. S’il a l’aspect du verre, du bois ou de la pierre, il aura une surface spécifique : lisse, rugueuse, brillante, mate, transparente, etc. Ainsi, quand on applique une couleur ou un motif à un objet, le résultat tient aussi compte des propriétés de l’objet.
5. Lumières et ombres
Une fois les objets habillés ou colorés, il faut les éclairer pour les voir. De la même manière que le logiciel envoie des informations sur les objets en 3D, il envoie des informations sur la lumière : position, intensité, direction, couleur, etc.
La puce 3D utilise ces informations pour modifier l’apparence de l’objet créé. Si la lumière est blanche, vous verrez la couleur normale des objets. Si la lumière est colorée, la couleur finale de l’objet sera le mélange de sa couleur initiale et de la couleur de la lumière. De la même façon, les zones dans l’ombre sont noircies.
6. Améliorations visuelles
Cette étape consiste à améliorer l’apparence des objets. Certaines de ces optimisations sont optionnelles, car généralement très consommatrices en puissance de calcul. Les deux grands classiques sont les filtres antialiasing et anisotropique. Le premier sert à lisser les formes (pour éviter l’effet ‘ d’escalier ‘) et la transition entre les couleurs. Le deuxième sert à améliorer le rendu des textures éloignées. Le but de ces filtres est l’obtention d’un rendu plus réaliste.
7. Z Buffer
Les particularités de tous les objets sont maintenant définies. Mais dans un jeu en 3D, tous les éléments ne sont pas statiques, il y en a beaucoup qui bougent (les personnages, les véhicules…). Il se peut donc qu’un objet passe devant un autre : certains points sont alors masqués à des moments donnés. Le travail du Z Buffer est de connaître la position dans l’espace de chaque pixel (un point de l’image) à chaque instant : seuls ceux qui sont devant seront affichés à l’écran.
8. Viewport
Tout est prêt, il ne reste plus qu’à afficher tous ces éléments en 3D à l’écran… qui est en 2D. Le Viewport va s’occuper de ce dernier travail. Il intervient en fait dans tous les types d’affichages, qu’ils soient 2D ou 3D. Ainsi, cest lui qui affiche aussi le bureau de Windows et ses fenêtres, ou encore les vidéos.