Affichages triés par rastérisation
Les vues pixellisées (ROVs) autorisent le code de nuanceur de pixels à marquer des liaisons de vue d’accès non triée (UAV) avec une déclaration qui modifie les exigences normales pour l’ordre des résultats de pipeline graphique pour UAVs. Cela permet l’utilisation d’algorithmes de transparence OIT (Order-Independent transparent), 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 à converser correctement ensemble plusieurs textures qui contiennent de la transparence. Les objets tels que les clôtures de câble, les fumées, les incendies, les végétations et les verres de couleur utilisent la transparence pour atteindre l’effet souhaité. Des problèmes surviennent lorsque plusieurs textures contenant de la transparence sont alignées les unes avec les autres (fumée devant une clôture devant une couche de verre contenant de la végétation, par exemple). Les vues ROVs (rastériseur-ordered views) 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 ROVs (rastériseur-ordered views) autorisent le code du nuanceur de pixels à marquer des liaisons UAV avec une déclaration qui modifie les exigences normales pour l’ordre des résultats de la canalisation Graphics pour UAVs.
ROVs garantissent l’ordre des accès à UAV pour toutes les paires d’appels de nuanceur de pixels qui se chevauchent. Dans ce cas, « se chevauchant » 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 en pixels, et les mêmes coordonnées et coordonnée de l’échantillon en mode échantillonnage-fréquence.
L’ordre dans lequel les accès ROV se chevauchant aux appels de nuanceur de pixels sont exécutés est identique à l’ordre dans lequel la géométrie est soumise. 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 par un appel précédent et ne doivent pas refléter les écritures par un appel ultérieur. Cela est important pour UAVs, car ils sont explicitement omis des garanties de non-variance de sortie définies normalement par l’ordre fixe des résultats de la canalisation Graphics.
Informations d’implémentation
Les vues ROVs (rastériseur-ordered views) sont déclarées avec les nouveaux objets HLSL (High Level Shader Language) suivants, et sont uniquement disponibles pour le nuanceur de pixels :
RasterizerOrderedBufferRasterizerOrderedByteAddressBufferRasterizerOrderedStructuredBufferRasterizerOrderedTexture1DRasterizerOrderedTexture1DArrayRasterizerOrderedTexture2DRasterizerOrderedTexture2DArrayRasterizerOrderedTexture3D
Utilisez ces objets de la même façon que les autres objets UAV (tels que RWBuffer etc.).
Résumé des API
Les ROVs sont une construction en HLSL uniquement qui applique une sémantique de comportement différente à UAVs. Toutes les API relatives à UAVs sont également pertinentes pour ROVs. Notez que la méthode, les structures et la classe d’assistance suivantes référencent le rastériseur :
- D3D12 _ RASTÉRISEUR _ desc : structure contenant la description du rastériseur.
- D3D12 _ _ _ _ Options D3D12 données de la fonctionnalité : structure contenant un booléen, indiquant la prise en charge.
- CheckFeatureSupport : méthode permettant d’accéder aux fonctionnalités prises en charge.
- CD3DX12 _ RASTÉRISEUR _ desc : classe d’assistance pour la création de descriptions de rastériseur.
- D3D12 _ Description de l' _ _ état _ du pipeline Graphics : structure contenant l’état du pipeline.