Partager via


Étape Tessellator (TS)

L’étape Tessellator (TS) crée un modèle d’échantillonnage du domaine qui représente le patch géométrique et génère un ensemble d’objets plus petits (triangles, points ou lignes) qui relient 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 hull-shader, tessellator et domain-shader

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

diagramme de progression de la pavage

La progression commence par la surface de subdivision peu détaillée. La progression met ensuite en évidence le correctif d’entrée avec le correctif géométrique, les exemples de domaine et les triangles correspondants qui relient 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 le pavage, qui convertit les surfaces de subdivision à faible détail en primitives plus détaillées sur le GPU. Mosaïques de pavage (ou décompose) des surfaces d’ordre élevé en structures appropriées pour le rendu.

Les étapes de pavage fonctionnent ensemble pour convertir des surfaces d’ordre supérieur (qui gardent le modèle simple et efficace) en de nombreux 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 quatre correctifs, de correctifs de triangles ou d’isolignes. Pour estimer la surface ordonnée, chaque patch est subdivisé en triangles, points ou lignes à l’aide de facteurs de pavage. Le pipeline graphique Direct3D implémente le pavage à l’aide de trois étapes de pipeline :

  • Étape du nuanceur de coque (HS) : étape de nuanceur programmable qui produit un patch géométrique (et des constantes de patch) qui correspondent à chaque patch d’entrée (quad, triangle ou ligne).
  • Étape de Tessellator (TS) : étape de pipeline à fonction fixe qui 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 relient ces exemples.
  • Étape DS (Domain Shader) : étape de nuanceur programmable qui calcule la position du vertex qui correspond à chaque exemple de domaine.

En implémentant la pavage dans le matériel, un pipeline graphique peut évaluer des modèles de détails inférieurs (nombre de polygones inférieur) et le rendu en détail plus élevé. Bien que le pavage logiciel puisse être effectué, le pavage implémenté 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 de modèle et paralyser les taux d’actualisation.

Avantages de la pavage :

  • Tessellation permet d’économiser beaucoup de mémoire et de bande passante, ce qui permet à une application de restituer des surfaces détaillées plus élevé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 des quantités étonnantes de détails de surface.
  • La pavage prend en charge les techniques de rendu évolutif, telles que les niveaux de détail continus ou dépendants de la vue, qui peuvent être calculés à la volée.
  • La pavage améliore les performances en effectuant des calculs coûteux à des fréquences inférieures (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 de morphose pour des calculs d’animation réalistes ou physiques pour la détection de collision ou la dynamique du corps mou.

Le pipeline graphique Direct3D implémente le pavage dans le matériel, ce qui décharge le travail du processeur 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 morphes et/ou des modèles d’apparence/déformation plus sophistiqués.

Le tessellateur est une étape de fonction fixe initialisée en liant un nuanceur de coque au pipeline. (voir How To: Initialize the Tessellator Stage). L’objectif de l’étape de tessellateur est de subdiviser un domaine (quad, tri ou trait) en de nombreux objets plus petits (triangles, points ou lignes). Le tessellateur mosaïque un domaine canonique dans un système de coordonnées normalisé (zéro-à-un). Par exemple, un domaine à quatre est un carré d’unité.

Phases de la phase de Tessellator (TS)

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

  • La première phase traite les facteurs de pavage, en corrigeant les problèmes d’arrondi, en gérant de très petits facteurs, en réduisant et en combinant les facteurs, en utilisant l’arithmétique à virgule flottante 32 bits.

  • La deuxième phase génère des listes de points ou de topologies en fonction du type de partitionnement sélectionné. Il s’agit de la tâche principale de l’étape de tessellateur 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, avec un patch de 64 mètres de large, 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 étapes 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 passés 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 tessellateur). Pour générer les positions de vertex finaux à partir des correctifs tessellés, vous devez également créer un nuanceur de domaine et le lier à l’étape de 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 le pavage, définissez le nuanceur de coque et le nuanceur de domaine sur NULL. Ni l’étape GS (Geometry Shader) ni l’étape De sortie de flux (SO) ne peuvent lire les points de contrôle de sortie du nuanceur de coque ou les données de patch.

Entrée

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

Sortie

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

Pipeline graphique