Si l’utilisation de filtres sur les textures permet d’affiner nettement le rendu des surfaces, il n’a pas d’impact sur le rendu des arrêtes des objets, qui peut toujours être soumis à des effets de pixelisation : lorsqu’une ligne droite doit être affichée autrement que verticalement ou horizontalement, il y a forcément des sauts de pixels qui « cassent » la ligne.
Pour réduire ces sauts, il faut utiliser une technique d’anti-aliasing, qui va lisser les lignes sur plusieurs pixels. Il existe plusieurs familles d’anti-aliasing, dont l’impact sur le rendu et les performances est plus ou moins important.
S comme Super-sampling (SSAA, FSAA)
Le super-sampling est une solution techniquement très simple pour réduire l’aliasing : l’image est rendue en multipliant la définition horizontale et verticale par un facteur n (généralement 2x ou 4x) puis l’image calculée est réduite à la définition voulue en calculant la couleur de chaque pixel final à partir de celle des n² pixels de l’image rendue qu’il recouvre. Si cette méthode donne d’excellents résultats sur l’ensemble de l’image, elle souffre bien entendu d’un défaut évident : effectuer le rendu avec une définition beaucoup plus élevée réduit fortement les performances.
M comme Multi-sampling (MSAA)
Le multi-sampling s’appuie pour sa part sur le fait que l’aliasing affecte surtout le bord des objets. En rendu de base, le GPU applique à chaque pixel la couleur de l’objet qui se situe sous le centre du pixel. Avec le multi-sampling, ce n’est plus le centre du pixel qui est pris comme référence, mais 2, 4, 8 ou 16 points disposés sur le pixel. Si ces points tombent sur des objets différents, la couleur du pixel sera calculée en faisant une moyenne pondérée des couleurs issues des différents objets.
Cette solution est beaucoup plus rapide que le super-sampling, mais ne traite que l’aliasing sur les bords des objets, pas celui qui peut éventuellement affecter une texture.
F comme Fast approximate (FXAA)
Le FXAA est une technique d’anti-aliasing visant des performances élevées. Pour ce faire, elle travaille sur l’image après son rendu en y effectuant une détection des bordures pour appliquer l’anti-aliasing de façon très ciblée, uniquement là où il est nécessaire.
P comme Propriétaires
L’anti-aliasing est un des terrains de bataille sur lesquels AMD et NVIDIA s’affrontent le plus, et chacun des deux a développé ses propres variantes d’anti-aliasing, avec généralement toujours le même objectif : maximiser le rapport gain de qualité du rendu / perte de performances.
Les deux fabricants ont par exemple développé une variante du MSAA qui doublent le nombre de points de référence, ce qui permet d’affiner la pondération des différentes couleurs prises en compte. Ces points supplémentaires, dits de « couverture » servent uniquement à déterminer quel polygone est présent en ce point, sans vérifier la couleur, qui reste issue des points « de base » du MSAA. Cet anti-aliasing a été baptisé CSAA (Coverage Sampling) chez NVIDIA et EQAA (Enhanced Quality) chez AMD.
Auparavant, AMD avait déjà introduit une autre variante du MSAA, le CFAA (Custom Filter), qui consiste à prendre les points de référence pour un pixel au sein d’un cercle contenant le pixel plutôt que de se limiter au carré couvert par le pixel.
Plus récemment, on peut citer le MFAA (Multi-Frame) d’NVIDIA (introduit sur ses GPU Maxwell, soit la génération actuelle), qui est un anti-aliasing qui permet de doubler le facteur quasiment sans surcoût de performances par rapport au MSAA. Le MFAA 2x offre ainsi un rendu très proche de celui du MSAA 4x, pour un coût en ressources matérielles en net retrait. L’idée est ici de ne prendre pour chaque image que la moitié des points de référence MSAA de chaque pixel, en alternant les points utilisés d’une image l’autre. Les couleurs obtenues aux points de référence de l’image n sont alors combinées avec celles obtenues au point de référence de l’image n-1, ce qui donne l’équivalent d’un MSAA 2nx tout en ne calculant que n points de référence par pixel et par image au lieu de 2n.
L'anti-aliasing est un effet toujours délicat à doser : son abscence engendre ainsi une dégradation notable de la qualité de l'image, tandis que son application à un fort niveau pourra donner du fil à retordre aux GPU les plus puissants . Retenez toutefois ceci : les algorithmes FXAA, MLAA et SMAA, qui fonctionnent donc comme des filtres à appliquer sur chaque image finale produite, resteront les moins couteux en ressources. Ils ne seront toutefois pas parfaits, et par exemple, le FXAA induira souvent un effet de flou désagréable sur l'image. Derrière, les anti-aliasing de type MSAA trouveront généralement les meilleurs compromis dans les facteurs 2X ou 4X (oubliez le 8X). Enfin, si vous avez la chance de pouvoir disposer d'un affichage 4K, sachez que la définition d'image sera telle, qu'elle vous autorisera à vous passer de ce type de traitement.