Se connecter avec
S'enregistrer | Connectez-vous

Setup engine et tesselation

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

Un setup engine enfin parallélisé !

Enfin la limite du triangle généré par cycle a été abolie ! Nous attendions ça depuis longtemps, en fait depuis l'avènement des architectures unifiées grâce auxquelles la puissance géométrique avait connu un véritable bond en avant. L'espace d'un instant nous avions même pensé que le RV870 avait ouvert la voie mais la déception n'en fut que plus grande. Aujourd'hui pourtant NVIDIA a répondu à nos attentes en multipliant le nombre d'unités de setup, et la firme Californienne n'a pas fait les choses à moitié car on ne retrouve pas seulement deux rasterizers mais quatre !

C'est là que le nouvelle organisation des unités prends tout son sens. En effet comme nous l'avions indiqué chaque GPC contient la plupart des fonctions d'un GPU (à part les ROP) et peut donc fonctionner de façon indépendante. Cela signifie donc que chaque GPC dispose de sa propre unité de setup qui peut rastériser un triangle à chaque cycle (à raison de 8 pixels par cycle). En pratique la performance de crête reste donc inchangée : on parle toujours de 32 pixels générés à chaque cycle comme sur le GT200 ou sur le RV870 mais l'efficacité de la nouvelle architecture sera visible lors de l'utilisation de nombreux petits triangles.

NVIDIA, dont le département marketing n'est jamais en reste pour nous inventer des noms exotiques, regroupe l'ensemble des opérations effectuées sur les sommets au sein d'un GPC sous le nom de PolyMorph Engine.

Le pipeline géométrique est donc le suivant : les sommets sont récupérés depuis un buffer puis passé aux multiprocesseurs qui effectuent le vertex shading. Le résultat est ensuite passé à l'étape suivante du PolyMorph Engine : le tesselator qui n'est pour sa part pas directement programmable mais dont le fonctionnement peut être contrôlé par le Hull Shader effectué en amont et le Domain Shader effectué en aval sur les multiprocesseurs.

Tesselation

Un petit rappel sur la tesselations'impose à ce niveau. Avec Direct3D 11 Microsoft a introduit trois nouveaux étages à son pipeline graphique (en vert dans l'illustration): le Hull Shader, le Tesselator et le Domain Shader. Contrairement aux autres étapes du pipeline ceux-ci ne fonctionnent pas avec des triangles comme primitives mais en utilisant des patchs. Le Hull shader prend donc en entrée les points de contrôle d’un patch, détermine certains paramètres du Tesselator qui est une unité fixe, comme par exemple le TessFactor qui indique la finesse de la tesselation. Le Tesselator est une unité fixe, par conséquent le programmeur ne contrôle pas comment est opéré la tesselation, celui-ci renvoie les points générés au domain shader qui peut appliquer des opérations sur ces derniers.

Les avantages de la tesselation sont multiples.Elle permet un stockage particulièrement compact des données géométriques : seuls les points de contrôle du mesh sont stockés en mémoire, les sommets supplémentaires générés restent dans le pipeline graphique, ce qui permet d'économiser de la mémoire et de la bande passante. Autre avantage, la tesselation permet d'utiliser des LOD (niveaux de détails) dynamiques : plus un mesh est près de la caméra, plus il a besoin d'être détaillé.A l'inverse, s'il est loin, utiliser énormément de triangles est non seulement superflu mais cela peut en plus s'avérer extrêmement pénalisant au niveau des performances car les rasterizers et les unités de shading n'apprécient pas les triangles trop petits.

La tesselation a également des avantages en termes d'animation, les données d'animation ne sont nécessaires que pour les points de contrôle (le mesh "grossier" pour simplifier) alors que sur un mesh très complexe elles devraient être disponibles à chaque sommet. Par conséquent les gains effectués à ce niveau peuvent être utilisés en utilisant plus de données d'animation par point de contrôle, améliorant par la même la qualité de l'animation.

Toutefois soyons clairs : si Microsoft, AMD et NVIDIA dépeignent tous une situation idyllique, en pratique la tesselation n'est pas un coup de baguette magique qui va automatiquement augmenter le niveau de détails géométriques de nos jeux. Implémenter correctement la tesselation dans un moteur reste complexe et nécessite du travail pour éviter d'observer des artefacts visuels, notamment aux intersections entre deux surfaces ayant des facteurs de tesselation différents.

Afin d’évaluer les cartes sur la tesselation, nous avons eut recourt au benchmark Unigine Heaven. La première version, déjà impressionnante visuellement mais assez peu gourmande, fait apparaître de prime abord un faible écart entre les deux cartes.

 En revanche, la nouvelle version dispose de quelques scènes supplémentaires et surtout d’un nouveau mode faisant un usage bien plus intensif de la tesselation. L’écart grimpe alors à 70 % d’avance pour la GeForce GTX 480 (contre 16 % précédemment) !