Quelles sont les différences entre les différents paramètres anti-aliasing / multisampling?

Je modifie les paramètres dans DiRT 2 et je suis présenté avec ces choix (dans l'ordre) pour multisampling:

  • 2x MSAA
  • 4x MSAA
  • 8x MSAA
  • 8x CSAA
  • 16x CSAA
  • 8x QCSAA

À l'aide du panneau de commande nVidia, je suis présenté avec

  • 2x
  • 4x
  • 8x CSAA
  • 8x
  • 16x CSAA
  • CSAA 16xQ
  • 32x CSAA

Je suppose que ceux sans texte sur le panneau nVidia sont probablement MSAA.

La supposition naïve serait un nombre plus grand de visuellement mieux. Mais alors, MSAA, CSAA et QCSAA entrent en jeu (probablement différentes méthodes d'exécution AA) et confondre les choses en n'étant pas dans le bon ordre.

Par exemple, 8x / 8x MSAA "mieux" que 8x CSAA en quelque sorte? Sinon, pourquoi serait-il plus loin dans la liste du panneau nVidia? Et 8x QCSAA "mieux" que 16xCSAA selon l'ordre dans DiRT2?

En ce qui concerne la qualité de l' image , les performances et toutes les autres facettes , quelles sont les différences entre les différents types d'AA?
Je ne pose pas de questions sur les différences d'algorithme / implantation; C'est probablement hors sujet de toute façon.

    C'est une excellente question car autrement que "est-ce que AA est activé ou désactivé?" Je n'avais pas pris en considération les implications de performance de tous les différents modes anti-aliasing.

    Il existe une bonne description de base des trois modes AA "principaux" de So Many AA Techniques, So Little Time , mais à peu près tous les AA ces jours-ci est MSAA ou une version optimale et optimisée de celui-ci:

    1. Super-Sampleed Anti-Aliasing (SSAA). L'astuce la plus ancienne du livre – je l'énumère comme universel car vous pouvez l'utiliser à peu près n'importe où: rendu en avant ou différé, il anti-alias également les décalages alpha, et il vous offre un meilleur échantillonnage de texture à haute anisotropie. Fondamentalement, vous rendez l'image à une résolution supérieure et un échantillon descendant avec un filtre lorsque vous avez terminé. Les bords tranchants deviennent anti-alias car ils sont de taille réduite. Bien sûr, il y a une raison pour laquelle les gens n'utilisent pas SSAA: cela coûte une fortune . Quelle que soit votre facture de taux de remplissage, c'est 4x pour une SSAA même minimale.

    2. Multi-Sampleed Anti-Aliasing (MSAA). C'est ce que vous avez généralement dans le matériel sur une carte graphique moderne. La carte graphique rend une surface qui est plus grande que l'image finale, mais en ombraçant chaque "cluster" d'échantillons (qui se terminera en un seul pixel sur l'écran final), le pixel shader est exécuté une seule fois. Nous économisons une tonne de taux de remplissage, mais nous supprimons encore la bande passante de la mémoire. Cette technique ne anti-alias aucun effet sortant du shader, car le shader fonctionne à 1x, donc les découpes alpha sont déchiquetées. C'est le moyen le plus courant d'exécuter un jeu de rendu direct. MSAA ne fonctionne pas pour un rendu différé car les décisions d'éclairage sont prises après que le MSAA est "résolu" (taille réduite) à sa taille finale d'image.

    3. Anti-aliasing de l'échantillon de couverture (CSAA). Une autre optimisation sur MSAA de NVidia [ed: ATI a un équivalent]. En plus d'exécuter le shader à 1x et le framebuffer à 4x, le rasterizer du GPU est exécuté à 16x. Donc, alors que le tampon de profondeur produit un meilleur anti-aliasing, les nuances intermédiaires de mélange produites sont encore meilleures.

    Cet article d'Anandtech présente une bonne comparaison des modes AA dans des cartes vidéo relativement récentes qui montrent le coût de performance de chaque mode pour ATI et NVIDIA (c'est à 1920×1200):

    ---MSAA--- --AMSAA--- ---SSAA--- none 2x 4x 8x 2x 4x 8x 2x 4x 8x ---- ---------- ---------- ---------- ATI 5870 53 45 43 34 44 41 37 38 28 16 NVIDIA GTX 280 35 30 27 22 29 28 25 

    Donc, fondamentalement, vous pouvez vous attendre à une perte de performance de ..

    • Non AA → 2x AA

      ~ 15% plus lent

    • Non AA → 4x AA

      ~ 25% plus lent

    Il existe en effet une différence de qualité visible entre zéro, 2x, 4x et 8x antialiasing . Et les variantes MSAA tweaked, également appelées «adaptative» ou «échantillon de couverture», offrent une meilleure qualité à plus ou moins le même niveau de performance. Des échantillons supplémentaires par pixel = anti-aliasing de meilleure qualité .

    Graphique comparant l'échantillonnage AA et MSAA d'un pixel

    Comparer les différents modes sur chaque carte, où "mode" est le nombre d'échantillons utilisés pour générer chaque pixel.

     Mode NVIDIA AMD -------------------- 2+0 2x 2x 2+2 N/A 2xEQ 4+0 4x 4x 4+4 8x 4xEQ 4+12 16x N/A 8+0 8xQ 8x 8+8 16xQ 8xEQ 8+24 32x N/A 

    À mon avis, au-delà de 8x AA, vous devriez avoir les yeux d'un aigle sur crack pour voir la différence. Il y a certainement un avantage à avoir des modes "2" bon marché et 4x AA qui peuvent approximativement 8x sans succès. C'est le bon endroit pour la performance et une augmentation de la qualité visuelle que vous remarquerez.

    Si vous éliminez cet article, vous pourrez probablement rassembler la plupart des informations que vous recherchez, mais je vais essayer de résumer les bits pertinents.

    Tout d'abord, vous devez comprendre que MSAA est un type d'anti-aliasing Supersampling (SSAA). SSAA, également connu sous le nom de FSAA, supprime "jags" d'une image en rendant l'image à une résolution supérieure:

    L'anti-aliasing de scène complète par supersampling signifie généralement que chaque image complète est rendue à double (2x) ou quadruple (4x) de la résolution d'affichage, puis échantillonnée en baisse pour correspondre à la résolution d'affichage. Donc, un FSAA 2x rendrait 4 pixels superamplés pour chaque pixel unique de chaque image. Bien que le rendu à des résolutions plus grandes produise de meilleurs résultats, il faut plus de puissance du processeur qui peut dégrader les performances et la fréquence d'images.

    MSAA est une forme plus efficace de FSAA, mais le multiplicateur a toujours le même sens, à peu près. Cela signifie (comme vous le savez peut-être), qu'un multiplicateur plus élevé donne de meilleurs résultats, mais exige plus de puissance de traitement.

    CSAA est une forme encore plus efficace de SSAA, qui utilise une magie 3D avancée (il suffit de lire le document si vous devez vraiment savoir) pour obtenir de meilleurs résultats:

    En résumé, CSAA produit des images antialiastiques qui rivalisent avec la qualité de MSAA 8x ou 16x, tout en introduisant seulement une performance minimale par rapport à la MSAA standard (généralement 4x).

    Essentiellement, si vous égalisez vos multiplicateurs, MSAA produira de meilleurs résultats que CSAA (bien qu'il soit implicite que les résultats ne seront pas nettement meilleurs), mais exigeront beaucoup plus sur le département de la puissance de traitement.

    QCSAA est simplement CSAA avec deux fois plus de points utilisés pour effectuer l'anti-aliasing, donc évidemment QCSAA est meilleur que CSAA.

    L'article Supersampling de Wikipedia fournit en réalité une excellente image montrant pourquoi plus d'exemples signifient une meilleure précision:

    Échantillons multiples

    Tout cela étant dit, l'ordre dans lequel DiRT2 énumère ses options anti-aliasing semble perplexe, pour le moins. Puisque je doute que vous puissiez personnellement faire la différence une fois que le multiplicateur touche 8x et plus, je m'en tiendrais à CSAA / QCSAA pour le gain de performance.

    Enfin, voici une belle comparaison des différentes techniques sur une image spécifique, simple (de l'article du premier lien):

    Résultats anti-aliasing

    NVIDIA a créé un autre algorithme, FXAA (Fast Approximate Anti-Aliasing) . Contrairement aux MSAA, CSAA et leurs variations actuelles actuellement, il fonctionne sur un niveau de pixel, sans toucher la géométrie. Il trouve des bords déchiquetés et les lisse. C'est plus rapide que le reste. Comme FSAA, il n'y a pas de problèmes avec les canaux alpha, les shaders, etc. Cependant, les résultats sont plus floues.

    Je vois deux utilisations pour FXAA: d'abord, si vous voulez AA, mais la pénalité de MSAA / CSAA est trop élevée pour votre matériel; Deuxièmement, si un jeu s'appuie fortement sur les alpha et les shaders et que votre matériel n'est pas assez divin pour FSAA.

    Alias, 4xMSAA, FXAA:

    Comparaison FXAA