Partager via


Cibles de rendu multiples (Direct3D 9)

Plusieurs cibles de rendu (MRT) font 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 différents formats, 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 de nuanceur post-pixels sur plusieurs cibles de rendu, notamment : pas de trame, de test alpha, pas de fogging, pas de fusion ou de masquage, à l’exception du test z-test et du gabarit. Les appareils qui peuvent prendre en charge les opérations de nuanceur post-pixel définissent le bit de limite sur D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING.

    Lorsque la limite de D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING est définie, vous devez d’abord consulter le IDirect3D9 ::CheckDeviceFormat avec le résultat USAGE_QUERY_POSTPIXELSHADER_BLENDING pour le format d’aire 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 est censé 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 arrêté pour toutes les cibles de rendu.
    • Brouillard : la cible de rendu 0 sera journalisée. Les autres cibles de rendu ne sont pas définies. Les implémentations peuvent choisir de les brouillardr à l’aide du même état.
    • Dithering : Undefined.
  • Aucune anticrénelage n’est prise 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 limites 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

de pipeline de pixels