Skip to main content
Cette rubrique décrit l’ombrage à taux variable (VRS) et l’éclairage clairsemé. VRS est une nouvelle fonctionnalité matérielle et logicielle de Direct3D 12 qui permet de répartir les performances et la puissance de rendu à des taux variables sur une image rendue. Cette fonctionnalité améliore les performances. Visuellement, la réduction du taux d’ombrage a peu ou pas d’effet sur la qualité perceptible du résultat. La version de novembre 2019 du Microsoft Game Development Kit (GDK) pour XBOX Series X|S prend en charge VRS de niveau 2 (Tier 2) sur le matériel XBOX Series X|S.
Ces renseignements étaient à jour en date de novembre 2019. Plusieurs fonctionnalités pourraient avoir changé ou avoir été mises à jour depuis.

Introduction : VRS

Les sorties en 1080p et en résolutions supérieures ont mené au développement de techniques de rendu qui réduisent la charge d’ombrage des pixels. Ces techniques comprennent les suivantes :
  • Rendu fovéal en réalité virtuelle
  • Rendu en damier
  • Suréchantillonnage temporel
VRS était la prochaine étape logique de cette progression. VRS pour PC est sorti en mars 2019. Il est actuellement offert sur DirectX 12 et Windows 10 avec les technologies Intel Ice Lake (Tier 1) et NVIDIA Turing (Tier 2). AMD produit des cartes graphiques améliorées pour PC conçues avec la nouvelle microarchitecture RDNA2 pendant la période des Fêtes 2020. Pour plus d’information sur VRS, consultez les ressources suivantes : Microsoft Game Dev Game Developers Conference (GDC) 2019 Siggraph 2019 Publications Exemples

Objectifs de conception de VRS

  1. Des taux d’ombrage sélectionnables localement pour ajuster finement l’équilibre entre la qualité du jeu et les performances :
    • Pleine qualité là où c’est nécessaire.
    • Demi-taux, soit le même taux que le rendu en damier.
    • Quart de taux ou même moins.
  2. La profondeur, le stencil et la couverture sont toujours à plein taux, avec des contours parfaits.
  3. VRS s’intègre facilement à un moteur existant en utilisant les mêmes nuanceurs, que VRS soit activé ou non.
  4. Aucun remplissage de trous, aucune passe ni aucun tampon supplémentaire, et aucune approximation.
  5. Un rendu cinématographique et doux n’est pas imposé. Des visuels extrêmement nets sont possibles.
  6. Compatible avec le suréchantillonnage temporel et l’anticrénelage multiéchantillon (MSAA).

Évolutivité locale

VRS peut réduire de façon sélective le taux d’ombrage dans les zones à faible détail de texture. Par exemple :
  • Les zones floues, comme la profondeur de champ, le flou de mouvement et le bloom
  • Les situations de faible éclairage ou de saturation lumineuse
  • L’occlusion partielle, comme les transparences, le brouillard, l’eau, les nuages, ce qui se trouve derrière le feuillage ou les éléments de l’affichage tête haute (HUD)
  • Les détails de texture à basse fréquence, comme les particules et les transparences à demi-résolution
Les zones qui passent habituellement inaperçues. Par exemple :
  • Les bords de l’écran
  • Les zones sûres de suivi oculaire en réalité virtuelle
  • Les objets en mouvement rapide
Figure 1. Les taux d’ombrage contrôlent les appels du nuanceur de pixels (PS) par pixel. Les taux d'ombrage contrôlent les appels du nuanceur de pixels par pixel La figure 1 montre quatre taux d’ombrage VRS.
  • Taux 1 × 1 : un appel PS par pixel. Chaque pixel est ombré.
  • Taux 2 × 1 : un demi-appel PS par pixel. Plus de détails à la verticale.
  • Taux 1 × 2 : un demi-appel PS par pixel. Plus de détails à l’horizontale.
  • Taux 2 × 2 : un quart d’appel PS par pixel. Quart de taux.
Spécifiez le taux du nuanceur à l’aide de l’une des méthodes suivantes.

Sources du taux d’ombrage

Il existe trois façons de spécifier le taux du nuanceur.
  • Par appel de dessin :
    • Tier 1 sur les PC Windows.
    • RSSetShadingRate définit le taux d’ombrage de base et les combinateurs pour VRS.
  • Par sommet déclencheur ou par primitive :
    • Tier 2 sur les PC Windows et XBOX Series X|S.
    • Exportation à l’aide de SV_ShadingRate.
  • Carte en espace écran :
    • Tier 2 sur les PC Windows et XBOX Series X|S.
    • RSSetShadingRateImage définit l’image de taux d’ombrage en espace écran pour VRS.
    • R8_UINT par tuile, qui contient des énumérations D3D12_SHADING_RATE.
    • L’application interroge la taille de tuile, soit 8 × 8, 16 × 16 ou 32 × 32.
Figure 2. Sources du taux d’ombrage et combinateurs. Sources du taux d'ombrage et combinateurs La figure 2 montre un exemple de sources et de combinateurs comportant trois sources et un ensemble de deux combinateurs.
  1. Le premier combinateur prend les taux d’ombrage de l’appel de dessin et l’exportation du sommet par paramètre ou du sommet déclencheur.
  2. Le deuxième combinateur prend les résultats du premier combinateur et les combine avec la carte en espace écran.
  3. Le taux d’ombrage final est transmis au rastériseur.
Figure 3. API Combiner. API Combiner La figure 3 montre les appels de l’API Combiner de la figure 2. Configurez les combinateurs pour obtenir les résultats souhaités. Figure 4. Résultat VRS. Résultat VRS La figure 4 montre une scène rendue avec un taux variable en 4K, une taille de tuile de 8 × 8 et sans anticrénelage temporel (TAA). Cette scène a été rendue avec de nombreuses réductions du taux d’ombrage. Figure 5. Taux d’ombrage par tuile. Taux d'ombrage par tuile La figure 5 montre la même scène en utilisant un filtre de Sobel et un vote par tuile. Le taux 1 × 1 est en rouge. Le taux 2 × 1 est en cyan et comporte plus de détails verticaux, ce qui montre les détails de texture sur les murs de gauche et de droite. Le taux 1 × 2 est en jaune et comporte plus de détails horizontaux. Le taux 2 × 2 est en noir. Figure 6. Zone agrandie. Zone agrandie La figure 6 agrandit les pierres du mur du fond de la figure 5 dans une zone de 160 × 168 pixels. Cela représente environ 0,3 % de la scène 4K originale.
  • Le signal VRS se trouve du côté gauche de la figure 6.
  • L’image de référence, entièrement rendue au taux 1 × 1, se trouve au milieu de la figure 6.
  • Les images du taux d’ombrage et de l’erreur absolue se trouvent du côté droit de la figure 6.
Figure 7. Zone agrandie : taux 1 × 1. Zone agrandie : taux 1 x 1 La figure 7 montre les endroits où le nuanceur qui générait le taux d’ombrage a utilisé le plein taux 1 × 1. Notez que cela a été fait dans les zones à contraste élevé. Notez aussi que le nuanceur a repéré la réflexion spéculaire sur le dessus des pierres concernées. Figure 8. Zone agrandie : taux 2 × 2. Zone agrandie : taux 2 x 2 La figure 8 montre les endroits où le nuanceur a utilisé le taux 2 × 2 sur la surface des pierres. Notez la réduction de la qualité d’ombrage pour le signal VRS. Figure 9. Zone agrandie : taux d’ombrage multiples. Zone agrandie : taux d'ombrage multiples La figure 9 montre les zones où plusieurs taux d’ombrage ont été utilisés sur les sections endommagées de la surface des pierres. Figure 10. Zone agrandie : demi-taux. Zone agrandie : La figure 10 montre les zones où l’ombrage à demi-taux a été utilisé. Il est utile pour préserver les détails dans une zone particulière. Sans ombrage à demi-taux, vous devez utiliser l’ombrage à plein taux. Figure 11. Quelle quantité d’ombrage avons-nous effectuée? Quelle quantité d'ombrage avons-nous effectuée? La figure 11 montre la quantité d’ombrage effectuée pendant le rendu à l’écran. La section agrandie compte 20 × 21 tuiles (160 × 168 pixels).
  • 94 tuiles à plein taux (rouge)
  • 143 tuiles à demi-taux (cyan/jaune)
  • 183 tuiles à quart de taux (noir)
Appels PS à 8 × 8 pixels par tuile :
  • Sans VRS = 26 880 threads PS
  • Avec VRS = 13 520 threads PS
  • Appels PS divisés par le nombre de pixels = 0,503

Dériver la carte en espace écran

Nous vous recommandons d’utiliser l’image précédente pour prédire l’image actuelle. Par exemple, l’image précédente vous indiquera :
  • Où vous appliquerez la profondeur de champ.
  • Où le flou de mouvement se produit.
  • Qu’il y a une zone de faible éclairage ou une zone de saturation lumineuse.
Résumé de l’exemple précédent (de la figure 4 à la figure 11) :
  • On a commencé avec un filtre de Sobel.
  • Les résultats ont été obtenus sans reprojection du mouvement.
  • Les noyaux de convolution X et Y ont été vérifiés par rapport au gradient et à la luminance, puis comparés à un taux.
  • Vote par tuile sur le taux d’ombrage à utiliser.
  • Si le résultat de la comparaison est non nul pour X ou Y, le taux est de 2 × 1 ou de 1 × 2.
  • Nous vous recommandons d’utiliser des fonctions intrinsèques inter-voies.
Le résultat est un processus avec une petite surface d’API, sans modification des nuanceurs ni du MSAA. Une passe de reconstruction n’est pas nécessaire. La surface VRS est complète et prête pour le rendu.
Pour un filtre mis à jour, consultez l’exemple VRSandSparseLighting dans les exemples pour console du Microsoft GDK.
Figure 12. Changement de l’emplacement d’appel PS. Changement de l'emplacement d'appel PS La figure 12 compare l’image de référence au taux 1 × 1 avec un signal VRS de la même scène. VRS modifie l’emplacement d’appel PS, ce qui peut causer des problèmes. Par exemple :
  • VRS peut capturer des détails qui ne figurent pas dans l’image de référence.
  • Différents taux d’ombrage peuvent capturer ou manquer des détails sous-pixel.
Les détails sous-pixel, ou le sous-échantillonnage, peuvent poser problème.
  • Crénelage temporel lorsque la caméra se déplace :
    • Dans cet exemple, des problèmes de crénelage temporel surviennent même sans VRS.
  • Les taux grossiers de VRS pourraient aggraver le sous-échantillonnage.
    • Les gradients de texture sont plus longs pour chaque axe grossier.
    • La sélection d’un mip inférieur est automatique et améliore le crénelage.
    • L’utilisation de niveaux de détail (LOD) de maillage améliore les performances.
    • Soyez prudent lorsque vous utilisez le crénelage de nuanceur.
    • Utilisez TAA pour résoudre les problèmes de rendu liés au sous-échantillonnage.

Taux d’ombrage

Les taux 1 × 1, 2 × 1, 1 × 2 et 2 × 2 constituent l’ensemble minimal de fonctionnalités de VRS. Les PC disposent d’une capacité supplémentaire avec AdditionalShadingRatesSupported, qui prend en charge les taux d’ombrage 2 × 4, 4 × 2 ou 4 × 4. Les taux 2x semblent les plus efficaces. Avec les taux 2x, il peut être difficile de déceler une dégradation de la qualité. C’est particulièrement vrai avec les taux 2 × 1 et 1 × 2. Avec les taux 4x, les différences de rendu sont beaucoup plus visibles, mais ces taux sont plus difficiles à utiliser. Les gains de performances diminuent lorsque vous utilisez les taux 4x. Voici les résultats de performances NVIDIA Tier 2 avec la carte en espace écran. Wolfenstein II: The New Colossus
  • Le mode équilibré présente une amélioration de 6 % du nombre d’images par seconde (FPS).
  • Le mode performances présente une amélioration de 9 à 10 % des FPS.
  • Source : Digital Foundry
Civilization VI
  • Réduction de 8 à 17 % du temps d’image global.
Pour les gains de performances de DOOM Eternal et Gears 5 et de l’information à jour, consultez la vidéo suivante :
Variable Rate Shading Update XBOX Series Consoles.

VRS Tier 2.x sur XBOX Series X|S

Prise en charge par les consoles XBOX Series X|S

Les consoles XBOX Series X|S ont implémenté la spécification PC Tier 2 dans la version de novembre 2019 du Microsoft Game Development Kit (GDK), avec les fonctionnalités et exceptions suivantes. Fonctionnalités :
  • Taux d’ombrage 1 × 1, 1 × 2, 2 × 1 et 2 × 2
  • Carte en espace écran
Exceptions :
  • Aucune capacité de mode 4x.
  • La sortie du masque de couverture est actuellement incorrecte si vous utilisez MSAA. Un correctif est prévu pour ce problème de sortie.
  • Le matériel n’implémente pas de centroïde conforme à la spécification.
  • Une vue de cible de rendu (RTV) est autorisée sur la carte d’image de taux d’ombrage.

Extensions XBOX pour XBOX Series X|S

La prise en charge est prévue pour :
  • Le super-échantillonnage avec MSAA.
  • Les décalages de position d’échantillon.
  • Des combinateurs supplémentaires.
  • Le taux d’ombrage par primitive avec plusieurs fenêtres d’affichage.
  • L’exportation du taux d’ombrage à partir du nuanceur de domaine.
  • La surface de rétroaction du taux d’ombrage.
Faites-nous part de vos priorités en matière de fonctionnalités dans les forums du Microsoft Game Development Kit (GDK).

Super-échantillonnage avec MSAA

XBOX Series X|S prend en charge les taux d’ombrage de super-échantillonnage 2x et 4x. Par exemple, ils sont utilisés en MSAA 8x. L’ensemble des appels PS possibles par pixel est le suivant.
  • 0.25
  • 0.5
  • 1
  • 2
  • 4
  • 8
Un appel PS par taux 2 × 2 est le taux le plus grossier possible. Avec MSAA 8×, il s’agit en fait d’un taux de 1/32, soit 1 appel PS diffusé à 4 pixels × 8 échantillons. Figure 13. Matrice complète des taux d’ombrage de XBOX Series X|S. Matrice complète des taux d'ombrage de XBOX Series X|S La figure 13 montre une matrice des taux d’ombrage de XBOX Series X|S qui tient compte du domaine de super-échantillonnage. La matrice indique le nombre d’appels PS par pixel. Notez qu’il n’y a aucun mode rectangulaire dans le domaine de super-échantillonnage.

HTile et la carte en espace écran

Sur XBOX Series X|S, le taux d’ombrage est écrit dans une carte en espace écran, qui est ensuite transcodée en HTile, où le rastériseur lit le taux d’ombrage.
  • La taille de tuile est toujours de 8 × 8. Aucune requête n’est nécessaire.
  • La tuile est lue pendant la rastérisation. Aucune bande passante supplémentaire n’est nécessaire.
  • Une extension XBOX pourrait effectuer un effacement de profondeur et définir la carte de taux d’ombrage en une seule passe. Cela améliore les performances.

Deux nouveaux encodages HTile

Deux nouveaux encodages HTile avec Stencil sont maintenant offerts.
  • Sans prise en charge du taux d’ombrage de super-échantillonnage :
    • Les bits libres 10 et 11 du Stencil HTile servent à stocker le taux d’ombrage.
  • Avec prise en charge du taux d’ombrage de super-échantillonnage :
    • Quatre bits sont nécessaires pour le taux d’ombrage. HTile perd son deuxième prétest Hi-Stencil (bits 6 et 7). Le premier prétest demeure.
Dans la version de novembre 2019 du Microsoft Game Development Kit (GDK), tous les HTiles utilisent le deuxième encodage. À l’avenir, attendez-vous à un indicateur de ressource « jamais VRS » qui retourne un format HTile « sans stencil » pour une précision accrue. La prise en charge du premier format HTile sera ajoutée au Microsoft Game Development Kit (GDK).

Détails d’implémentation sur XBOX Series X|S

Lorsque RSSetShadingRateImage est appelée, elle transcode le contenu en HTile. S’il n’y a aucun HTile lié, un HTile temporaire est alloué à partir de l’allocateur de commandes de la liste de commandes. Cela permet d’utiliser VRS sans profondeur. VRS peut servir notamment au post-traitement. Si l’allocation échoue par manque de mémoire, VRS est désactivé. Si vous modifiez la vue du stencil de profondeur (DSV), nous vous recommandons d’appeler d’abord RSSetShadingRateImage(nullptr). Sinon, vous pourriez payer de nouveau le coût du transcodage si la DSV a les mêmes dimensions. Une RTV de plus de 4K échoue. Un correctif pour ce problème est prévu dans la version d’avril 2020 du Microsoft Game Development Kit (GDK).

XBOX Series X|S dispose de combinateurs supplémentaires

Figure 14. XBOX Series X|S dispose de combinateurs supplémentaires. XBOX Series X|S dispose de combinateurs supplémentaires La figure 14 montre les combinateurs supplémentaires de XBOX Series X|S. Nous pourrons les exposer s’il y a de la demande.

Emplacement d’appel PS

Le matériel XBOX Series X|S prend en charge les décalages d’échantillon au centre, au centroïde et programmables, qui peuvent modifier l’emplacement d’appel du nuanceur de pixels.
  • Décalage de 4 bits pour chaque taux d’ombrage
  • L’emplacement auquel le PS est appelé peut changer à chaque cycle d’image

Incompatibilités de VRS

Quelques éléments sont incompatibles avec VRS et le désactivent sur XBOX Series X|S. Cela se produit lorsque l’emplacement du PS ne s’aligne pas sur l’échantillon de profondeur ou l’échantillon de stencil.
  • Masque de couverture après la profondeur
  • Raster Order Views (ROV)
  • Importation de SV_Depth
    • Transmettez plutôt la valeur au moyen d’un interpolateur. Consultez la définition du compilateur de nuanceurs __XBOX_SV_POS_ZW_VIA_ATTRIBUTE, qui le fait pour vous.
  • Écriture de SV_Depth ou de SV_StencilRef

Extension Shading Rate Feedback Surface

L’extension Shading Rate Feedback Surface effectue ce qui suit :
  • Prend 2 bits de cmask
  • Enregistre si un triangle a été rendu à un taux fin ou grossier sur chaque axe
  • Supprime la fonctionnalité d’effacement rapide de cmask
  • Est incompatible avec le processus cmask de composition rapide

Récapitulatif de la prise en charge des plateformes

Figure 15. Prise en charge des plateformes. Prise en charge des plateformes La figure 15 montre la prise en charge des fonctionnalités pour chaque plateforme.
Ces renseignements étaient à jour en date de novembre 2019. Plusieurs fonctionnalités pourraient avoir changé ou avoir été mises à jour depuis.
Tenez compte de ce qui suit :
  • XBOX Series X|S prend en charge le plus grand nombre d’ensembles de fonctionnalités.
  • Avec les petits éléments, il est préférable d’utiliser des tuiles de 8 × 8 plutôt que de 16 × 16, car elles augmentent le taux d’ombrage pour moins de pixels.

Optimisations des performances matérielles de XBOX Series X|S

Les améliorations des performances de XBOX Series X|S doivent s’accompagner d’une réduction de la charge des nuanceurs de pixels.

Opérations du bloc de couleur

Dans le pipeline graphique logique, un bloc de couleur est l’une des deux dernières opérations logiques avant la sortie du rendu. Chemins lents Lorsque la RTV dépasse 32 bits par pixel (bpp) ou que le mélange est activé :
  • Sans VRS, il y a 4 pixels par cycle d’horloge par moteur de rendu final (RB).
  • Avec VRS, il y a 4 pixels par cycle d’horloge par RB. Toutefois, la diffusion du grossier vers le fin prend n cycles supplémentaires, où n est égal au nombre de pixels couverts.
Chemins rapides Lorsque la RTV est inférieure ou égale à 32 bpp et que le mélange n’est pas activé :
  • Sans VRS, vous pouvez utiliser le moteur de rendu final optimisé (RB+) avec un taux 2x, ce qui équivaut à 8 pixels par cycle d’horloge par RB.
  • Avec VRS, il y a 4 pixels par cycle d’horloge par RB pour un taux 1 × 1.
  • Toutefois, le bloc de couleur peut charger latéralement des copies de diffusion supplémentaires.
    • 4 pixels par cycle d’horloge pour un taux 2 × 1.
    • 8 pixels par cycle d’horloge pour un taux 1 × 2.
    • 8 pixels par cycle d’horloge pour un taux 2 × 2.
Il y a un plafond de 16 pixels par cycle d’horloge par RB. Le travail du nuanceur de pixels est maintenant amélioré, car le bloc de couleur peut traiter des copies supplémentaires.

RSSetShadingRate

Pour utiliser RB+, désactivez VRS en appelant RSSetShadingRate(D3D12_SHADING_RATE_1x1, nullptr);. Notez que RSSetShadingRate n’entraîne pas de changement de contexte.

VRS et compression delta des couleurs

La compression delta des couleurs (DCC) dispose maintenant d’un mode compatible avec VRS qui réduit la bande passante.
  • VRS génère un signal qui se compresse mal avec la DCC ordinaire.
    • Exemple de signal : ancre, delta, delta nul, delta, delta nul. Répétition.
  • Un mode compatible avec VRS a été ajouté à la DCC.
  • Optimisé pour une compression proche de 4:1 au taux 2 × 2.
  • Des ratios nettement améliorés pour les taux 2 × 1 et 1 × 2.

Éclairage clairsemé

VRS écrit des valeurs de g-buffer en double et les éclaire. Le traitement de données de g-buffer en double est un gaspillage.

Éclairage clairsemé : exploiter le signal VRS

Pour éviter de gaspiller des performances, examinez les g-buffers pour y repérer les valeurs en double, puis identifiez et éclairez seulement un sous-ensemble de pixels. Par exemple, dans un quad de 2 × 2 pixels :
  • 1 pixel pour un taux 2 × 2
  • 2 pixels pour un taux 1 × 2 ou 2 × 1 (motif en damier)
  • 4 pixels pour un taux 1 × 1

Exemple d’implémentation de l’éclairage clairsemé

Voici un exemple qui utilise une taille de tuile de 16 × 16 et une taille de groupe de 8 × 8.
  1. Le thread du nuanceur de calcul compare les valeurs de g-buffer par bloc de 2 × 2 pixels.
  2. Il écrit ensuite de 1 à 4 coordonnées par thread. Chacune comporte 32 bits par coordonnée.
    • 4 bits pour la coordonnée x relative à la tuile.
    • 4 bits pour la coordonnée y relative à la tuile.
    • 3 bits indiquant s’il faut copier la valeur en x, en y ou en diagonale (pour remplir les trous).
    • 21 bits suffisent pour une valeur de profondeur.
  3. L’une des sorties est le nombre d’opérations d’éclairage nécessaires par tuile d’écran.
Pour de l’information à jour, consultez les ressources suivantes :
Variable Rate Compute Shaders - Halving Deferred Lighting Time. Exemple VRSandSparseLighting.

Nuanceur d’éclairage différé

Le nuanceur d’éclairage différé distribue maintenant une wave par thread de tuile au lieu d’un thread par pixel.
  1. La wave effectue n boucles sur tileCount. Les performances s’améliorent lorsque vous supprimez des opérations d’éclairage équivalant à au moins une wave de travail. En comparant les performances de Wave32 et de Wave64 :
    • Wave32 produit une accélération lorsqu’il y a 224 pixels ou moins à éclairer.
    • Wave64 produit une accélération lorsqu’il y a 194 pixels ou moins à éclairer.
  2. Le thread lit 32 bits et décompresse coordinate.xy et la profondeur.
  3. Effectuez l’éclairage comme vous le feriez habituellement. Les listes de lumières restent invariantes par wave.
  4. Terminez avec jusqu’à trois copies de diffusion du résultat éclairé.
    • Un bit pour chaque copie horizontale, verticale et diagonale.
    • XOR1 sert à calculer destination.xy pour chacune des trois copies.
    • Le remplissage des trous est parfait, précalculé et peu coûteux.
Figure 16. Résultat de l’éclairage clairsemé et nombre d’opérations d’éclairage. Résultat de l'éclairage clairsemé et nombre d'opérations d'éclairage La figure 16 montre, à gauche, une image 4K d’une tête de lion en pierre éclairée de façon clairsemée. Le tampon de comptage se trouve à droite. Il montre une diminution importante des opérations d’éclairage. Les g-buffers de la pierre ont été testés pour repérer les valeurs exactement en double, avec une petite plage de profondeur permise (delta LinearZ permis de 0,001). Figure 17. Résultat éclairé, sans remplissage des trous. Résultat éclairé, sans remplissage des trous La figure 17 montre une image agrandie de l’œil du lion sans remplissage des trous.
  • Les trous sont des pixels noirs.
  • 1 × 1 : chaque échantillon est éclairé.
  • 2 × 1 et 1 × 2 ressemblent tous deux à des damiers.
  • 2 × 2 éclaire un échantillon sur quatre.
Notez que le maillage filaire est visible. Le problème ici est que le taux d’ombrage demandé n’est pas nécessairement celui qui est appliqué. Par exemple, prenons un quad de 2 × 2 pixels ombré au taux 2 × 2. Il peut générer de un à quatre appels PS sans surdessin.
  • Un appel si le quad de pixels est couvert par un seul triangle.
  • Quatre appels si le quad est couvert par quatre triangles.
De mauvais LOD de maillage donnent de mauvais résultats VRS. Figure 18. Comparaison des g-buffers avec un delta ajouté de 0,025. Comparaison des g-buffers avec un delta ajouté de 0,025 La figure 18 montre le résultat de l’ajout d’un petit delta permis dans les valeurs lors de la comparaison des g-buffers. Les valeurs des normales sont à gauche. Les valeurs d’albédo sont à droite. L’ajout de ce petit delta a réduit le nombre d’opérations d’éclairage et éliminé le maillage filaire. La luminance de ces images correspond approximativement au nombre de calculs d’éclairage. On s’approche ainsi de l’ensemble optimal de pixels à éclairer, soit 1, 2, 3 ou 4 par taux 2 × 2. Figure 19. Correspondance exacte des g-buffers. Correspondance exacte des g-buffers La figure 19 montre l’image de la tête de lion avec les trous remplis. Il est difficile de voir la différence entre les deux, même agrandies.

Examen des g-buffers avec des optimisations propres à XBOX Series X|S

Il existe une implémentation améliorée qui ne nécessite pas d’examiner le contenu des g-buffers. Pour plus d’information, consultez la vidéo et l’exemple suivants.
Variable Rate Compute Shaders - Halving Deferred Lighting Time Exemple VRSandSparseLighting L’examen des g-buffers est coûteux. Les optimisations propres à XBOX Series X|S comprennent les suivantes :
  1. Lisez la carte de taux d’ombrage. Utilisez le chemin rapide pour les tuiles à plein taux et traitez chaque pixel.
  2. Tirez parti de la surface cmask de rétroaction du taux d’ombrage. Utilisez le chemin rapide pour les tuiles à taux réduit couvertes par un seul triangle.
  3. Pour les tuiles restantes :
    1. Lisez la clé DCC, puis exploitez les deltas nuls.
    2. Effectuez un examen des g-buffers.
      • Utilisez le hachage des g-buffers pour l’optimisation. Cela se fait au prix du stockage et de la bande passante.
      • Combinez la lecture des g-buffers avec des passes qui font autre chose, comme la lecture de la profondeur.
Figure 20. Économies de l’éclairage clairsemé par rapport à l’éclairage différé ordinaire en 4K. Économies de l'éclairage clairsemé par rapport à l'éclairage différé ordinaire en 4K La figure 20 montre des rendus de scènes qui comparent les économies de l’éclairage clairsemé à l’éclairage différé en 4K.
  • cmask et la DCC n’ont pas été utilisés dans ces scènes.
  • La figure n’inclut pas les économies liées à VRS ni au temps de rastérisation.
  • La discontinuité de profondeur autour des piliers entraîne une grande partition de profondeur et un nombre de lumières plus élevé.
  • Dans la scène du bas, le nombre de lumières est relativement faible.
  • La scène du haut a le temps total écoulé le plus élevé. La scène du bas a le temps total écoulé le plus faible. Les améliorations évoluent favorablement avec la complexité de la scène.

Intégration avec d’autres techniques

VRS, mise à l’échelle dynamique de la résolution et suréchantillonnage temporel

VRS ne remplace pas la mise à l’échelle dynamique de la résolution (DRS).
  • Il est possible de réduire le taux d’ombrage lorsque le temps d’image dépasse le temps d’image cible.
  • Les améliorations de VRS sont imprévisibles. Elles dépendent du contenu de la scène. L’éclairage fait aussi partie des autres facteurs.
  • La DRS a un effet plus important et plus prévisible sur le temps d’image.
Les améliorations de VRS sont un bonus.
  • Ne remplacez pas la DRS. Aidez plutôt la DRS à atteindre des résolutions plus élevées.
  • Utilisez le suréchantillonnage temporel vers la résolution de sortie.
Figure 21. VRS par rapport au rendu en damier sur XBOX Series X|S. VRS par rapport au rendu en damier sur XBOX Series X|S La figure 21 compare VRS et la technique de rendu en damier sur XBOX Series X|S.

Facteurs de performances de VRS

Les performances de VRS dépendent de plusieurs facteurs, notamment :
  • L’efficacité de la rastérisation. Le mappage de parallaxe, de relief et par pas de cône est à privilégier.
  • Le contenu de la scène.
  • La surcharge du calcul du taux d’ombrage.
  • Le coût du PS et les goulots d’étranglement matériels en aval.
  • Vos préférences personnelles entre performances et qualité.

Taux d’ombrage par triangle/par appel de dessin

Les taux d’ombrage par triangle/par appel de dessin constituent une excellente amélioration des performances. Ils réduisent le coût GPU par rapport à la carte en espace écran. Par appel de dessin :
  • Les particules et les objets en mouvement rapide sont rendus dans la carte de réflexion.
  • Déterminer si l’objet se trouve derrière une translucidité.
Par triangle :
  • Déterminer si le triangle se trouve de l’autre côté d’une surface d’eau par rapport à la caméra.
  • Déterminer si le triangle est occulté par du feuillage ou un autre objet.

Plans futurs

XBOX seulement

  • Supprimer la carte en espace écran.
    • Écrire le taux d’ombrage directement dans HTile.
    • Effectuer un effacement de profondeur dans la même opération.
  • Faire pivoter les décalages d’échantillon à chaque image.
    • Cela produit une convergence semblable au damier, tout en offrant une couverture parfaite.

PC et XBOX

  • Combiner la détermination du taux d’ombrage avec un nuanceur de post-traitement.
  • Pour les taux inférieurs à 1 × 1, mais pas tout à fait 2 × 2, procédez comme suit :
    • Envisagez d’alterner les taux 2 × 1 et 1 × 2 à chaque image, en particulier pour les titres à 60 hertz.
    • Cela produit un motif en damier où les cases noires reçoivent 2 × 1 à la première image et 1 × 2 à l’image suivante. Les cases blanches reçoivent 1 × 2 à la première image et 2 × 1 à l’image suivante.
    • Utilisez une gigue TAA grossière plutôt qu’une gigue TAA sous-pixel.
    • Ajoutez un taux d’ombrage par triangle.
      • Utilisez la carte en espace écran, sauf si un taux plus grossier est spécifié. C’est un excellent réglage par défaut pour le combinateur.
  • Lancer de rayons.
    • Utilisez la même mesure de fréquence d’ombrage (la carte) pour contrôler le nombre de rayons.
    • Diffusez le résultat du rayon aux pixels adjacents (lancer de rayons clairsemé).

Conclusion

VRS est une optimisation puissante pour les appareils PC et XBOX Series X|S.
  • VRS offre une couverture parfaite et un contrôle local du taux d’ombrage. Il s’agit d’améliorations importantes par rapport aux fonctionnalités existantes.
  • Il est facile d’intégrer VRS à votre moteur. VRS s’intègre bien aux technologies existantes comme la DRS et le suréchantillonnage temporel.
  • Les gains les plus importants de VRS surviennent lors du traitement d’effets traditionnellement coûteux, comme les flous, les ombres et les effets volumétriques.
  • VRS a une surcharge très faible.
Exploitez le signal VRS à l’aide de l’éclairage clairsemé.
  • Éclairer des données de g-buffer en double gaspille des ressources.
  • D’autres passes clairsemées sont possibles.
  • Réutilisez le nombre d’opérations d’éclairage nécessaires par tuile d’écran et leurs coordonnées.
Les exemples ATG fournissent un nuanceur autonome pour calculer le taux d’ombrage. Pour plus d’information sur VRS, consultez l’exemple VRSandSparseLighting dans les exemples pour console du Microsoft GDK.

Étapes suivantes

Si vous souhaitez consulter l’information des documents de présentation liés à cette vue d’ensemble, téléchargez les fichiers suivants à partir du stockage sécurisé des données de téléchargement pour les développeurs XBOX (SDS).
  • Diaporama : XF2019_Graphics_08_Day2_Variable_Rate_Shading_and_Sparse_Lighting.pptx dans Xfest 2019 Graphics Track PowerPoints ([2019.11]-Xfest2019GraphicsTrackPowerPoints.ZIP)
  • Présentation vidéo : XF2019_Graphics_08_Day2_Variable_Rate_Shading_and_Sparse_Lighting.mp4 dans Xfest 2019 Graphics Track Videos ([2019.11]-Xfest2019GraphicsTrackVideos.ZIP)

Télécharger les présentations Microsoft PowerPoint et les vidéos

  1. Accédez aux téléchargements du Game Development Kit (GDK).
  2. Sous Select file type, sélectionnez Conference Materials, puis sélectionnez Confirm.
  3. Sous Select build/version number, choisissez l’une des présentations graphiques suivantes.
    • Xfest 2019 Graphics Track PowerPoints
    • Xfest 2019 Graphics Track Videos
  4. Sélectionnez Download Now, puis attendez la fin du téléchargement du fichier .zip.
  5. Accédez à votre dossier Téléchargements local, puis décompressez (extrayez) les fichiers du dossier compressé.

Télécharger les exemples pour console du GDK mentionnés dans cette rubrique

  1. Accédez aux téléchargements du Game Development Kit (GDK).
  2. Sous Select file type, sélectionnez GDK, puis sélectionnez Confirm.
  3. Sous Select build/version number, choisissez l’option Microsoft GDKX (Sample only) la plus récente.
  4. Sélectionnez Download Now, puis attendez la fin du téléchargement du fichier .zip.
  5. Accédez à votre dossier Téléchargements local, puis décompressez (extrayez) les fichiers du dossier compressé.
  6. Sélectionnez GDKSamples > Graphics. Recherchez l’exemple.

Voir aussi

Spécifications DirectX 12 - Variable Rate Shading Variable Rate Shading Vue d’ensemble de l’ombrage à taux variable Pourquoi l’ombrage à taux variable? Conception de la fonctionnalité d’ombrage à taux variable AMD FidelityFX Variable Shading Variable Rate Shading Update XBOX Series Consoles Variable Rate Compute Shaders - Halving Deferred Lighting Time
Last modified on October 6, 2026