texldp - ps
Instruction de chargement de texture projetée. Cette instruction divise la coordonnée de texture d’entrée par le quatrième élément (.a ou .w) juste avant l’échantillonnage.
Syntaxe
texldp dst, src0, src1 |
---|
where
- dst est le registre de destination.
- src0 est un registre source qui fournit les coordonnées de texture pour l’exemple de texture. Consultez Registre des coordonnées 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.
Pour connaître l’ensemble des restrictions lors de l’utilisation de texldp, consultez texld.
Notes
texldp effectue une projection sur les coordonnées lues à partir de src0 avant d’exécuter l’exemple. Chaque coordonnée de texture est divisée par src0.w, puis la texture est échantillonnées. Lorsque texldp se termine, le contenu de src0 n’est pas affecté (sauf si dst est le même registre). Une alternative à l’utilisation de texldp consiste à effectuer manuellement la division de projection dans le nuanceur. Toutefois, l’exécution de la division dans le code de nuanceur est généralement plus lente que lorsque l’instruction texldp est effectuée. Par conséquent, évitez ces mathématiques supplémentaires lorsque cela est possible.
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 .xyw ; si src1 est déclaré en tant qu’échantillonneur de cube ou échantillonneur de volume, src0 doit contenir des coordonnées .xyzw. L’échantillonnage d’une texture 2D avec des coordonnées .xyzw est autorisé (la coordonnée .z est ignorée).
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 pour les composants manquants |
---|---|
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 |
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 |
---|---|---|---|---|---|---|---|---|---|
texldp | x | x | x | x | x |
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 cap de 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 :
- src0 est un registre temporaire (r#)
- dst a été écrit auparavant, maintenant réécrit.
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
Pour ps_3_0, src1 doit être un échantillonneur (Direct3D 9 asm-ps) (s#), sans modificateur. Swizzle est autorisé sur src1 et, lorsqu’il est appliqué, les résultats de la recherche de texture sont pré-swizzled avant d’être écrits dans dst.
Rubriques connexes