Skip to main content
Les GPU RTX Turing et AMD RDNA 2.0 introduisent un nouveau pipeline de traitement de la géométrie. Ce pipeline se compose de deux nouvelles étapes de shader programmables, l’Amplification Shader et le Mesh Shader, et n’utilise pas le matériel de l’assembleur d’entrée ni celui du tessellateur. Les deux étapes s’apparentent au calcul (compute) : elles exposent des groupes de threads et utilisent les ID de threads générés comme seules entrées fournies, mais offrent également des fonctionnalités propres à la soumission du traitement de la géométrie. Ce nouveau paradigme a pour effet de déléguer les lectures d’index/de sommets à des shaders programmables, ce qui leur permet d’évoluer avec le nombre de cœurs du GPU et la bande passante mémoire. Cela contourne un goulot d’étranglement croissant de l’assembleur d’entrée et facilite le lancement de travail sur le GPU à un rythme amélioré et constant. Cela fournit également une interface pour l’élimination précoce de la géométrie à plusieurs granularités, jusqu’au niveau de chaque primitive, de manière pipelinée avec la mémoire sur puce. Figure 1. Les étapes du pipeline Mesh Shader. Les étapes teintées de vert sont programmables. Les étapes teintées de bleu sont à fonction fixe. Diagramme des étapes du pipeline Mesh Shader

Mesh Shaders

Les Mesh Shaders (MS) sont essentiellement des compute shaders dotés d’intrinsèques propres à l’étape pour exporter les sommets, les index et les données de primitives vers l’assembleur de primitives. Toutes les données doivent être explicitement lues à partir de vues de tampon constant (CBV) et de vues de ressource de shader (SRV) dans le code du shader. Cela signifie que les développeurs devront ajuster leur vision des appels de dessin pour l’aligner davantage sur le flux de travail des compute shaders. L’auteur du shader détermine la taille du groupe de threads et la façon dont chaque thread est utilisé pour accomplir la charge de travail. Il aura accès aux intrinsèques de wave du shader et à la mémoire groupshared pour partager des données et construire efficacement une liste de primitives à rastériser. Figure 2. Visualisation du travail GPU distribué par un appel DispatchMesh(4, 1, 1) avec un pipeline lié composé uniquement d’un Mesh Shader. Comme pour les compute shaders, DispatchMesh requiert des nombres de groupes de threads dans les dimensions x, y et z. Cela distribue le nombre spécifié de groupes de threads Mesh Shader pour exécution. Visualisation du travail distribué par une commande DispatchMesh avec un pipeline lié composé uniquement d'un Mesh Shader.

Amplification Shaders

L’Amplification Shader (AS) est une étape facultative qui précède l’étape Mesh Shader. Cette étape s’apparente également au calcul et peut distribuer dynamiquement un ensemble de groupes de threads Mesh Shader. Chaque groupe de threads calcule son propre nombre de groupes de threads Mesh Shader à distribuer. Chaque groupe de threads comprend également jusqu’à 16 Ko de données de charge utile personnalisées partagées à transmettre aux groupes de threads Mesh Shader qu’il engendre. Ces données peuvent être exportées directement depuis la mémoire groupshared. Les fonctionnalités des Amplification Shaders permettent aux programmes de shader de réduire ou d’amplifier dynamiquement leur charge de travail en fonction de critères personnalisés. Cela ouvre la possibilité d’une élimination efficace à granularité plus fine ou d’une tessellation personnalisée. Figure 3. Visualisation de la distribution d’un objet d’état de pipeline (PS) AS-MS. Certains groupes de threads AS choisiront de distribuer des groupes de threads MS. D’autres pourraient n’en distribuer aucun. Visualisation du travail distribué par une commande DispatchMesh avec un pipeline AS-MS lié.

Dans cette section

Voir aussi

Vue d’ensemble des fonctionnalités graphiques XBOX Series X|S Vue d’ensemble des graphismes Graphismes
Last modified on October 6, 2026