Se connecter avec
S'enregistrer | Connectez-vous

Geometry Shader, ROP et antialiasing

GeForce GTX 480 et 470 : révélation ou déception ?
Par , Chris Angelini

Après ce petit aparthée sur la tesselation reprenons notre cheminement le long du pipeline géométrique.La dernière étape est constituée par le Geometry Shader apparu avec Direct3D 10 et qui permet d'ajouter ou de supprimer des sommets ou des primitives. Ah qu'il est loin le temps du T&L de notre bonne vieille GeForce (10 ans déjà) !

Celui-ci constitue un domaine où la nouvelle GeForce GTX 480 évolue le plus par rapport à l’ancienne architecture, avec pas moins de 311 % de progression sur Hyperlight de RoghtMark 3D !

En dernier lieu le PolyMorph Engine effectue les calculs de transformation du viewport et de correction de perspective avant de passer les sommets et tous leurs attributs au Raster Engine. Ce dernier est constitué de trois étapes principales : dans un premier temps les équations des arêtes du triangle sont calculées et les triangles qui ne font pas face à la caméra sont rejetés. Enfin le rasterizer génère les pixels (et les samples dans le cas du MSAA) couverts par le triangle avant de passer le tout à l'unité de Z-Cull qui est désormais bien connue et qui permet d'éviter d'effectuer le pixel shading sur des pixels masqués grâce à un ZBuffer hiérarchique.

Des ROP remaniés

Comme nous l'avons vu NVIDIA a augmenté le nombre de ROP mais la firme Californienne leur a également apporté plusieurs retouches. Si leurs performances "graphiques" n'ont pas été modifiées (1 pixel int 32 bit par cycle, un pixel fp16 tous les deux cycles et un pixel fp32 tous les quatre cycles) NVIDIA a largement optimisé les opérations atomiques c'est à dire les opérations mémoires effectuées en une seule transaction, sans interruption possible. Ce type d'opération est extrêmement utile en programmation parallèle lorsque plusieurs threads peuvent tenter d'accéder à une même ressource. NVIDIA annonce des gains très importants : jusqu'à 20 fois dans le cas d'opération atomiques à une même adresse et 7,5x dans le cas de régions contigues même si en pratique ces gains résultent probablement plus de l'utilisation du cache L2 pour ce type d'opérations que d'une modification substantielle des ROP.

NVIDIA annonce également une amélioration substantielle de ses algorithmes de compression permettant une meilleure efficacité dans le cadre de l'antialiasing 8x. Enfin signalons l'apparition d'un nouveau mode CSAA 32x et de la possibilité de combiner CSAA et Transparency Multisampling pour améliorer l'antialiasing des surfaces transparentes. Détail intéressant : alors que jusqu'ici le nombre de pixels générés par le setup engine et le nombre de ROP augmentait de concert, ce n'est pas le cas sur le GF100 qui dispose de 48 ROP alors que son rasterizer ne peut générer que 32 pixels par cycle. Si au premier abord ce choix peut s'avérer curieux, en pratique les jeux actuels ne sont plus envisageables sans MSAA et utilisent souvent des frame buffers flottants ce qui impose une charge de travail plus importante sur les ROP qui mettent plusieurs cycles à traiter ces pixels. La présence d'un plus grand nombre de ROP se justifie donc, mais dans certaines passes de rendu très simples ils seront sous exploités par les rasterizers.

Pour vérifier les performances, nous avons utilisé Battlefield: Bad Company 2 en 1680x1050 (afin de ne pas faire rentrer en jeu la quantité de mémoire supérieure de la GeForce GTX 480). Evidemment, la GeForce GTX 480 est plus rapide que la GTX 285, aussi avons-nous calculé la perte de performance relative pour chaque carte. On constate alors qu'avec un CSAA 16X, le framerate ne baisse que de 12 % sur la GTX 480 (contre 17 % sur la GTX 285). Mieux : même dans le nouveau mode 32X, la perte de performance ne dépasse pas 21 %. Autrement dit, sur la plupart des jeux actuels et à moins que vous ne disposiez d'un moniteur 30 pouces, voilà un bon moyen d'exploiter une partie de la puissance de cette carte graphique (même si suivant le jeu, l'impact pourra être plus important).