112 votes

Quelles sont les différences entre les différents réglages d'anti-crénelage / multi-échantillonnage ?

Je modifie les paramètres de DiRT 2 et je suis confronté aux choix suivants (dans l'ordre) pour le multi-échantillonnage :

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

En utilisant le panneau de configuration nVidia, j'obtiens les résultats suivants

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

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

La supposition naïve serait que les grands chiffres sont visuellement meilleurs. Mais c'est alors que MSAA, CSAA et QCSAA entrent en jeu (vraisemblablement des méthodes différentes de réalisation de l'AA) et brouillent les pistes en n'étant pas dans le bon ordre.

Par exemple, est-ce que 8x / 8x MSAA est "meilleur" que 8x CSAA d'une certaine manière ? Sinon pourquoi serait-il plus bas dans la liste sur le panneau nVidia ? Et est-ce que 8x QCSAA est "meilleur" que 16xCSAA selon l'ordre dans DiRT2 ?

En termes de la qualité des images , performance et tout autres bizarreries , quelles sont les différences entre les différents types d'AA ?
Je ne m'interroge pas sur les différences entre l'algorithme et l'implémentation ; c'est probablement hors sujet de toute façon.

76voto

Jeff Atwood Points 8468

C'est une excellente question parce qu'à part "l'AA est-il activé ou désactivé ?". je n'avais pas considéré les implications en termes de performances des différents modes d'anti-crénelage.

Vous trouverez une bonne description de base des trois modes AA "principaux" à l'adresse suivante Tant de techniques AA, si peu de temps mais de nos jours, presque toutes les AA sont des MSAA ou des versions optimisées de celles-ci :

  1. Anti-crénelage super-échantillonné (SSAA). La plus vieille astuce du livre - je l'ai listée comme universelle parce que vous pouvez l'utiliser à peu près partout : rendu direct ou différé, elle permet également d'anti-aliaser les coupures alpha, et elle vous donne un meilleur échantillonnage de texture à haute anisotropie également. En gros, vous rendez l'image à une résolution plus élevée et vous la sous-échantillonnez avec un filtre lorsque vous avez terminé. Les arêtes vives deviennent anti-aliasées lorsqu'elles sont réduites. Bien sûr, il y a une raison pour laquelle les gens n'utilisent pas le SSAA : cela coûte une fortune . Quel que soit votre taux de remplissage, il est de 4x pour un SSAA même minimal.

  2. Anti-crénelage multi-échantillonné (MSAA). C'est ce que vous avez généralement en matériel sur une carte graphique moderne. La carte graphique effectue le rendu sur une surface plus grande que l'image finale, mais en ombrant chaque "grappe" d'échantillons (qui finira en un seul pixel sur l'écran final), le pixel shader n'est exécuté qu'une seule fois. Nous économisons une tonne de taux de remplissage, mais nous brûlons toujours de la bande passante mémoire. Cette technique n'assure pas l'anti-alias des effets qui sortent du shader, car le shader est exécuté à 1x, et les coupures alpha sont donc irrégulières. C'est la façon la plus courante d'exécuter un jeu à rendu frontal. Le MSAA ne fonctionne pas avec un moteur de rendu différé car les décisions d'éclairage sont prises après que le MSAA a été "résolu" (réduit) à sa taille d'image finale.

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

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

                       ---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, en gros, vous pouvez vous attendre à une performance perte de

  • pas de AA → 2x AA

    ~15% plus lent

  • pas de AA → 4x AA

    ~25% plus lent

Il y a effectivement une différence de qualité visible entre un anticrénelage nul, 2x, 4x et 8x. . Et les variantes MSAA modifiées, appelées "adaptatives" ou "échantillon de couverture", offrent une meilleure qualité à un niveau de performance plus ou moins équivalent. Echantillons supplémentaires par pixel = anti-crénelage de meilleure qualité .

Graphic comparing AA and MSAA sampling of a pixel

Comparaison des 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, il faut avoir les yeux d'un aigle pour voir la différence. Il y a certainement un avantage à avoir des modes 2x et 4x AA "bon marché" qui peuvent raisonnablement être utilisés par les utilisateurs. approximativement 8x sans l'impact sur les performances, cependant. C'est le juste milieu entre les performances et l'amélioration de la qualité visuelle que vous remarquerez.

0 votes

Excellente réponse, mais je ne suis pas d'accord avec le dernier paragraphe. Par exemple, la CSAA 8x et la CSAA 16x sont toutes deux nettement plus irrégulières que la MSAA 8x dans le panneau de configuration de nVidia (zone de prévisualisation des paramètres 3D).

74voto

benjaminperdomo Points 11

Si vous taillez à travers cet article vous pourrez probablement trouver la plupart des informations que vous cherchez, mais je vais essayer de résumer les éléments pertinents.

Tout d'abord, vous devez comprendre que la MSAA est un type de Sur-échantillonnage anti-aliasing (SSAA). Le SSAA, également connu sous le nom de FSAA, supprime les "à-coups" d'une image en rendant l'image à une résolution plus élevée :

L'anticrénelage de l'ensemble de la scène par suréchantillonnage signifie généralement que chaque plein complète est rendue au double (2x) ou au quadruple (4x) de la résolution de l'écran. et est ensuite sous-échantillonnée pour correspondre à la résolution de l'écran. Ainsi, un FSAA 2x rendrait 4 pixels suréchantillonnés pour chaque pixel de chaque chaque image. Bien que le rendu à des résolutions plus élevées produise de meilleurs de meilleurs résultats, une plus grande puissance de processeur est nécessaire, ce qui peut dégrader les performances et la fréquence d'images. et la fréquence d'images.

MSAA est une forme plus efficace de FSAA, mais le multiplicateur a toujours la même signification, en gros. Cela signifie (comme vous le savez probablement), qu'un multiplicateur plus élevé donne de meilleurs résultats, mais demande plus de puissance de traitement.

La CSAA est une forme encore plus efficace de la SSAA, qui utilise une certaine magie 3D avancée (il suffit de lire l'article si vous voulez vraiment savoir) pour obtenir de meilleurs résultats :

En résumé, la CSAA produit des images anticrénelées qui rivalisent avec la qualité des images de type 8x ou 16x MSAA, tout en n'introduisant qu'un impact minimal sur les performances par rapport à standard (typiquement 4x) MSAA.

En substance, si vous mettez vos multiplicateurs en équation, la MSAA produira de meilleurs résultats que la CSAA (bien qu'il soit sous-entendu que les résultats ne seront pas de manière significative meilleur), mais exigera beaucoup plus de puissance de traitement.

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

L'article de Wikipédia sur le suréchantillonnage fournit en fait une excellente image montrant pourquoi plus d'échantillons signifie une meilleure précision :

Multiple samples

Ceci étant dit, l'ordre dans lequel DiRT2 liste ses options d'anticrénelage laisse pour le moins perplexe. Comme je doute que vous puissiez personnellement faire la différence une fois que le multiplicateur atteint 8x et plus, je m'en tiendrais à CSAA/QCSAA pour le gain de performance.

Enfin, voici un joli cliché comparatif des différentes techniques sur une image spécifique et simple (tiré de l'article du premier lien) :

Anti-aliasing results

0 votes

Excellente réponse ! Si vous êtes un développeur, @Aubergine, n'oubliez pas de consulter le site de l échange de piles pour le développement de jeux également :)

0 votes

Merci, @BlueRaja-DannyPflughoeft ! J'apprécie l'appréciation ;)

0 votes

L'utilisation de la CSAA nécessite-t-elle un support matériel ? Ou n'importe quelle carte qui supporte MSAA en général devrait pouvoir utiliser ce paramètre ?

14voto

Athari Points 247

NVIDIA a créé un autre algorithme, FXAA (anti-crénelage approximatif rapide) . Contrairement aux MSAA, CSAA et leurs variantes actuellement utilisées, il travaille au niveau du pixel, sans jamais toucher à la géométrie. Il trouve les bords irréguliers et les lisse. Il est plus rapide que les autres. Comme FSAA, il n'a aucun problème avec les canaux alpha, les shaders, etc. Cependant, les résultats sont plus flous.

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

Alias, 4xMSAA, FXAA :

FXAA Comparison

4voto

Joachim Points 13274

En plus des excellentes réponses déjà données ici, j'aimerais mentionner la relativement nouvelle SMAA ou " Anti-crénelage morphologique sous-pixel " qui est, comme FXAA, une méthode d'anticrénelage post-processus. Dans de nombreux cas, elle surpasse les autres méthodes AA en termes de rapport qualité/coût de l'image.


QU'EST-CE QUE LE SMAA ?

Selon les termes des développeurs Jorge Jimenez, Jose I. Echevarria et Diego Gutierrez de l'initiative Université de Saragosse et Tiago Sousa de Crytek ,

SMAA est une implémentation MLAA très efficace basée sur le GPU, capable de gérer les caractéristiques sous-pixel de façon transparente. de gérer les caractéristiques sous-pixel de manière transparente et de disposer d'un de détection et de traitement des motifs. ( source )

Ou, plus largement (avec mes emphases) :

Nous présentons une nouvelle basé sur l'image , technique d'anticrénelage en post-traitement , qui propose des solutions pratiques aux problèmes courants et ouverts des des algorithmes d'anticrénelage en temps réel basés sur des filtres. Parmi les nouvelles fonctionnalités sont analyse de contraste pour une détection plus fiable des bords détection des bords y un moyen simple et efficace de traiter les objets géométriques pointus. et les lignes diagonales . Ceci, ainsi que notre accéléré et classification précise des modèles permet une meilleure reconstruction des silhouettes. Notre méthode montre pour la première fois comment combiner anti-crénelage morphologique (MLAA) avec des stratégies supplémentaires de multi/sur-échantillonnage d'échantillonnage (MSAA, SSAA). caractéristiques précises des sous-pixels et comment l'associer à reprojection temporelle ; en préservant toujours la netteté de l'image . Toutes ces solutions combinent des synergies permettant d'obtenir une technique très robuste, donnant des résultats d'une meilleure qualité générale que approches précédentes, tout en convergeant plus étroitement vers les références MSAA/SSAA tout en maintenant des temps d'exécution extrêmement rapides. De plus, nous proposons différents préréglages pour mieux s'adapter aux ressources disponibles ou aux besoins particuliers de chaque scénario. ( source )


COMMENT CELA FONCTIONNE-T-IL ?

La SMAA est basée sur la MLAA et la FXAA :

MLAA (Morphological AA) et FXAA (Fast Aproximate AA) sont des modes de post AA qui utilisent des filtres de flou. Ils détectent d'abord les contrastes (" bords ") dans l'image et l'image, puis la rendent floue le long du gradient.

Il en résulte une forte réduction des "effets d'escalier" visibles qui couvrent également les éléments suivants les textures alpha, mais il rend également tout flou, y compris les textures. Il s'agit également la forme la moins chère de l'AA et est souvent utilisée dans les versions de jeux.

La détection des bords de SMAA est cependant comparable à celle de SSAA :

La "détection" de l'alisasing a été améliorée et est plus proche de la détection utilisée dans MSAA que de celle utilisée dans MLAA et FXAA. utilisée dans MSAA que de celle utilisée dans MLAA et FXAA. Le résultat est que que le SMAA reste toujours très bon marché, lisse toujours les alpha-tectures et d'alpha et réduit considérablement les "effets d'escalier" visibles, mais ne rend pas l'image aussi floue. l'image. ( source )

Ce poste par Quelqu'un de simple sur les forums Anandtech explique brièvement ce que fait SMAA, et comment il peut fonctionner en conjonction avec MSAA :

L'injecteur SMAA avec son paramètre par défaut 'SMAA_PRESET_HIGH' est un peu plus gourmand en ressources GPU que la FXAA. GPU que la simple FXAA, donc la perte de performance est assez négligeable dans la plupart des cas.

La SMAA n'est pas comparable à la MSAA. MSAA ajoute en fait détail (sous-pixel) pour lisser les bords des polygones, SMAA essaie seulement de cacher les les irrégularités (mais fait un bon travail). De manière plus notable, vous aurez toujours le pixel-crawling/flickering avec SMAA.

Cependant, le SMAA peut être utilisé en combinaison avec le MSAA. C'est la partie "subpixel" de son nom, contrairement à n'importe quel autre post-traitement AA (que je connais), il peut détecter correctement les gradients, donc il peut être être utilisé en conjonction avec d'autres formes d'AA non-PP, comme le MSAA et le SSAA.

Cela dit, j'utilise actuellement 1,2x OGSSAA (résolution personnalisée NV) avec injection de SMAA dans les jeux qui ne sont pas compatibles avec MSAA. ) avec injection de SMAA, dans les jeux qui ne sont pas compatibles avec MSAA. SMAA s'occupe de l'anti-crénelage, et SSAA réduit considérablement la quantité de pixel-crawling. C'est magnifique, bien mieux que seulement 1,2x OGSSAA ou SMAA seul.

Je n'entrerai pas dans les détails ici, car les autres réponses ont déjà fourni des informations générales sur le mécanisme des différentes techniques d'AA. Vous pouvez en savoir plus sur cette méthode spécifique dans leur papier (PDF) ; ou en feuilletant leur site web. présentation en diaporama (lien direct) ; ou consultez le code sur GitHub .


COMPARAISON AVEC PLUSIEURS AUTRES TECHNIQUES AA

Quelques captures d'écran qui comparent le SMAA à d'autres techniques d'anticrénelage :

                  Call of Duty comparison

                  Elite: Dangerous comparison

                  Far Cry 4 comparison
(source)

                  Watch_Dogs 2 comparison
( source )

Guild Wars 2 (?) comparison
( source )

Une comparaison vidéo utilisant Crysis 2/CryEngine 3, qui l'a implémenté pour la première fois (Youtube) :

                  IMAGE ALT TEXT HERE

Ici est un lien direct vers la vidéo originale, non altérée par la compression.

Et voici une comparaison avec certaines méthodes MLAA, SRAA et FXAA (tirée de l'article cité ci-dessus) :

Table comparing techniques and cost of different AA methods


MISE EN ŒUVRE

Une version de SMAA, faite injectable par Andrej Dudenhefner, peut être téléchargé aquí y injecté dans de nombreuses applications DirectX 9/10/11 (x86) .
Cet article décrit comment procéder dans Fallout : New Vegas, mais cette méthode est très similaire dans la plupart des jeux Bethesda. Il fournit également quelques informations supplémentaires comparant et illustrant les différentes techniques d'AA.

0 votes

Pour une raison quelconque, je ne peux pas atteindre iryoku.com où l'on trouve la plupart des sources présentées ici ( il ne semble pas être en panne Cependant, il n'y a pas d'autre solution.) Dans tous les cas, le document est également accessible ici . Malheureusement, je n'ai pas été en mesure de trouver une version non compressée de la vidéo.

0voto

vlee Points 550

Msaa est le plus lent et est généralement de meilleure qualité que l'équivalent csaa. la msaa 8x est la meilleure qualité, mais la plus chère. la csaa est la solution alternative de nvidia, qui fonctionne plus efficacement. mais la msaa 8x est vraiment belle.

AlleGamers.com

AlleGamers est une communauté de gamers qui cherche à élargir la connaissance des jeux vidéo.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X