Partager via


Affichages de l’ordre du rastériseur

Les vues triées par ratériseur permettent au code de 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 Order Independent Transparency (OIT) 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.

Aperçu

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 de fil, la fumée, le feu, la végétation et le verre coloré utilisent la transparence pour obtenir l’effet souhaité. Des problèmes se produisent lorsque plusieurs textures qui contiennent la transparence sont alignées les unes avec les autres (fumée devant une clôture devant un bâtiment en verre contenant la végétation, par exemple). Les vues triées par ratériseur 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 triées par ratériseur permettent au code de 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, le « 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 pixels en mode d’exécution de fréquence de pixels, ainsi que le même pixel et la même coordonnée d’exemple en mode de fréquence d’échantillonnage.

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 lues par un appel ultérieur et ne doivent pas affecter les lectures par un appel précédent. Les lectures ROV effectuées par un appel de nuanceur de pixels doivent refléter les écritures par un appel précédent et ne doivent pas refléter les écritures par un appel suivant. Cela est important pour les UAV, car elles sont explicitement omises à partir des garanties d’invariance de sortie définies normalement par l’ordre fixe des résultats du pipeline graphique.

Détails de l’implémentation

Les vues triées par ratériseur (ROVs) sont déclarées avec les nouveaux objets HLSL (High Level Shader Language) suivants et sont uniquement disponibles 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 (tels que RWBuffer etc.).

Résumé de l’API

Les ROV 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 ROV. Notez que la méthode, les structures et la classe d’assistance suivantes référencent le rastériseur :

fonctionnalités Direct3D 11.3

modèle de nuanceur 5.1