Affichages de l’ordre du rastériseur

Les vues ordonnées du rastériseur (ROV) permettent au code du nuanceur de pixels de marquer les liaisons UAV avec une déclaration qui modifie les exigences normales pour l’ordre des résultats du pipeline graphique pour les UAV. Cela permet aux algorithmes OIT (Order Independent Transparency) de fonctionner, ce qui donne de meilleurs résultats de rendu lorsque plusieurs objets transparents sont alignés les uns avec les autres dans une vue.

Vue d’ensemble

Les pipelines graphiques standard peuvent avoir des difficultés à composer correctement plusieurs textures qui contiennent de la transparence. Les objets tels que les clôtures métalliques, la fumée, le feu, la végétation et le verre coloré utilisent la transparence pour obtenir l’effet souhaité. Des problèmes surviennent lorsque plusieurs textures qui contiennent de la transparence sont alignées les unes avec les autres (fumée devant une clôture devant un bâtiment en verre contenant de la végétation, par exemple). Les vues ordonnées du rastériseur (ROV) permettent aux algorithmes OIT sous-jacents d’utiliser les fonctionnalités du matériel pour tenter de résoudre correctement l’ordre de transparence. La transparence est gérée par le nuanceur de pixels.

Les vues ordonnées du rastériseur (ROV) permettent au code du nuanceur de pixels de marquer les liaisons UAV avec une déclaration qui modifie les exigences normales pour l’ordre des résultats du pipeline graphique pour les UAV.

Les roV garantissent l’ordre des accès UAV pour toute paire d’appels de nuanceur de pixels qui se chevauchent. Dans ce cas, « chevauchement » signifie que les appels sont générés par les mêmes appels de dessin et partagent la même coordonnée de pixel en mode d’exécution de fréquence de pixels, et les mêmes coordonnées de pixel et d’échantillon en mode échantillonnage-fréquence.

L’ordre dans lequel les accès ROV qui se chevauchent des appels de nuanceur de pixels sont exécutés est identique à l’ordre dans lequel la géométrie est envoyée. Cela signifie que, pour les appels de nuanceur de pixels qui se chevauchent, les écritures ROV effectuées par un appel de nuanceur de pixels doivent être disponibles pour être lues par un appel ultérieur et ne doivent pas affecter les lectures effectuées par un appel précédent. Les lectures ROV effectuées par un appel de nuanceur de pixels doivent refléter les écritures effectuées par un appel précédent et ne doivent pas refléter les écritures effectuées par un appel ultérieur. Cela est important pour les UAV, car ils sont explicitement omis des garanties d’invariance de sortie normalement définies par l’ordre fixe des résultats du pipeline graphique.

Informations d’implémentation

Les vues triées par rastériseur (ROV) sont déclarées avec les nouveaux objets HLSL (High Level Shader Language) suivants et ne sont disponibles que pour le nuanceur de pixels :

  • RasterizerOrderedBuffer
  • RasterizerOrderedByteAddressBuffer
  • RasterizerOrderedStructuredBuffer
  • RasterizerOrderedTexture1D
  • RasterizerOrderedTexture1DArray
  • RasterizerOrderedTexture2D
  • RasterizerOrderedTexture2DArray
  • RasterizerOrderedTexture3D

Utilisez ces objets de la même manière que d’autres objets UAV (par RWBuffer exemple, etc.).

Résumé des API

Les RV sont une construction HLSL uniquement qui applique une sémantique de comportement différente aux UAV. Toutes les API pertinentes pour les UAV sont également pertinentes pour les RV. Notez que la méthode, les structures et la classe d’assistance suivantes référencent le rastériseur :

Fonctionnalités de Direct3D 11.3

Modèle de nuanceur 5.1