Nous commencerons donc par:
L'antialising.
L'antialising qu'est ce que c'est:
C'est une technique qui essaye de palier a un des défauts inhérants a la tachnologie d'affichage des images sur ordinateur.
un image est composé d'un certain nombre de points carrés ou rectangulaires plus ou moins petits comportant chacun une couleur généralement comprise entre 16777216 (16 Millions environ) de nuances (256*256*256) donne la valeur exacte du nombre de couleurs théoriquement affichables sur un écran.
Le problème des images en 3 Dimensions c'est qu'elles sont composées de polygones (triangles la plupart du temps) comportant divers attributs (couleur, texture appliquée dessus, eventuellement un certain niveau de transparence (blending) etc..
les bords de ces polygones ont des bords qui sont nets. (donc chaque polygones est entouré d'une serie de lignes droites.
or comme par nature un écran ne comporte que des points rangésselon une grille verticale et horizontale. toute suite depoint qui n'est pas strictement verticale ou horizontale est amenée a etre composée de serie de petits morceaus de lignes droites.
vu de loin ca ressemble effectivment a des lignes en diagonale mais vu de près et surtout si les ignes ont des couleurs très différenciées de la couleur du fond. on voit très nettement que ces lignes ne sont pas "continues".
il a donc été imaginé une méthode pour palier a ce défaut.
Cette méthode s'appele L''antialiasing (abréviation AA)
(Le fait qu'il apparaisse ces "marches d'escalier" s'appelle l'ALIASING, le fait de corriger ce défaut s'appelle donc logiquement l'ANTIALIASING).
sur les sites de tests vous le trouverez donc systématiquement sous la dénomination AA. ce qui est tout de même bien plus court

Les méthodes d'antialising;
Il y a de nombreuses métohdes pour faire de l'antialiasing.
chacune a ses avantages et ses inconvenients.
les avantages sont en général liés a l'amelioration de l'aspect graphique obtenu par l'application de ce filtrage, les inconvenients sont en general liés a la perte de fluidité de l'affichage due au "coût" de l'application du filtrage.
en clair, généralement, plus le filtrage est bon donc l'apsect de l'image amélioré, et plus les performances chutent. il faut donc trouver un compromis entre aspect et nombre d'images par seconde. de façon a ce que le jeu reste jouable.
Voici par exemple un bout de ligne aliasée a gauche et antialiasée a droite

Vous voyez le principe, ils'agit d'intercaler des points (pixels) de couleur intermédiaire entre la couleur de la ligne et celle du fond.
vu de pres c'est pas top, mais vu de loin quand les points sont petits, les lignes sont tout de suite bcp plus belles.
Voici un exemple d'un bout d'image aliasé et antialisé.
a gauche pas d'antialiasing a droite image antialisée correctement, au milieu l'antialising est trop violent et mal fait ce qui rend l'image complètement floue.

Il existe pleins de méthodes pour antialiaser une image, les 2 méthodes principales sont:
1°) Le supersampling (on calcule l'image a afficher dans une taille supérieure a la taille de l'image finale a afficher et on la réduit de taille avant de l'afficher. de cette manière tous les points qui ont étés calculés en trop sont pour ainsi dire mélangés entre eux, et l'image finale a un meilleur aspect que si on avait directement calculé limage dans sa taille finale.

le problème de cette méthode est son coût.
grosso odo si vous voulez afficher une image finale en 1280*1024 pixels, votre image de départ doit etre calculée en 2560*2048pixels (2 fois plus large et 2 fois plus haute).
donc vous imaginez aisément ce que ca coute (place mémoire 4 fois plus importante pour stocker l'image (2*2=4

2°) Le multisampling de plus en plus utilisé, il consiste a partir d'un point de l'image (on va en prendre un au hasard) et a regarder la couleur des points qui l'entourent, et a calculer par différentes méthodes la couleur intermediaire qu'on va lui donner ce qui alterera sa couleur d'origine.
plus la zone entourant le point choisi est grande et meilleur sera l'approximation de la moyenne obtenue, mais plus l'image deviendra floue.
De plus plus on augmente la taille de la zone ou sont pris les pixels pour calculer la moyenne et plus il a de points a traiter donc plus les performances chutent.
il faut donc trouver un compromis entre l'aspect lissé, l'aspect flou et le niveau de performances perdu.
a force de faire des essais, les constructeurs ATI et NVIDIA se sont apercus qu'il est préférable de ne prendre en compte que certains point placés a certains endroits autour du pixel choisi, pour obtenir les meilleurs résultats.
un petite exmple de multisampling utilisant 4 points pour calculer la moyenne:

COMPLEMENT SUR L'ANTIALIASING
LE SUPERSAMPLING
Pour faciliter les choses nous allons considerer que notre image complète mesure 8x8 pixels (au lieu de 1024*768 ou 1280*1024 etc.. pixels.
Voici donc notre image de test:
Les 2 lignes qui se croisent ne sont pas antialiasées.
Dans le cas d'un antialiasing de type supersampling x2 au lieu que l'image calculée par la carte soit celle ci dessus, on va doubler (x2) ses dimensions donc on va calculer une image de 16x16 pixels) ce qui donne ceci:
C'est exactement la meme mais le tracé est plus précis. il y a plus de définition dans les détails puisque l'image est 2 fois plus grande.
et on va regrouper les pixels par 4 et calculer la couleur moyenne qui en résulte:
si on dit que blanc=0 et que rouge=5, et bien un "carreau" de 4 pixels contenant 1 pixel rouge et 3 pixels blanc vaudra: 5+0+0+0=5 puis on divise par le nombre de pixels traités (4 en l'occurence dans un carreau) et on obtiens comme couleur finale 1.25 donc un blanc a peine rosé, ce qui correspondra a la couleur finale du "carreau" des 4 pixels, c'est comme si on remplacait ces 4 carreaux de couleur différente, par une seule couleur pour le "carreau" entier, mais qui prenne en compte grace a la moyenne effectuée la couleur originalle des 4 pixels.
Si on avait un careau contenant 3 pixels rouge et 1 seul blanc, la valeur serait 5+5+0+5=15/4=3.75. la couleur finale du carreau serait donc un rouge presque pur.
en procedant ainsi pour chaque "carreau" (groupe de pixels) on va creer une nouvelle image qui sera moins bien définie (puisqu'il y aura 4x fois de pixels, mais qui quelque part contiendra tout de meme des informations de l'image d'origine, puisque les calculs de moyenne en auront tenu compte.
ce qui une fois l'image mise a la bonne echelle donnera a peu pres ceci:
Les couleurs de tous les pixels ont changé parce qu'elles correspondent aux moyennes de l'image originelle.
ce mode d'antialiasing est donc très simple a mettre en oeuvre (il suffit de calculer une image de départ plus grande que l'image d'origine, et de faire des additions puis des divisions pour chaque "carreau"
mais il est couteux en mémoire car il faut prendre dans la mémoire de la carte graphique une zone mémoire 4 fois plus grande que pour une image non antialiasée, et elle est couteuse en calculs, car le calcul d'une image 4 fosi plus grande est forcément plus long a fiare que celui d'une image plus petite (il n'y a qu'a lancer un jeu en 800*600 et en 1600*1200 pour s'en rendre compte. le nombre d'image/seconde affichée n'a rien a voir.
Ce mode d'antialiasing est donc peu utilisé, meme s'il donne de très bons résultats quand a sa qualité de rendu.
LE MULTISAMPLING
Nous allons cette fois ci pour le multisampling partir de l'image de départ dans sa résolution "normale" de 8x8 pixels (le multisampling a l'avantage de ne pas être couteux en mémoire et en puissance de rendu, car l'image est directement traitée a sa résolution finale.
Nous allons faire un peu comme pour le supersampling en attribuant une valeur a chaque pixel, arbitrairement j'attribue toujours 5 au rouge et 0 au blanc. en rélité on prend les valeur RVB de chaque pixels et on fait les moyennes pour chaque composantes, je n'ai cherché ici qu'a illustrer le principe des moyennes, afin de simplifier la compréhension.
voici donc l'image avec ses valeurs:
Et on va traiter les pixels un a un en prenant en compte les pixels adjacents, pour faciliter la compréhension, j'ai dessiné un carreau vert qui comprend toute la zone traitée pour un pixel, le pixel qu'on traite est donc le pixel central du carreau vert.
et on va donner des pourcentages a chaque pixel compris dans la zone verte.
le pixel central vu que c'est lui qu'on traite aura un pourcentage élevé, et plus les pixels adjacents sont éloignés et moins on leur attribue de pourcentage.
on va procéder a un calcul de moyenne comme pour le supersampling, mais cette fois ci au lieu que les valeurs prises en compte soient prises dans une image plus grande, on va prendre ces valeurs dnas les pixels adjacents.
le calcul de moyenne est plus complexe, car il y a plus de pixels a traiter et surtout il y a les pourcentages a prendre en compte. on appele cela une moyenne pondérée.. elle est pondérée parce que les pourcentage de chaque pixel depend de sa position.
on pourrait aussi faire une moyenne sans pondération, mais les pixels éloignés auraient autant d'influence que les pixels proches, et le résultat serait une image très lisse, mais très floue. le fait de ponderer, améliore la netteté, car le pixel traité au centre a plus d'influence sur le rendu final que les pixels éloignés.
L'image finale antialisée sera très proche de l'image antialiasée par supersampling. mais on aura économisé bcp de mémoire et bcp de temps de rendu puisque l'image a déja la bonne taille. l'antialiasng de type multisampling offre donc un niveau de performance supérieur au supersampling, mais il a le défaut de flouter un peu l'image.
Enfin pour gagner encore en performances on procède maintenant a du multisampling avec grille.
le multisampling avec grille c'est tout simplement du multisampling tel qu'expliqué ci dessus, mais dans lequel, au lieu de prendre en compte tous les pixels adjacents au pixel traité, on ne prend compte que de certains pixels adjacents.
la position des pixels choisis est donc super importante et déterminera la qualité du résultat.
naturellement puisque moins de calculs seront éffectués, les performances seront meilleures, mais naturellement aussi puisuqe moins d'nformations seront prises en compte pour le calcul, le résultat visuel sera moins bon qu'avec un vrai multisampling comlet tel qu'expliqué ci dessus.
voici une image décrivant un multisampling avec grille, dans lequel les pixels adjacents retenus dans le calcul sont situés dans les angles.
J'espère qu'avec ce complément, les coses snt plus claires dans les esprits.
Il y a aussi depuis peu de temps une amélioration de l'antialising qui a été faite qui s'appelle TSAA chez nvidia (mais il existe un equivalent chez ATI) et qui permet de traiter le cas particulier des textures transparentes (comme les feuille des arbres, les grillages des clotures, etc..)
le probleme de ces types d'objets comportants des textures transparentes c'est que lors d'un antialising "classique" donc supersampling ou multisampling, c'est l'image entière qui est traitée sans tenir compte de ce qui est affiché, or a l'interieur d'une texture de grillage par exemple, parfois la qualité de filtrage n'est pas bonne et donc une image peut etre tres jolie et bien antialiasée partout, sauf a l'interieur des textures transparentes. il faudra que je vous trouve des exemple.
et bien le TSAA, permet de filtrer non pas l'image finale affichée, mais elle filtre la texture transparente elle meme avant que celle ci ne soit affichée, ca rajoute bcp de calculs et donc le TSAA est très gourmand. j'essairais de faire un 2eme complement a l'article pour illustrer par quelques images le TSAA et ses différences de rendu.
enfin sachez actuellement que le TSAA est très gourmand et qu'il prend en compte l'interieur des textures transparentes de type, feuillage, grillages, etc..
Enfin pour clôturer ce 1er article, voici un petit fichier qui permet de voir vite fait le résultat qu'on est en droit d'esperer suivant la méthode d'antialising choisie, vous n'avez qu'a choisir une méthode d'antialiasing et a gauche et puis adroite cliquer sur les cases 2x 4x 8x, 4XQ etc.. pour voir sur les images les differences de rendu.
http://www.nhancer.com/help/AASamplesLow.htm
Attention suivant les modèles de cartes graphiques et les versions des drivers utilisés, certains modes d'antialiasing peuvent ne pas être gérés.
je crois que c'est notamment le cas des modes de supersampling sur les geforce 8800.
donc en choisissant un mode qui n'est pas géré par vos drivers ou votre carte graphique, et bien c'est simple, rien ne se produira, l'image ne sera pas antialiasée.
Enfin sachez que suivant les modèles de cartes, la chute de performances dûe a l'activation de l'anntialising peut etre très variable. cela peut aller de -5% sur certains modèles très haut de gamme et si on choisi un ode d'antialiasing peu gourmand a parfois -75 ou -80% sur certaines cartes ou certains modes d'antialiasing. (donc la beauté a un cout. c'est certains.
Juste pour info, une 8800GTS avec un antialisng 4x en multisampling perd généralement environ 20% de performances. (cela depend aussi des jeux, certains perdent moins, d'autres plus).
Lors du prochain article je vous parlerais de l'anisotropique filtering (filtre anisotropique).
Si vous avez des questions ou envie d'en savoir plus sur l'antialiasing n'hesitez pas a poser vos questions. je suis là pour y répondre.
Shane