ATI Radeon HD 2900 XT

Publié le 15/05/2007 par
Imprimer
Antialiasing
Alors que les Radeon sont capables depuis longtemps de gérer un antialiasing de type multisample en 6x, le Radeon HD 2900 passe enfin au mode 8x, tout comme les GeForce 8. Tous les modes restent compatibles avec le HDR FP16.

Pour rappel, Nvidia a implémenté un nouveau mode d’antialiasing nommé coverage sample (CSAA). Ce mode consiste à améliorer la précision avec laquelle les samples de couleurs différentes sont mélangées pour former l’image finale. Par exemple si 2 triangles passent par un même pixel en MSAA 4x, ils peuvent recouvrir soit 25 et 75 % du pixel, 50 % chacun ou 75 et 25 %. Les couleurs sont mélangées dans ces proportions. Le coverage sample se base sur un buffer MSAA classique ainsi que sur un second buffer d’une résolution supérieure (8x ou 16x) mais qui ne retient pas de couleur, uniquement une valeur booléenne qui indique si le triangle couvre cette zone ou pas.

Cette technique a des limites puisqu’il n’est pas possible via le coverage sample buffer de connaître précisément les interactions entre de nombreux triangles ou entre des triangles qui se touchent ou se coupent. Etant donné que le Z-Buffer reste à la résolution standard, il n’est pas possible de savoir quel triangle est au-dessus de l’autre etc. Nvidia a donc dû restreindre l’utilisation de coverage sample buffer aux pixels qui représentent 2 triangles espacés. Si ce n’est pas le cas l’information du CS buffer est ignorée. Quand elle est utilisée, elle offre un résultat en théorie similaire à celui de sa résolution puisque le mélange des samples se fait dans cette résolution. En reprenant l’exemple précédant, un triangle qui couvre 30% du pixel n’aura lors du mélange en MSAA 4x que 25% de poids puisque c’est l’approximation la plus proche possible dans ce mode. En MSAA 4x + CSAA 16x, il pèsera alors pour 31% ce qui est une meilleure approximation.

Le CSAA ne profitera donc qu’à certaines arêtes mais en contrepartie il est beaucoup moins gourmand qu’un mode de MSAA supérieur vu qu’il consomme moins de bande passante et ne requiert jamais de calcul de couleur supplémentaire.

De son côté, avec les Radeon HD2000, ATI a mis en place une évolution au niveau du downsampling (MSAA resolve), cette opération qui consiste à redimensionner le buffer avec MSAA pour former l'image dans la résolution voulue. En règle générale c'est un filtre de type "box" qui est utilisé. Il consiste simplement, dans le cas du mode 4x, à additionner les 4 samples, chacune ayant un poids de 25%. Avec les Radeon HD2000, ATI rend ce filtre de downsampling programmable grâce à une unité de MSAA resolve revue dans les ROPs. Reste que cette unité ne semble pas fonctionnelle! Cela fait plusieurs mois que les bruits de couloir font état de bugs dans les ROPs du R600 et cette partie semble être particulièrement visée. Comment faire donc pour continuer à supporter même le simple MSAA sans cette unité ? La réponse se trouve dans DirectX 10 qui permet de lire un buffer MSAA comme toute autre texture. Autrement dit il suffit d'appliquer le filtre de downsampling via un pixel shader, tel un filtre de post processing. Pour AMD, utiliser cette capacité en dehors de DirectX 10 n'est qu'une question de drivers. Le problème est donc réglé. Bien entendu, selon AMD les ROPs ne sont pas bugués et cette approche a été choisie uniquement parce qu'elle est plus flexible, le surcoût étant annoncé négligeable. Il est très courant de développer de telles unités pour ne pas les utiliser… Car si la méthode utilisée est bien très flexible puisque n'importe quel filtre peut être utilisé, ce filtre a un coût plus ou moins élevé selon sa complexité puisqu'il monopolise les unités de calcul le temps de son traitement.

AMD utilise cette capacité pour introduire le CFAA pour custom filter antialiasing dans ses drivers en proposant des filtres narrow-tent et wide-tent en plus du mode box classique. Le premier consiste à mélanger 50% de samples supplémentaires issues des pixels adjacents et le second consiste à en mélanger 100% en plus. Ansi en mode MSAA 4x, le filtre wide-tent va filtrer l'image sur 8 samples au lieu de 4. Le principe est similaire à celui du Quincux de Nvidia qui avait été largement critiqué pour rendre les images floues. Les filtres narrow et wide-tent souffrent également de ce défaut, mais dans une bien moindre mesure puisque le filtre étant programmable, le poids donné aux samples issus des pixels adjacents peut être réduit.



De haut en bas : le MSAA 8x, le MSAA 8x + CFAA 12x (narrow-tent) et le MSAA 8x + CFAA 16x (wide-tend)

Avec un utilitaire beta, AMD permet d'activer un filtre 12x et 24x qui va en premier lieu utiliser un algorithme de détection des arrêtes et en second lieu appliquer le filtrage adapté. Ce type de filtre peut permettre d'atteindre des qualités très élevées mais monopolisent une partie de la puissance de calcul qui peut grimper en flèche. Nous ne pouvons malheureusement pas commenter ce filtre d'ATI puisque s'il fait effectivement baisser les performances, le résultat ne semble pas être appliqué à l'image. Nous attendrons donc une version fonctionnelle pour juger de son intérêt.



Nous avons voulu voir le coût en pratique de tous ces modes de FSAA :


Premièrement, précisons que MSAA 8x correspond au mode 8xQ, MSAA 4x + CFAA 8x au mode 8x et MSAA 8x + CFAA 16x au mode 16xQ dans les drivers Nvidia (on remerciera Nvidia et AMD pour la simplicité introduite par tous ces nouveaux modes).

Malgré son bus mémoire 512 bits, la Radeon HD 2900 XT peine à se démarquer de la Radeon X1950 XTX et ne prend les devants que très légèrement sur la GeForce 8800 GTS en MSAA 8x. Etant donné le coût du filtre wide-tent qui atteint 30% en MSAA 8x, nous sommes confortés dans notre idée que le fait qu'AMD n'utilise pas ou ne puisse pas utiliser le downsampling hardware handicape la Radeon HD 2900 au niveau des performances.


Ce second test est identique si ce n’est que nous avons cette activé le Transparency AntiAliasing chez Nvidia et l'Adaptive AntiAliasing chez AMD, qui pour rappel permettent d'appliquer du supersampling sur les surface rendues à base de test alpha, de manière à pouvoir filtrer grillages, végétation etc. Etrangement, avec le nouveau driver, les performances ne baissent que très légèrement chez AMD. L'AAA semble pourtant bel et bien activé et nous ne pouvons pas nous expliquer ce très faible coût. AMD semble avoir trouvé une astuce pour booster les performances dans ce jeu et cela n'a à priori pas de lien avec la nouvelle architecture.
Qualité de l’antialiasing (sans TAA / AAA)
  

GeForce 7 : Sans AA, 4x AA, 8xS AA

  

Radeon X1000 : Sans AA, 4x AA, 6x AA

     

GeForce 8 : Sans AA, 4x AA, 4x AA + 8x CSAA, 4x AA + 16x CSAA, 8x AA (8xQ), 8x AA + 16x CSAA

      

Radeon HD 2900 : Sans AA, 4x AA, 4x AA + 6x CFAA, 4x AA + 8x CFAA, 8x, 8x AA + 12x CFAA, 8x AA + 16x CFAA

D’un point de vue qualitatif, on peut dire que les MSAA 4x des Radeon HD 2900 et des GeForce 8800 se valent, chacun prenant l’avantage sur l’autre en fonction des angles à filtrer. Par contre, le MSAA 8x d’ATI est notablement supérieur d’un point de vue qualitatif.

Les nouveaux modes introduits par ATI via le CFAA sont peu convaincants en pratique : certes il y’a moins d’aliasing mais ceci se fait au détriment d’un léger flou général, le tout pour un impact sur les performances non négligeable. Quitte à choisir d’aller plus loin que le MSAA de base, nous vous conseillons plutôt d’opter pour le Transparency/Adaptative Anti-aliasing.

Afin de vous faire votre propre opinion, voici une suite de screenshots dans les différents modes :

Qualité de l’antialiasing (avec TAA / AAA)
  

GeForce 7 : Sans AA, 4x AA, 8xS AA

  

Radeon X1000 : Sans AA, 4x AA, 6x AA

     

GeForce 8 : Sans AA, 4x AA, 4x AA + 8x CSAA, 4x AA + 16x CSAA, 8x AA (8xQ), 8x AA + 16x CSAA

      

Radeon HD 2900 : Sans AA, 4x AA, 4x AA + 6x CFAA, 4x AA + 8x CFAA, 8x, 8x AA + 12x CFAA, 8x AA + 16x CFAA
Vos réactions

Top articles