« Les cartes graphiques/Les Render Output Target » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 72 :
[[File:Supersampling.png|centre|Supersampling]]
 
Pour réduire la consommation de mémoire induite par le SSAA, il est possible d'améliorer celui-ci pour faire en sorte qu'il ne filtre pas toute l'image, mais seulement les bords des objets, seuls endroit où l'effet d'escalier se fait sentir. AprèsOn toutparle alors de '''Multi-Sampling Anti-Aliasing, lesabrévié bordsen desMSAA'''. objetsAvec sontle censésMSAA, êtrel'image à afficher est rendue dans une résolution supérieure, mais les seulsfragments endroitssont regroupés l'effeten d'escaliercarrés sequi faitcorrespondent sentirà un pixel. Avec le SSAA, alorschaque pourquoisous-pixel filtrerse verrait appliquer un morceau de texture. Avec le resteMSAA, ?les Cettetextures optimisationne s'appliquent pas aux sous-pixels, mais à un bloc complet. La couleur finale dépend de la position du sous-pixel : est-il dans le triangle qui lui a donné naissance au l'''Multi-Samplingétape Antide rasterization), ou en dehors ? Si le sous-Aliasingpixel est complétement dans le triangle, abréviésa couleur sera celle de la texture. Si le sous-pixel est en-dehors MSAA'''du triangle, sa couleur est mise à zéro. Pour obtenir la couleur finale du pixel à afficher, le ROP va faire la moyenne des couleurs des sous-pixels du bloc.
 
Niveau avantages, le MSAA n'utilise qu'un seul filtrage de texture par pixel, alorset que le SSAA effectue un filtragenon par sous-pixel. Niveaucomme désavantage,avec ille faut remarquerSSAA. queMais le MSAA ne filtre pas l'intérieur des textures, ce qui pose problème avec les textures transparentes. Pour résoudre ce problème, les fabricants de cartes graphiques ont crées diverses techniques pour appliquer l'anti-aliasing à l'intérieur des textures alpha.
Avec le MSAA, l'image à afficher est rendue dans une résolution supérieure, qui contiennent 4, 9, 16, 25 fois plus de fragments. Ces fragments sont regroupés en blocs de 4, 9, 16, etc : chaque bloc correspond à un pixel à afficher. Nous allons appeler les fragments d'un même bloc des sous-pixels. Contrairement au SSAA, les textures ne s'appliquent pas aux sous-pixels, mais à un bloc complet : tous les sous-pixels d'un bloc ont la même couleur. Avec le SSAA, chaque sous-pixel se verrait appliquer un morceau de texture indépendamment des autres, ce qui peut leur donner des couleurs différentes.
 
Le MSAA va jouer sur l'enregistrement de cette couleur dans le tampon de couleur. La couleur finale dépend de la position du sous-pixel : est-il dans le triangle qui lui a donné naissance (à l'étape de rasterization), ou en dehors du triangle ? Si le sous-pixel est complétement dans le triangle, sa couleur sera inchangée. Si le sous-pixel est en-dehors du triangle, sa couleur est mise à zéro. Pour obtenir la couleur finale du pixel à afficher, le ROP va m"élanger les couleurs des sous-pixels du bloc (série d'interpolation linéaire, comme dit plus haut).
 
Niveau avantages, le MSAA n'utilise qu'un seul filtrage de texture par pixel, alors que le SSAA effectue un filtrage par sous-pixel. Niveau désavantage, il faut remarquer que le MSAA ne filtre pas l'intérieur des textures, ce qui pose problème avec les textures transparentes. Pour résoudre ce problème, les fabricants de cartes graphiques ont crées diverses techniques pour appliquer l'anti-aliasing à l'intérieur des textures alpha.
 
Comme on l'a vu, le MSAA utilise une plus grande quantité de mémoire vidéo. Le '''Fragment Anti-Aliasing''', ou FAA, cherche à diminuer la quantité de mémoire vidéo utilisée par le MSAA. Il fonctionne sur le même principe que le MSAA, à un détail prêt : il ne stocke pas les couleurs pour chaque sous-pixel, mais utilise à la place un masque. Dans le color-buffer, le MSAA stocke une couleur par sous-pixels, couleur qui peut prendre deux valeurs : soit la couleur calculée lors du filtrage de texture, soit la couleur noire (par défaut). A la place, le FAA stockera une couleur, et un petit groupe de quelques bits. Chacun de ces bits sera associé à un des sous-pixels du bloc, et indiquera sa couleur : 0 si le sous-pixel a la couleur noire (par défaut) et 1 si la couleur est à lire depuis le color-buffer. Le ROP utilisera ce masque pour déterminer la couleur du sous-pixel correspondant. Avec le FAA, la quantité de mémoire vidéo utilisée est fortement réduite, et la quantité de donnée à lire et écrire pour effectuer l'anti-aliasing diminue aussi fortement. Mais le FAA a un défaut : il se comporte assez mal sur certains objets géométriques, donnait naissance à des artefacts visuels.