Passer au contenu

DirectX 10 : voici pourquoi vous allez changer votre carte graphique

Après nVidia, c’est au tour d’ATI d’annoncer une nouvelle génération de cartes DirectX 10. Explications et images d’une petite révolution graphique en cours.

DirectX 10 fait partie des nouvelles technologies embarquées dans Windows Vista. Il s’agit d’un composant logiciel intégré système d’exploitation, qui assure la compatibilité entre le matériel informatique (carte
graphique, carte son…) et de très nombreuses applications. Présent depuis Windows 95 dans sa version 1.0, DirectX intéresse en premier lieu les joueurs et les développeurs de jeux 3D.Chaque nouvelle version apporte son lot de nouveautés, qui se traduit dans les faits par des titres toujours plus beaux et toujours plus réalistes. DirectX 10 est considéré par Microsoft, ATI et par nVidia comme une avancée
technologique majeure. Au menu : plus de pixels shaders, vertex Shaders, geometry shaders. Vous avez dit ‘ shaders ‘ ?

B.A. BA de la 3D

Pour bien intégrer les bénéfices de DirectX 10 sur les précédentes générations, il est essentiel de comprendre dans les grandes lignes ce qu’est le rendu 3D. Pour schématiser, une scène en trois dimensions est un amas
de points reliés entre eux afin de former une structure géométrique. Ces points, les sommets des polygones, on les appelle ‘ vertices ‘
(‘ vertex ‘, en anglais). Une fois la
structure géométrique formée, des textures sont appliquées. Une texture peut être une couleur, un dessin, une photo, un motif… Peu importe. Enfin, des effets sont rajoutés.

Une scène 3D n’est jamais qu’un gigantesque amas de points reliés entre eux par des lignes (crédit : Démo technologique nVidia).

Des textures sont rajoutées, et ‘ par dessus ‘, des effets : les shaders. Ce visage, quelque part, ce sont eux (crédit : Démo technologique nVidia ).Petite comparaison : imaginez que vous reliez huit points équidistants dans l’espace par du fil de fer. Vous obtenez un cube. Posez sur chaque côté du cube un morceau de tissu de votre choix, c’est une texture. Prenez
un brumisateur et aspergez le tissu d’eau. Par endroits, l’étoffe change de teinte et s’assombrit. Ailleurs, elle peut devenir transparente. Sous le poids de l’eau, le tissu peut même se déformer. Les gouttelettes que
vous avez pulvérisées, ce sont les effets. Ces effets en 3D, portent un nom : des shaders. Elles peuvent presque tout faire.

Ici, très peu de textures, beaucoup de shaders (crédit : Démo technologique ATI).

Qu’est ce qu’un shader ?

Un Shader est un morceau de code écrit par un programmeur qui, une fois interprété par DirectX puis par le pilote de la carte graphique, affichera un effet. Les shaders existent dans le monde professionnel depuis près de trente ans.
Pixar fait partie des firmes qui ont considérablement ?”uvré pour le développement des shaders et leur utilisation dans l’animation 3D. Mais pour calculer des shaders en temps réel, il faut impérativement que nos cartes graphiques soient
équipées d’unités de calcul dédiées à leur traitement. Il est tout à fait possible de faire calculer des shaders à un processeur (CPU).Mais vu les performances obtenues, les développeurs de jeux vidéo n’ont jamais utilisé cette méthode. Il aura fallu attendre l’an 2000, date de sortie de DirectX 8, 2001, date de sortie des GeForce 3 et des
Radeon 8500, et 2002 pour que les jeux vidéo utilisent, pour la première fois, des shaders. Depuis, ils sont devenus le nerf de la guerre. Pour un développeur de jeux, bien maîtriser l’écriture des shaders c’est créer des jeux
toujours plus beaux. Avant l’arrivée de DirectX 9, on en comptait de deux types : vertex shaders et pixels shaders.

Image issue du jeu Call of Juarez, sous DirectX 10 (crédit Techland).

Les pixels shaders

Considérons les pixels shaders comme des effets appliqués à un groupement de pixels. Une vague, par exemple, peut être composée de quelques polygones en mouvement, sur lesquels le développeur a rajouté de très nombreux pixels shaders
représentant la mer. Ainsi l’écume, les vagues, la déformation, les différents degrés de transparence de l’eau… tout peut être calculé par des pixels shaders.Imaginez maintenant l’équivalent sans pixel shader. Le moteur 3D doit générer un nombre très élevé de vertices, créer une structure géométrique complexe, appliquer d’innombrables textures et calculer le mouvement pour
un résultat au final décevant : la mer n’a rien de géométrique. Un bon programmeur est capable de recréer n’importe quel effet visuel avec des shaders.

Les vertex shaders

Les vertex shaders agissent, comme leur nom l’indique, sur les vertices. Il s’agit de la possibilité pour la carte graphique de modifier leurs paramètres. Selon le programme, le vertice peut ainsi changer de couleur, de
texture, ou encore de positionnement dans l’espace. C’est une modification appliquée à une surface géométrique. Sous DirectX 9, les vertex shaders souffrent d’une limitation de taille. Chaque vertice créé ou supprimé est
calculé par le CPU. Le GPU (processeur graphique) ne peut ni en effacer, ni en créer. Entre le CPU et le GPU, l’échange d’informations est intense. Avec DirectX 10, les choses changent et les geometry shaders font leur apparition.Voici un excellent exemple des possibilités des shaders sous DirectX 9 et DirectX 10. Ces deux séries d’images montrent les possibilités minimales, moyennes et maximales de modification des shaders qui composent le
visage du personnage. C’est ainsi que l’on finit par les rendre expressifs.

Half Life 2 : Episode 1, sous DirectX 9 (crédit : Valve).

Team Fortress 2, sous DirectX 10 (crédit : Valve).

Les geometry shaders

Une primitive est une forme géométrique simple. Cela peut être un point, une ligne, un triangle… Ce que l’on appelle geometry shaders, c’est précisément la possibilité pour le processeur graphique de traiter ces
primitives, soit un groupe de vertices. Dans un premier temps, une forme géométrique est créée à l’initiative du CPU. Ensuite, le GPU modifie les primitives puis travaille directement sur la forme géométrique dans son ensemble, et non plus
point par point.Les unités de calcul de shaders peuvent dupliquer ces formes, en créér de nouvelles, ou en supprimer. Sous DirectX 9, comme sous toutes les versions précédentes, c’était impossible. Avec DirectX 10 et les geometry
shaders, Microsoft souhaite améliorer considérablement les performances des calculs géométriques et offrir aux développeurs la possibilité de créer des scènes 3D toujours plus complexes. A court terme, cela ne signifie pas forcément des jeux
plus beaux, mais plus rapides.

Une scène complexe, issue d’une démo technologique nVidia, qui utilise pixels shaders, vertex shaders, et geometry shaders. Le taux d’utilisation du CPU oscille entre 40 et 50 %. Il reste donc au CPU la
moitié de ses ressources pour effectuer toutes les autres tâches : gestion de l’intelligence artificielle, de la physique du son, etc.
Stéphane Quentin, responsable produits chez nVidia, le résume ainsi : ‘ Si l’on prend l’exemple d’un jeu de stratégie en temps réel, comme “Supreme Commander”, des centaines
d’unités sont affichées simultanément à l’écran. Le processeur calcule les informations de géométrie de chaque unité, puis les envoie au GPU. Lorsqu’un patch DirectX 10 sera disponible, le CPU ne sera plus chargé de ces
calculs géométriques. Le GPU s’en occupera directement ‘.
L’avantage c’est que le GPU est, grosso modo, dix fois plus rapide pour exécuter ce type d’opérations. Il en sera de même avec “Flight Simulator”. Typiquement, ce jeu nécessite peu d’effets de
pixels shaders, mais ses exigences en termes de géométrie sont énormes. Flight Simulator X sera, lui aussi, patché pour fonctionner en DirectX 10.

Qu’est ce qu’une architecture unifiée ?

Il s’agit pour le constructeur d’une carte graphique d’intégrer au sein du GPU des unités de calculs capables de traiter, de manière indifférenciée, tout type de shaders. Concrètement, une carte graphique
DirectX 9 comporte des unités de calcul dédiées aux pixels shaders, et d’autres aux vertex shaders. Le problème, c’est que cette ‘ séparation des pouvoirs ‘ peut se transformer en goulet
d’étranglement. En effet, si une scène 3D exige un important travail sur les pixels shaders, mais peu de vertex shaders, une unité de calcul travaille à plein régime pendant que l’autre se tourne les pouces. L’exemple
choisi par Lars Weinand, responsable technique chez AMD, est très parlant.‘ Imaginez une scène en 3D représentant un bateau sur la mer. La mer exige de nombreux calculs de pixels shaders, et le bateau, de nombreux calculs de vertex shaders. Les pixels shaders ne sont appliqués
qu’une fois que les vertex shaders sont calculés. Si les unités de calcul de vertex shaders sont pleines, et tournent à plein régime, que font les unités de pixels shaders pendant ce temps ? Elles attendent. L’avantage de
l’architecture unifiée, c’est que toutes les unités de calcul sont capables de traiter vertex, pixels, et geometry shaders. Toutes les unités travaillent à plein régime. Le rendement est bien supérieur ‘.
ATI avait déjà choisi d’utiliser une architecture unifiée lors de la conception du GPU qui équipe la Xbox 360. Aujourd’hui, ses cartes graphiques de la série Radeon HD 2000, conçues pour DirectX 10, reposent
toutes sur une architecture unifiée. Chez nVidia, il en est de même. Mais il ne faut pas en déduire que Microsoft a obligé les fabricants de GPU à modifier leurs produits. Il aurait été tout à fait possible pour ATI ou pour nVidia de créer des
cartes DirectX 10 dotées d’unités de calcul de shaders dédiées.

Adieu rétrocompatibilité !

DirectX 10 est certainement la mise à jour la plus importante depuis la version 8, qui date de 2000. Il promet plus de tout. Plus d’effets, plus de réalisme, plus d’objets affichés à l’image, plus de
physique décorative. Les shaders se déchaînent. Mais aujourd’hui, une carte graphique DirectX 9 sous Windows XP ne pourra, en aucun cas, faire tourner un jeu DirectX 10… La même carte graphique sous Windows Vista non
plus !Ainsi, dès que les premiers titres DirectX 10 seront disponibles dans le commerce, les joueurs impatients n’auront d’autre choix que d’investir dans un GPU compatible. ATI vient juste d’annoncer ses
nouveaux produits (cinq GPU pour PC de bureau, quatre pour portables), et nVidia commercialise, depuis quelques mois déjà, ses GeForce 8000, compatibles DirectX 10. De même, le fondeur s’apprête à livrer à ses partenaires les GPU
pour ordinateurs portables, GeForce 8M. Les tout premiers jeux DirectX 10 devraient sortir d’ici à l’été.

🔴 Pour ne manquer aucune actualité de 01net, suivez-nous sur Google Actualités et WhatsApp.


Thomas Diouf