Textures à plusieurs éléments (Direct3D 9)
Les textures traditionnelles sont considérées comme des textures à élément unique. Les textures à plusieurs éléments permettent aux applications d’écrire simultanément dans plusieurs éléments d’une texture à partir du nuanceur de pixels. Le résultat de la prochaine passe de rendu est qu’une application peut utiliser un ou plusieurs éléments comme texture à élément unique, autrement dit, en tant qu’entrées dans le nuanceur de pixels. Ces éléments supplémentaires peuvent être considérés comme un magasin temporaire pour les résultats intermédiaires qui seront utilisés dans un passage ultérieur par l’application.
La première génération de matériel qui expose cette fonctionnalité a les restrictions suivantes :
- Toutes les surfaces de texture à plusieurs éléments sont allouées automatiquement. Cette limitation est traitée en traitant cela comme un nouveau type de format de surface avec plusieurs canaux RVBA entrelacés.
- Tous les éléments de la texture de plusieurs éléments peuvent avoir la même profondeur de bits. Cette limitation est exprimée par le nom des nouveaux formats de surface.
- Une texture à plusieurs éléments ne peut pas être primaire/affichable. En d’autres termes, il doit être désactivé uniquement. Cette limitation est exprimée par l’énumération au format surface.
- Aucun dishering, test alpha, fogging, blending, raster-op ou masquage est autorisé. Aucun traitement de nuanceur post-pixel n’est effectué, à l’exception du test z et du test de gabarit.
- La texture ne peut pas être un mipmap. La création de la chaîne mip échoue.
- Le même élément ne peut pas être défini en tant que texture en même temps qu’il s’agit d’une cible de rendu. Toutefois, différents éléments de la même surface de texture à plusieurs éléments peuvent être simultanément des textures et des cibles de rendu.
- Aucune anticrénelage n’est prise en charge.
- Les surfaces de texture à plusieurs éléments, lorsqu’elles sont utilisées comme texture, ne peuvent pas être filtrées. Cette limitation peut être vérifiée à l’aide de CheckDeviceFormat.
- Les surfaces de texture à plusieurs éléments ne peuvent pas être verrouillées.
- Plusieurs surfaces de texture à plusieurs éléments peuvent être utilisées simultanément en affectant chacune à différentes étapes, tout comme avec les textures normales.
- Les surfaces de texture à plusieurs éléments prennent en charge la conversion de gamma de 2.2 à 1.0 sur une opération de lecture, comme avec d’autres formats de texture.
- Certaines implémentations n’appliquent pas le masque d’écriture de sortie (D3DRS_COLORWRITEENABLE). Ceux qui peuvent avoir 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.
- Effacer efface tous les éléments de la texture à plusieurs éléments qui sont définis comme cible de rendu.
L’utilisation de textures à plusieurs éléments suit les étapes suivantes :
- Les applications découvrent la prise en charge de cette fonctionnalité en vérifiant la disponibilité des formats de texture à plusieurs éléments.
- L’application crée ces surfaces en appelant CreateTexture.
- L’application définit l’aire en tant que cible de rendu à l’aide de l’appel SetRenderTarget. Le nuanceur de pixels fournit une sortie aux surfaces à l’aide de la mov - ps instruction.
- SetTexture est appelé pour définir une surface de texture à plusieurs éléments sur une étape particulière. Comme avec d’autres textures, la même surface est autorisée à être définie sur plusieurs étapes à la fois.
- SetSamplerState est appelé pour définir D3DSAMP_ELEMENTINDEX sur le numéro d’élément approprié dans la texture de plusieurs éléments à partir de laquelle les exemples d’échantillonneurs. La valeur par défaut de cet état est 0, ce qui signifie que les textures autres que plusieurs éléments fonctionnent. La définition de cet état sur un nombre inapproprié entraîne un comportement non défini : si la texture à plusieurs éléments n’est que deux éléments larges, mais que l’échantillonneur est invité à échantillonner à partir du quatrième élément, par exemple.
Prise en charge des API
Voici un résumé des éléments d’API qui prennent en charge les textures à plusieurs éléments :
Le format D3DFMT_MULTI2_ARGB8 surface exprime la nature entrelacée du format.
L’état de l’échantillonneur D3DSAMP_ELEMENTINDEX indique l’index d’élément à utiliser.
Les états de rendu suivants prennent en charge les textures à plusieurs éléments :
- D3DRS_COLORWRITEENABLE1
- D3DRS_COLORWRITEENABLE2
- D3DRS_COLORWRITEENABLE3
D3DRS_COLORWRITEENABLE s’applique au zéro de la cible de rendu (ou de l’élément).
L’indicateur D3DPMISCCAPS_INDEPENDENTWRITEMASKS indique que l’appareil prend en charge des masques d’écriture indépendants pour plusieurs textures d’élément ou plusieurs cibles de rendu.
Rubriques connexes