texld - ps_2_0 et plus

Échantillonner une texture sur un échantillonneur particulier, à l’aide des coordonnées de texture fournies. Cette instruction est différente de l’instruction texld - ps_1_4 utilisée dans le nuanceur de pixels version 1_4.

Syntaxe

texld dst, src0, src1

 

Où :

  • dst est un registre de destination.
  • src0 est un registre source qui fournit les coordonnées de texture pour l’exemple de texture.
  • src1 identifie l’échantillonneur (Direct3D 9 asm-ps) (s#), où # spécifie le numéro d’échantillonneur de texture à échantillonner. L’échantillonneur lui a associé une texture et un état d’échantillonneur définis par D3DSAMPLERSTATETYPE.

ps_2_0 et ps_2_x

dst doit être un registre temporaire (r#) et seul le masque .xyzw (masque par défaut) est autorisé.

src0 doit être un registre de coordonnées de texture (t#) ou un registre temporaire (r#), sans modificateur ni swizzle.

src1 doit être un sampler (Direct3D 9 asm-ps) (s#), sans modificateur ni swizzle.

Si le bit de majuscule D3DD3DPSHADERCAPS2_0_NODEPENDENTREADLIMIT n’est pas défini (dans D3DPSHADERCAPS2_0), une instruction de texture donnée (texld, texldp, texldb - ps, texldd ) peut dépendre, au maximum, du troisième ordre. Une instruction de texture dépendante de premier ordre est une instruction de texture dans laquelle :

Une instruction de texture dépendante de second ordre est définie comme une instruction de texture qui lit ou écrit dans un registre temporaire (r#) dont le contenu, avant d’exécuter l’instruction de texture, dépend (peut-être indirectement) du résultat d’une instruction de texture dépendante de premier ordre. Une instruction de texture dépendante (n)th-order dérive d’une instruction de texture (n - 1)th-order.

ps_3_0

src1 doit être un échantillonneur (Direct3D 9 asm-ps) (s#), sans modificateur. Swizzle est autorisé sur src0 ou src1. Le swizzle est appliqué aux coordonnées de texture avant la recherche de texture.

Notes

Cette instruction est prise en charge dans les versions suivantes :

Versions du nuanceur de pixels 1_1 1_2 1_3 1_4 2_0 2_x 2_sw 3_0 3_sw
texld x x x x x

 

Le nombre de coordonnées requises pour src0 pour exécuter l’exemple de texture dépend de la façon dont src1 a été déclaré, ainsi que du composant .w. Les types d’échantillonneurs sont déclarés avec dcl_samplerType (sm2, sm3 - ps asm). Si src1 est déclaré en tant qu’échantillonneur 2D, src0 doit contenir des coordonnées .xy ; si src1 est déclaré en tant qu’échantillonneur de cube ou échantillonneur de volume, src0 doit contenir des coordonnées .xyz. L’échantillonnage d’une texture dont les dimensions sont inférieures à celles présentes dans la coordonnée de texture est autorisé, car les composants de coordonnées de texture supplémentaires sont ignorés.

Si la texture source contient moins de quatre composants, les valeurs par défaut sont placées dans les composants manquants. Les valeurs par défaut dépendent du format de texture, comme indiqué dans le tableau suivant :

Texture Format Valeurs par défaut
D3DFMT_R5G6B5, D3DFMT_R8G8B8, D3DFMT_L8, D3DFMT_L16, D3DFMT_R3G3B2, D3DFMT_CxV8U8, D3DFMT_L6V5U5 A = 1.0
D3DFMT_V8U8, D3DFMT_V16U16, D3DFMT_G16R16, D3DFMT_G16R16F, D3DFMT_G32R32F B = A = 1.0
D3DFMT_A8 R = G = B = 0,0
D3DFMT_R16F, D3DFMT_R32F G = B = A = 1.0
Tous les formats de profondeur/gabarit R = B = 0,0, A = 1.0

 

Instructions du nuanceur de pixels