Étape Tessellator (TS)

L’étape Tessellator (TS) crée un modèle d’échantillonnage du domaine qui représente le correctif géométrique et génère un ensemble d’objets plus petits (triangles, points ou lignes) qui connectent ces exemples.

Objectif et utilisations

Le diagramme suivant met en évidence les étapes du pipeline graphique Direct3D.

diagramme du pipeline direct3d 11 qui met en évidence les étapes du nuanceur de coque, du tessellator et du nuanceur de domaine

Le diagramme suivant montre la progression à travers les étapes de pavage.

diagramme de progression de la pavage

La progression commence par la surface de sous-division basse. La progression met ensuite en évidence le correctif d’entrée avec le correctif geometry, les exemples de domaine et les triangles correspondants qui connectent ces exemples. La progression met enfin en évidence les sommets qui correspondent à ces exemples.

Le runtime Direct3D prend en charge trois étapes qui implémentent la pavage, qui convertit les surfaces de sous-division de bas détail en primitives plus détaillées sur le GPU. Les mosaïques de pavage (ou décomposent) des surfaces de haut ordre dans des structures appropriées pour le rendu.

Les étapes de pavage fonctionnent ensemble pour convertir des surfaces d’ordre supérieur (qui conservent le modèle simple et efficace) en plusieurs triangles pour un rendu détaillé dans le pipeline graphique Direct3D.

La pavage utilise le GPU pour calculer une surface plus détaillée à partir d’une surface construite à partir de quad patches, de correctifs triangles ou d’isolines. Pour estimer la surface à ordre élevé, chaque patch est subdivisé en triangles, points ou lignes à l’aide de facteurs de pavage. Le pipeline graphique Direct3D implémente la pavage à l’aide de trois étapes de pipeline :

  • Étape du nuanceur de coque (HS) : étape de nuanceur programmable qui produit un patch geometry (et des constantes correctives) qui correspondent à chaque correctif d’entrée (quad, triangle ou ligne).
  • Étape tessellator (TS) : étape de pipeline de fonction fixe qui crée un modèle d’échantillonnage du domaine qui représente le correctif geometry et génère un ensemble d’objets plus petits (triangles, points ou lignes) qui connectent ces exemples.
  • Étape de nuanceur de domaine (DS) : étape de nuanceur programmable qui calcule la position de vertex qui correspond à chaque exemple de domaine.

En implémentant le pavage dans le matériel, un pipeline graphique peut évaluer des modèles de détail inférieurs (nombre de polygones inférieurs) et afficher en détail. Bien que la pavage logicielle puisse être effectuée, la pavage implémentée par le matériel peut générer une quantité incroyable de détails visuels (y compris la prise en charge du mappage de déplacement) sans ajouter les détails visuels aux tailles du modèle et paralyser les taux d’actualisation.

Avantages de la pavage :

  • La pavage permet d’économiser beaucoup de mémoire et de bande passante, ce qui permet à une application d’afficher des surfaces plus détaillées à partir de modèles à faible résolution. La technique de pavage implémentée dans le pipeline graphique Direct3D prend également en charge le mappage de déplacement, ce qui peut produire de superbes quantités de détails de surface.
  • Tessellation prend en charge les techniques de rendu évolutives, telles que les niveaux de détail dépendants continus ou d’affichage, qui peuvent être calculés à la volée.
  • La pavage améliore les performances en effectuant des calculs coûteux à une fréquence inférieure (en effectuant des calculs sur un modèle de détail inférieur). Cela peut inclure des calculs de fusion à l’aide de formes de fusion ou de cibles morphes pour des calculs d’animation ou de physique réalistes pour la détection de collision ou la dynamique du corps doux.

Le pipeline graphique Direct3D implémente la pavage dans le matériel, qui décharge le travail de l’UC vers le GPU. Cela peut entraîner des améliorations très importantes des performances si une application implémente un grand nombre de cibles de morphes et/ou des modèles de déformation/peau plus sophistiqués.

Le tessellator est une phase de fonction fixe initialisée en liant un nuanceur de coque au pipeline. (voir Guide pratique pour initialiser l’étape Tessellator). L’objectif de l’étape tessellator est de subdiviser un domaine (quad, tri ou ligne) en de nombreux objets plus petits (triangles, points ou lignes). Les tessellators vignettent un domaine canonique dans un système de coordonnées normalisé (zéro à un). Par exemple, un domaine quad est tessellé à un carré d’unité.

Phases de l’étape Tessellator (TS)

L’étape Tessellator (TS) fonctionne en deux phases :

  • La première phase traite les facteurs de pavage, la résolution des problèmes d’arrondi, la gestion de très petits facteurs, la réduction et la combinaison de facteurs, à l’aide d’arithmétique à virgule flottante 32 bits.

  • La deuxième phase génère des listes de points ou de topologie en fonction du type de partitionnement sélectionné. Il s’agit de la tâche principale de l’étape tessellator et utilise des fractions 16 bits avec arithmétique à point fixe. L’arithmétique à point fixe permet l’accélération matérielle tout en conservant une précision acceptable. Par exemple, étant donné un patch de 64 mètres de largeur, cette précision peut placer des points à une résolution de 2 mm.

    Type de partitionnement Plage
    Fractional_odd [1...63]
    Fractional_even Plage TessFactor : [2..64]
    Integer Plage TessFactor : [1..64]
    Pow2 Plage TessFactor : [1..64]

     

La pavage est implémentée avec deux phases de nuanceur programmables : un nuanceur de coque et un nuanceur de domaine. Ces étapes de nuanceur sont programmées avec du code HLSL défini dans le modèle de nuanceur 5. Les cibles du nuanceur sont les suivantes : hs_5_0 et ds_5_0. Le titre crée le nuanceur, puis le code du matériel est extrait des nuanceurs compilés transmis au runtime lorsque les nuanceurs sont liés au pipeline.

Activation/désactivation de la pavage

Activez la pavage en créant un nuanceur de coque et en le liant à l’étape du nuanceur de coque (cela configure automatiquement l’étape de tessellator). Pour générer les positions de vertex finales à partir des correctifs tessellated, vous devez également créer un nuanceur de domaine et le lier à l’étape du nuanceur de domaine. Une fois le pavage activé, l’entrée de données à l’étape d’assembleur d’entrée (IA) doit être des données correctives. La topologie de l’assembleur d’entrée doit être une topologie de constante de correctif.

Pour désactiver la pavage, définissez le nuanceur de coque et le nuanceur de domaine sur NULL. Ni l’étape de nuanceur geometry (GS) ni l’étape Sortie de flux (SO) ne peut lire les points de contrôle de sortie du nuanceur de coque ou les données correctives.

Entrée

Le tessellator fonctionne une fois par patch à l’aide des facteurs de pavage (qui spécifient la précision du domaine à tessellation) et le type de partitionnement (qui spécifie l’algorithme utilisé pour découper un patch) transmis à partir de l’étape du nuanceur de coque.

Sortie

Le tessellator génère des coordonnées uv (et éventuellement w) et la topologie de surface à l’étape du nuanceur de domaine.

Pipeline graphique