texldb - ps

Instruction de chargement de texture biaisée. Cette instruction utilise le quatrième élément (.a ou .w) pour biaiser le niveau de détail de l’échantillonnage de texture juste avant l’échantillonnage.

Syntaxe

texldb dst, src0, src1

 

Où :

Pour connaître les restrictions lors de l’utilisation de texldb, consultez l’instruction texld - ps_2_0 et up .

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 capuchon D3DD3DPSHADERCAPS2_0_NODEPENDENTREADLIMIT n’est pas défini (dans D3DPSHADERCAPS2_0), une instruction de texture donnée (texld, texldp, texldb, 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 src1 et, lorsqu’il est appliqué, les résultats de la recherche de texture sont pré-swizzled avant d’être écrits dans dst.

Notes

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

 

texldb biaise le niveau de détail mipmap, calculé normalement dans le cadre de l’exemple de processus par la valeur (signée) dans src0.w. Les valeurs de biais positifs entraînent la sélection de mipmaps plus petits et vice versa. Pour ps_2_0 et ps_2_x, les valeurs de biais peuvent se trouver dans la plage [-3.0, +3.0]. Pour ps_3_0, les valeurs de biais peuvent se trouver dans la plage [-16.0, +15.0]. Les valeurs de biais en dehors de ces plages produisent des résultats non définis. L’état de l’échantillonneur D3DSAMP_MIPMAPLODBIAS est toujours respecté, et le biais texldb est ajouté à cela, mais sur une base par pixel. Une fois le niveau de détail biaisé calculé, D3DSAMP_MAXMIPLEVEL est toujours respecté et l’exemple de texture se produit. Après texldb, le contenu de src0 n’est pas affecté (sauf si dst est le même registre).

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
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