Partager via


Cibles de rendu multiples (Direct3D 9)

MrT (Multiple Render Targets) fait référence à la possibilité d’effectuer un rendu sur plusieurs surfaces (voir IDirect3D9Surface) avec un seul appel de dessin. Ces surfaces peuvent être créées indépendamment les unes des autres. Les cibles de rendu peuvent être définies à l’aide de IDirect3DDevice9::SetRenderTarget.

Plusieurs cibles de rendu ont les restrictions suivantes :

  • Toutes les surfaces cibles de rendu utilisées ensemble doivent avoir la même profondeur de bits, mais peuvent être de formats différents, sauf si la limite de D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS est définie.

  • Toutes les surfaces d’une cible de rendu multiple doivent avoir la même largeur et la même hauteur.

  • Certaines implémentations ne peuvent pas effectuer d’opérations post-nuanceur de pixels sur plusieurs cibles de rendu, notamment : pas de tramage, de test alpha, pas de buée, pas de fusion ou de masquage, à l’exception du test z et du test de gabarit. Les appareils qui peuvent prendre en charge les opérations post-nuanceur de pixels définissent le bit majuscule sur D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING.

    Lorsque la limite de D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING est définie, vous devez d’abord consulter IDirect3D9::CheckDeviceFormat avec le résultat USAGE_QUERY_POSTPIXELSHADER_BLENDING pour le format de surface spécifique. Si la valeur est false, aucune opération de fusion de nuanceur post-pixels n’est disponible pour ce format de surface spécifique. Si la valeur est true, l’appareil doit appliquer le même état à toutes les cibles de rendu simultanées comme suit :

    • Fusion alpha : la valeur de couleur dans oCi est fusionnée avec la cible de rendu ith.
    • Test alpha : la comparaison se produit avec oC0. Si la comparaison échoue, le test de pixels est terminé pour toutes les cibles de rendu.
    • Brouillard : la cible de rendu 0 est journalisée. Les autres cibles de rendu ne sont pas définies. Les implémentations peuvent choisir de les embrouillées à l’aide du même état.
    • Dithering : non défini.
  • Aucun anticrénelage n’est pris en charge.

  • Certaines implémentations n’appliquent pas le masque d’écriture de sortie (D3DRS_COLORWRITEENABLE). Ceux qui peuvent, ont des masques d’écriture de couleur indépendants. Cela est exprimé à l’aide d’un nouveau bit de fonctionnalité. Le nombre de masques d’écriture de couleur indépendants disponibles est égal au nombre maximal d’éléments dont l’appareil est capable.

Nouvelles majuscules matérielles :

D3DCAPS9.NumSimultaneousRTs         
// The value is 1 for all hardware except those that  
//   can support this feature. It is never 0.
D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS - True if the hardware can support it
D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING - True if the hardware can support it

Pipeline de pixels