énumération D3DSHADER_INSTRUCTION_OPCODE_TYPE (d3d9types.h)

Cette section répertorie les codes d’opération du nuanceur qui peuvent être contenus dans les 16 premiers bits (0 - 15) d’un jeton d’instruction. Les sections qui suivent décrivent le format de jeton des instructions qui correspondent aux codes d’opération.

Syntax

typedef enum _D3DSHADER_INSTRUCTION_OPCODE_TYPE {
  D3DSIO_NOP,
  D3DSIO_MOV,
  D3DSIO_ADD,
  D3DSIO_SUB,
  D3DSIO_MAD,
  D3DSIO_MUL,
  D3DSIO_RCP,
  D3DSIO_RSQ,
  D3DSIO_DP3,
  D3DSIO_DP4,
  D3DSIO_MIN,
  D3DSIO_MAX,
  D3DSIO_SLT,
  D3DSIO_SGE,
  D3DSIO_EXP,
  D3DSIO_LOG,
  D3DSIO_LIT,
  D3DSIO_DST,
  D3DSIO_LRP,
  D3DSIO_FRC,
  D3DSIO_M4x4,
  D3DSIO_M4x3,
  D3DSIO_M3x4,
  D3DSIO_M3x3,
  D3DSIO_M3x2,
  D3DSIO_CALL,
  D3DSIO_CALLNZ,
  D3DSIO_LOOP,
  D3DSIO_RET,
  D3DSIO_ENDLOOP,
  D3DSIO_LABEL,
  D3DSIO_DCL,
  D3DSIO_POW,
  D3DSIO_CRS,
  D3DSIO_SGN,
  D3DSIO_ABS,
  D3DSIO_NRM,
  D3DSIO_SINCOS,
  D3DSIO_REP,
  D3DSIO_ENDREP,
  D3DSIO_IF,
  D3DSIO_IFC,
  D3DSIO_ELSE,
  D3DSIO_ENDIF,
  D3DSIO_BREAK,
  D3DSIO_BREAKC,
  D3DSIO_MOVA,
  D3DSIO_DEFB,
  D3DSIO_DEFI,
  D3DSIO_TEXCOORD,
  D3DSIO_TEXKILL,
  D3DSIO_TEX,
  D3DSIO_TEXBEM,
  D3DSIO_TEXBEML,
  D3DSIO_TEXREG2AR,
  D3DSIO_TEXREG2GB,
  D3DSIO_TEXM3x2PAD,
  D3DSIO_TEXM3x2TEX,
  D3DSIO_TEXM3x3PAD,
  D3DSIO_TEXM3x3TEX,
  D3DSIO_RESERVED0,
  D3DSIO_TEXM3x3SPEC,
  D3DSIO_TEXM3x3VSPEC,
  D3DSIO_EXPP,
  D3DSIO_LOGP,
  D3DSIO_CND,
  D3DSIO_DEF,
  D3DSIO_TEXREG2RGB,
  D3DSIO_TEXDP3TEX,
  D3DSIO_TEXM3x2DEPTH,
  D3DSIO_TEXDP3,
  D3DSIO_TEXM3x3,
  D3DSIO_TEXDEPTH,
  D3DSIO_CMP,
  D3DSIO_BEM,
  D3DSIO_DP2ADD,
  D3DSIO_DSX,
  D3DSIO_DSY,
  D3DSIO_TEXLDD,
  D3DSIO_SETP,
  D3DSIO_TEXLDL,
  D3DSIO_BREAKP,
  D3DSIO_PHASE,
  D3DSIO_COMMENT,
  D3DSIO_END,
  D3DSIO_FORCE_DWORD
} D3DSHADER_INSTRUCTION_OPCODE_TYPE;

Constantes

 
D3DSIO_NOP
L’instruction NOP effectue une opération sans opération ou aucune opération.


Format

jeton d’instruction qui contient D3DSIO_NOP.
D3DSIO_MOV
L’instruction MOV déplace les données entre les registres.


Format

jeton d’instruction qui contient D3DSIO_MOV. La longueur de l’instruction est de 2.

jeton de paramètre de destination.

jeton de paramètre source.


Commentaires

Peut être utilisé pour les données à virgule flottante et pour mettre à jour les registres d’adresses. Lorsqu’elles sont utilisées pour mettre à jour les registres d’adresses, les valeurs sont converties à virgule flottante à l’aide de l’arrondi au plus proche.
D3DSIO_ADD
L’instruction ADD ajoute deux vecteurs sources et stocke le résultat dans la destination.


Format

jeton d’instruction qui contient D3DSIO_ADD.

jeton de paramètre de destination.

premier jeton de paramètre source.

deuxième jeton de paramètre source.
D3DSIO_SUB
L’instruction SUB soustrait deux vecteurs sources et stocke le résultat dans la destination.


Format

jeton d’instruction qui contient D3DSIO_SUB. La longueur de l’instruction est de 3.

jeton de paramètre de destination.

premier jeton de paramètre source.

deuxième jeton de paramètre source.
D3DSIO_MAD
L’instruction MAD multiplie la première et la deuxième source et ajoute la troisième source.


Format

jeton d’instruction qui contient D3DSIO_MAD. La longueur de l’instruction est de 4.

jeton de paramètre de destination.

premier jeton de paramètre source.

deuxième jeton de paramètre source.

troisième jeton de paramètre source.
D3DSIO_MUL
L’instruction MUL multiplie deux vecteurs sources et stocke le résultat dans la destination.


Format

jeton d’instruction qui contient D3DSIO_MUL. La longueur de l’instruction est de 3.

jeton de paramètre de destination.

premier jeton de paramètre source.

deuxième jeton de paramètre source.
D3DSIO_RCP
L’instruction RCP calcule la réciproque de la source et stocke le résultat dans la destination.


Format

jeton d’instruction qui contient D3DSIO_RCP. La longueur de l’instruction est de 2.

jeton de paramètre de destination.

jeton de paramètre source. Nécessite l’utilisation explicite du swizzle de réplication, c’est-à-dire que le composant swizzle X, Y, Z ou W (ou l’équivalent R, G, B ou A) doit être spécifié.
D3DSIO_RSQ
L’instruction RSQ calcule la racine carrée réciproque de la source et stocke le résultat dans la destination.


Format

jeton d’instruction qui contient D3DSIO_RSQ. La longueur de l’instruction est de 2.

jeton de paramètre de destination.

jeton de paramètre source. Nécessite l’utilisation explicite du swizzle de réplication, c’est-à-dire que le composant swizzle X, Y, Z ou W (ou l’équivalent R, G, B ou A) doit être spécifié.
D3DSIO_DP3
L’instruction DP3 calcule le produit à points à trois composants (RVB) des registres sources et stocke le résultat dans la destination.


Format

jeton d’instruction qui contient D3DSIO_DP3. La longueur de l’instruction est de 3.

jeton de paramètre de destination.

premier jeton de paramètre source.

deuxième jeton de paramètre source.
D3DSIO_DP4
L’instruction DP4 calcule le produit à points à quatre composants (RVBA) des registres sources et stocke le résultat dans la destination.


Format

jeton d’instruction qui contient D3DSIO_DP4. La longueur de l’instruction est de 3.

jeton de paramètre de destination.

premier jeton de paramètre source.

deuxième jeton de paramètre source.
D3DSIO_MIN
L’instruction MIN détermine le nombre minimal de sources et stocke la source minimale dans la destination.


Format

jeton d’instruction qui contient D3DSIO_MIN. La longueur de l’instruction est de 3.

jeton de paramètre de destination.

premier jeton de paramètre source.

deuxième jeton de paramètre source.
D3DSIO_MAX
L’instruction MAX détermine le nombre maximal de sources et stocke la source maximale dans la destination.


Format

jeton d’instruction qui contient D3DSIO_MAX. La longueur de l’instruction est de 3.

jeton de paramètre de destination.

premier jeton de paramètre source.

deuxième jeton de paramètre source.
D3DSIO_SLT
L’instruction SLT détermine si la première source est inférieure à la deuxième source et stocke le signe (1,0f pour TRUE et 0,0f pour FALSE) dans la destination.


Format

jeton d’instruction qui contient D3DSIO_SLT. La longueur de l’instruction est de 3.

jeton de paramètre de destination.

premier jeton de paramètre source.

deuxième jeton de paramètre source.
D3DSIO_SGE
L’instruction SGE détermine si la première source est supérieure ou égale à la deuxième source et stocke le signe (1,0f pour TRUE et 0,0f pour FALSE) dans la destination.


Format

jeton d’instruction qui contient D3DSIO_SGE. La longueur de l’instruction est de 3.

jeton de paramètre de destination.

premier jeton de paramètre source.

deuxième jeton de paramètre source.
D3DSIO_EXP
L’instruction EXP fournit une précision exponentielle de 2x.


Format

jeton d’instruction qui contient D3DSIO_EXP. La longueur de l’instruction est de 2.

jeton de paramètre de destination.

jeton de paramètre source. Nécessite l’utilisation explicite de répliquer swizzle, c’est-à-dire que le composant swizzle X, Y, Z ou W (ou le R, G, B ou A équivalent) doit être spécifié.


Commentaires

L’instruction EXP fournit au moins 21 bits de précision.
D3DSIO_LOG
L’instruction LOG calcule log₂(x) de précision complète.


Format

jeton d’instruction qui contient D3DSIO_LOG. La longueur de l’instruction est de 2.

jeton de paramètre de destination.

jeton de paramètre source. Le jeton de paramètre source nécessite l’utilisation explicite de la réplication swizzle, c’est-à-dire que le composant swizzle X, Y, Z ou W (ou le R, G, B ou A équivalent) doit être spécifié.


Commentaires

L’instruction LOG fournit au moins 21 bits de précision.
D3DSIO_LIT
L’instruction LIT fournit une prise en charge partielle de l’éclairage en calculant les coefficients d’éclairage à partir de deux produits à points et d’un exposant.


Format

jeton d’instruction qui contient D3DSIO_LIT. La longueur de l’instruction est de 2.

jeton de paramètre de destination.

jeton de paramètre source.


Commentaires

L’arithmétique de précision réduite est acceptable dans l’évaluation du composant Y de destination (dans le masque d’écriture). Une implémentation doit prendre en charge au moins huit bits de fraction dans l’argument power. Les produits dot sont calculés avec des vecteurs normalisés, et les limites de pince sont de -128 à 128. L’erreur doit correspondre à une combinaison LOGP et EXPP , ou à un minimum de bits significatifs (LSB) pour un composant couleur 8 bits.
D3DSIO_DST
L’instruction DST calcule un vecteur de distance et stocke le résultat dans la destination.


Format

jeton d’instruction qui contient D3DSIO_DST. La longueur de l’instruction est de 3.

jeton de paramètre de destination.

premier jeton de paramètre source.

deuxième jeton de paramètre source.
D3DSIO_LRP
L’instruction LRP interpole linéairement entre les deuxième et troisième sources selon une proportion spécifiée dans la première source, et stocke le résultat dans la destination.


Format

jeton d’instruction qui contient D3DSIO_LRP. La longueur de l’instruction est de 4.

jeton de paramètre de destination.

premier jeton de paramètre source.

deuxième jeton de paramètre source.

troisième jeton de paramètre source


Commentaires

L’instruction LRP peut être utilisée avec des données à virgule flottante ou des données entières.

Lorsque l’instruction LRP est utilisée pour mettre à jour les registres d’entiers, les valeurs sont converties à virgule flottante à l’aide de l’arrondi en entier le plus proche.

L’instruction LRP doit être utilisée pour mettre à jour les registres d’adresses.
D3DSIO_FRC
L’instruction FRC retourne la partie fractionnaire de chaque composant d’entrée.


Format

jeton d’instruction qui contient D3DSIO_FRC. La longueur de l’instruction est de 2.

jeton de paramètre de destination.

jeton de paramètre source.


Commentaires

Chaque composant du résultat est dans la plage comprise entre 0,0 et 1,0.

Pour le vertex de version ou la version de pixels 1_1, les masques d’écriture autorisés sont Y et XY (X n’est pas autorisé).
D3DSIO_M4x4
L’instruction M4x4 calcule le produit d’un vecteur à 4 composants et d’une matrice 4x4, et stocke le résultat dans la destination.


Format

jeton d’instruction qui contient D3DSIO_M4x4. La longueur de l’instruction est de 3.

jeton de paramètre de destination. Le masque XYZW est obligatoire.

premier jeton de paramètre source.

deuxième jeton de paramètre source. Les composants Swizzle et les modificateurs de negate ne sont pas valides.
D3DSIO_M4x3
L’instruction M4x3 calcule le produit d’un vecteur à 4 composants et d’une matrice 4x3, et stocke le résultat dans la destination.


Format

jeton d’instruction qui contient D3DSIO_M4x3. La longueur de l’instruction est de 3.

jeton de paramètre de destination. Le masque XYZ est obligatoire.

premier jeton de paramètre source.

deuxième jeton de paramètre source. Les composants Swizzle et les modificateurs de negate ne sont pas valides.
D3DSIO_M3x4
L’instruction M3x4 calcule le produit d’un vecteur à 3 composants et d’une matrice 3x4, et stocke le résultat dans la destination.


Format

jeton d’instruction qui contient D3DSIO_M3x4. La longueur de l’instruction est de 3.

jeton de paramètre de destination. Le masque XYZW est obligatoire.

premier jeton de paramètre source.

deuxième jeton de paramètre source. Les composants Swizzle et les modificateurs de negate ne sont pas valides.
D3DSIO_M3x3
L’instruction M3x3 calcule le produit d’un vecteur à 3 composants et d’une matrice 3x3, et stocke le résultat dans la destination.


Format

jeton d’instruction qui contient D3DSIO_M3x3. La longueur de l’instruction est de 3.

jeton de paramètre de destination. Le masque XYZ est obligatoire.

premier jeton de paramètre source.

deuxième jeton de paramètre source. Les composants Swizzle et les modificateurs de negate ne sont pas valides.
D3DSIO_M3x2
L’instruction M3x2 calcule le produit d’un vecteur à 3 composants et d’une matrice 3x2, et stocke le résultat dans la destination.


Format

jeton d’instruction qui contient D3DSIO_M3x2. La longueur de l’instruction est de 3.

jeton de paramètre de destination. Le masque XY est obligatoire.

premier jeton de paramètre source.

deuxième jeton de paramètre source. Les composants Swizzle et les modificateurs de negate ne sont pas valides.
D3DSIO_CALL
L’instruction CALL effectue un appel de fonction à l’instruction marquée avec l’index d’étiquette fourni.


Format

jeton d’instruction qui contient D3DSIO_CALL.

jeton d’étiquette (jeton de paramètre source utilisant le type de registre D3DSPR_LABEL).
D3DSIO_CALLNZ
L’instruction CALLNZ effectue un appel conditionnel (si ce n’est pas zéro) à l’instruction marquée par l’index d’étiquette.


Format

jeton d’instruction qui contient D3DSIO_CALLNZ.

jeton d’étiquette (jeton de paramètre source utilisant le type de registre D3DSPR_LABEL).

jeton de paramètre source utilisant le type de registre D3DSPR_CONSTBOOL.
D3DSIO_LOOP
L’instruction LOOP commence une BOUCLE... Bloc ENDLOOP .


Format

jeton d’instruction qui contient D3DSIO_LOOP.

premier jeton de paramètre source à l’aide du type de registre D3DSPR_LOOP. Le composant X spécifie le nombre d’itérations ; le composant Y spécifie la valeur initiale du registre du compteur de boucles actuel ; et le composant Z spécifie l’incrément du registre du compteur de boucle actuel. Ce registre nécessite une utilisation explicite du swizzle de réplication, c’est-à-dire . Les masques de composant XYZW (RGBA) doivent être spécifiés.


Commentaires

Seuls les registres d’entiers peuvent être utilisés dans l’instruction LOOP. L’instruction LOOP est fournie pour l’itération et prend en charge un registre de compteur de boucles incrémenté automatiquement qui peut être utilisé pour indexer le tableau de constantes. Lorsqu’il est imbriqué, chaque fois que le registre du compteur de boucle est utilisé, il fait référence à la boucle actuelle.
D3DSIO_RET
L’instruction RET retourne à partir d’une sous-routine ou marque la fin de la fonction main.


Format

jeton d’instruction qui contient D3DSIO_RET.


Commentaires

Si un nuanceur ne contient aucune sous-routine, l’utilisation de RET à la fin du programme main est facultative.
D3DSIO_ENDLOOP
L’instruction ENDLOOP marque la fin d’un bloc LOOP.


Format

jeton d’instruction qui contient D3DSIO_ENDLOOP.
D3DSIO_LABEL
L’instruction LABEL marque l’instruction suivante avec un index d’étiquette.


Format

jeton d’instruction qui contient D3DSIO_LABEL.

jeton de paramètre source utilisant le type de registre D3DSPR_LABEL et un numéro de registre.
D3DSIO_DCL
Spécifie le jeton d’instruction DCL.
D3DSIO_POW
L’instruction POW calcule la précision complète (première source)deuxième source et stocke le résultat dans la destination.


Format

jeton d’instruction qui contient D3DSIO_POW. La longueur de l’instruction est de 3.

jeton de paramètre de destination.

premier jeton de paramètre source.

deuxième jeton de paramètre source.


Commentaires

Les deux sources nécessitent une utilisation explicite de la réplication swizzle, c’est-à-dire que le composant swizzle X, Y, Z ou W (ou le R, G, B ou un équivalent) doit être spécifié.

L’instruction POW fournit au moins 15 bits de précision.
D3DSIO_CRS
L’instruction CRS calcule un produit croisé à l’aide de la règle de droite.


Format

jeton d’instruction qui contient D3DSIO_CRS.

jeton de paramètre de destination.

premier jeton de paramètre source.

deuxième jeton de paramètre source.
D3DSIO_SGN
L’instruction SGN détermine le signe de la source et stocke le signe (-1 pour négatif, 0 pour 0 et 1 pour positif) dans la destination.


Format

jeton d’instruction qui contient D3DSIO_SGN. La longueur de l’instruction est de 4.

jeton de paramètre de destination.

premier jeton de paramètre source.

deuxième jeton de paramètre source utilisant le type de registre D3DSPR_TEMP.

troisième jeton de paramètre source utilisant le type de registre D3DSPR_TEMP.


Commentaires

Les deuxième et troisième sources peuvent être utilisées comme registres temporaires.
D3DSIO_ABS
L’instruction ABS calcule la valeur absolue de la source et stocke le résultat dans la destination.


Format

jeton d’instruction qui contient D3DSIO_ABS.

jeton de paramètre de destination.

jeton de paramètre source.
D3DSIO_NRM
L’instruction NRM normalise un vecteur 4D.


Format

jeton d’instruction qui contient D3DSIO_NRM. La longueur de l’instruction est de 2.

jeton de paramètre de destination.

jeton de paramètre source.
D3DSIO_SINCOS
L’instruction SINCOS calcule le sinus et le cosinus de la source.
D3DSIO_REP
L’instruction REP démarre une instruction REPEAT... Bloc ENDREP .


Format

jeton d’instruction qui contient D3DSIO_REP.

jeton de paramètre source utilisant le type de registre D3DSPR_CONSTINT. Le composant X spécifie le nombre d’itérations.


Commentaires

Seuls les registres d’entiers peuvent être utilisés dans l’instruction REP .
D3DSIO_ENDREP
L’instruction ENDREP marque la fin d’un bloc REP .


Format

jeton d’instruction qui contient D3DSIO_ENDREP.
D3DSIO_IF
L’instruction IF commence un bloc IF.


Format

jeton d’instruction qui contient D3DSIO_IF.

jeton de paramètre source utilisant le type de registre D3DSPR_CONSTBOOL.


Commentaires

Si le registre booléen source a la valeur TRUE, le code placé entre l’instruction IF et l’instruction ELSE correspondante (ou ENDIF si ELSE n’est pas utilisé) est exécuté ; sinon, l’exécution passe au code inclus dans les instructions ELSE-ENDIF (ELSE existe) ou hors du bloc IF (ELSE n’existe pas).
D3DSIO_IFC
L’instruction IFC commence un bloc SI par une comparaison.


Format

jeton d’instruction qui contient D3DSIO_IFC.

premier jeton de paramètre source.

deuxième jeton de paramètre source.


Commentaires

L’instruction IFC ignore un bloc de code, en fonction de la comparaison entre les sources.

Les deux sources nécessitent l’utilisation explicite du swizzle de réplication, c’est-à-dire que le composant swizzle X, Y, Z ou W (ou l’équivalent R, G, B ou A) doit être spécifié.

Si la comparaison entre tous les composants sources est TRUE, le code inclus par l’instruction IF et l’instruction ELSE correspondante (ou l’instruction ENDIF si ELSE n’est pas utilisé) est exécuté ; sinon, l’exécution passe au code placé par les instructions ELSE-ENDIF (ELSE existe) ou hors du bloc IF (ELSE n’existe pas).
D3DSIO_ELSE
L’instruction ELSE démarre un bloc ELSE.


Format

jeton d’instruction qui contient D3DSIO_ELSE.


Commentaires

Si le registre booléen source dans l’instruction IF correspondante a la valeur true, le code qui est placé par le SI et le ELSE correspondant est exécuté, sinon l’exécution passe au code qui est placé par les instructions ELSE et ENDIF .
D3DSIO_ENDIF
L’instruction ENDIF met fin à un if... Bloc ELSE .


Format

jeton d’instruction qui contient D3DSIO_ENDIF.
D3DSIO_BREAK
L’instruction BREAK sort de la boucle actuelle au niveau de l’endloop ou de l’endrep le plus proche.


Format

jeton d’instruction qui contient D3DSIO_BREAK.
D3DSIO_BREAKC
L’instruction BREAKC sort de la boucle actuelle au niveau de l’endloop ou du endrep le plus proche, en fonction des critères de comparaison entre deux sources.


Format

jeton d’instruction qui contient D3DSIO_BREAKC.

premier jeton de paramètre source.

deuxième jeton de paramètre source.
D3DSIO_MOVA
L’instruction MOVA déplace les données d’un registre à virgule flottante vers un registre entier.


Format

jeton d’instruction qui contient D3DSIO_MOVA. La longueur de l’instruction est de 2.

jeton de paramètre de destination.

jeton de paramètre source.


Commentaires

Les valeurs sont converties à virgule flottante à l’aide de l’arrondi au plus proche.

Le registre d’adresses est le seul registre de destination autorisé.
D3DSIO_DEFB
L’instruction DEFB définit une valeur de constante booléenne, qui doit être chargée chaque fois qu’un nuanceur est défini sur un appareil. Cette instruction peut être utilisée dans le nuanceur de vertex 2_0 et versions ultérieures. Les constantes booléennes définies par le nuanceur de vertex actuel sont prioritaires sur les constantes définies par l’opération D3DDP2OP_SETVERTEXSHADERCONSTB.


Format

jeton d’instruction qui contient D3DSIO_DEFB. La longueur de l’instruction est de 2.

jeton de paramètre de destination. Le type de registre doit être D3DSPR_CONSTBOOL.

Le jeton DWORD contient la valeur booléenne, où non zéro indique TRUE ; zéro indique FALSE.
D3DSIO_DEFI
L’instruction DEFI définit une valeur de constante entière, qui doit être chargée chaque fois qu’un nuanceur est défini sur un appareil. Les constantes définies par le nuanceur de vertex actuel sont prioritaires sur les constantes définies par l’opération D3DDP2OP_SETVERTEXSHADERCONSTI.


Format

jeton d’instruction qui contient D3DSIO_DEFI. La longueur de l’instruction est de 5.

jeton de paramètre de destination. Le type de registre doit être D3DSPR_CONSTINT.

4 Le jeton DWORD contient quatre entiers signés 32 bits.
D3DSIO_TEXCOORD
L’instruction TEXCOORD copie les données de coordonnées de texture (UVW1) sous forme de données de couleur (RVBA).


Format

jeton d’instruction qui contient D3DSIO_TEXCOORD.

jeton de paramètre de destination.

jeton de paramètre source. Le jeton de paramètre source est pour le nuanceur de pixels version 1_4 uniquement.


Commentaires

Les instructions d’assembleur texcoord et texcrd utilisent le code d’opération D3DSIO_TEXCOORD.

L’instruction texcoord s’applique aux versions de nuanceur de pixels 1_0 à 1_3 ; il a un jeton de paramètre de destination et aucun jeton de paramètre source qui lui est associé.

L’instruction texcrd s’applique au nuanceur de pixels version 1_4 ; un jeton de paramètre de destination et un jeton de paramètre source lui sont associés.
D3DSIO_TEXKILL
L’instruction TEXKILL annule le rendu du pixel actuel si l’un des trois premiers composants (UVW) des coordonnées de texture est inférieur à zéro.


Format

jeton d’instruction qui contient D3DSIO_TEXKILL.

jeton de paramètre de destination (se comporte de la même manière qu’un jeton source).


Commentaires

Si l’un des composants du jeton de destination est inférieur à zéro, arrêtez le nuanceur de pixels et ignorez les sorties.


Les fonctionnalités suivantes s’appliquent au jeton de destination :

  • Un type de registre temporaire (D3DSPR_TEMP) ou de texture (D3DSPR_TEXTURE) doit être utilisé.

  • Si un registre temporaire est utilisé, tous les composants doivent avoir été écrits précédemment.

  • Si un registre de texture est utilisé, tous les composants lus doivent avoir été déclarés.

  • Un masque d’écriture complet doit être spécifié.

D3DSIO_TEX
L’instruction TEX charge la destination avec des données de couleur (RVBA) échantillonnées à partir de la texture source.


Format

jeton d’instruction qui contient D3DSIO_TEX.

jeton de paramètre de destination à l’aide du type de registre D3DSPR_PREDICATE.

Les jetons sources suivants concernent uniquement le nuanceur de pixels version 1_4 et ultérieure :

- le premier jeton de paramètre source fournit les coordonnées de texture pour l’exemple de texture.

- deuxième jeton de paramètre source utilisant le type de registre D3DSPR_SAMPLER. Le deuxième jeton de paramètre source identifie le numéro d’échantillonneur de texture à échantillonner.


Commentaires

Les instructions d’assembleur tex et texld utilisent le code d’opération D3DSIO_TEX.

L’instruction tex s’applique aux versions de nuanceur de pixels 1_0 à 1_3 ; il a un jeton de paramètre de destination et aucun jeton de paramètre source qui lui est associé.

L’instruction texld s’applique au nuanceur de pixels version 1_4 et ultérieure ; un jeton de paramètre de destination et deux jetons de paramètre source lui sont associés.
D3DSIO_TEXBEM
L’instruction TEXBEM applique une transformation de carte d’environnement de bosses en modifiant les données d’adresse de texture du registre de destination, à l’aide de données de perturbation d’adresse (U,V) et d’une matrice d’environnement de bosses 2D.


Format

jeton d’instruction qui contient D3DSIO_TEXBEM.

jeton de paramètre de destination.

jeton de paramètre source.
D3DSIO_TEXBEML
L’instruction TEXBEML applique une transformation de carte d’environnement de bosse avec correction de luminance.


Format

jeton d’instruction qui contient D3DSIO_TEXBEML.

jeton de paramètre de destination.

jeton de paramètre source.


Commentaires

La transformation de carte de l’environnement de bosse avec correction de la luminance est effectuée en modifiant les données d’adresse de texture du registre de destination, à l’aide de données de perturbation d’adresse (U.V), d’une matrice d’environnement de bosse 2D et de luminance.
D3DSIO_TEXREG2AR
L’instruction TEXREG2AR interprète les composants de couleur alpha et rouge de la source comme des données d’adresse de texture (U,V) afin d’échantillonner la texture à l’étape correspondant au numéro de registre de destination. Le résultat est stocké dans la destination.


Format

jeton d’instruction qui contient D3DSIO_TEXREG2AR.

jeton de paramètre de destination.

jeton de paramètre source.


Commentaires

L’instruction TEXREG2AR est utile pour les opérations de remapping d’espace de couleur. Il prend en charge les coordonnées bidimensionnelles (2D).

Le registre source doit utiliser des données non signées ; si le registre source utilise des données signées ou mixtes, l’opération produit des résultats non valides.
D3DSIO_TEXREG2GB
L’instruction TEXREG2GB interprète les composants de couleur verte et bleue de la source comme des données d’adresse de texture (U,V) afin d’échantillonner la texture à l’étape correspondant au numéro de registre de destination. Le résultat est stocké dans la destination.


Format

jeton d’instruction qui contient D3DSIO_TEXREG2GB.

jeton de paramètre de destination.

jeton de paramètre source.


Commentaires

L’instruction TEXREG2GB est utile pour les opérations de remapping d’espace de couleur. Il prend en charge les coordonnées bidimensionnelles (2D).

Le registre source doit utiliser des données non signées ; si le registre source utilise des données signées ou mixtes, l’opération produit des résultats non valides.
D3DSIO_TEXM3x2PAD
L’instruction TEXM3x2PAD effectue la première multiplication de lignes d’une multiplication matricielle de deux lignes.


Format

jeton d’instruction qui contient D3DSIO_TEXM3x2PAD.

jeton de paramètre de destination.

jeton de paramètre source.


Commentaires

L’instruction TEXM3x2PAD ne peut pas être utilisée seule ; il doit être combiné avec les instructions TEXM3x2TEX ou TEXM3x2DEPTH .
D3DSIO_TEXM3x2TEX
L’instruction TEXM3x2TEX effectue la dernière ligne d’une multiplication de matrices 3x2 et utilise le résultat dans une recherche de texture.


Format

jeton d’instruction qui contient D3DSIO_TEXM3x2TEX.

jeton de paramètre de destination.

jeton de paramètre source.


Commentaires

L’instruction TEXM3x2TEX doit être utilisée avec l’instruction TEXM3x2PAD .
D3DSIO_TEXM3x3PAD
L’instruction TEXM3x3PAD effectue la première ou la deuxième multiplication de lignes d’une matrice de trois lignes.


Format

jeton d’instruction qui contient D3DSIO_TEXM3x3PAD.

jeton de paramètre de destination.

jeton de paramètre source.


Commentaires

L’instruction TEXM3x3PAD ne peut pas être utilisée seule ; il doit être combiné avec l’instruction TEXM3x3 , l’instruction TEXM3x3SPEC , l’instruction TEXM3x3VSPEC ou l’instruction TEXM3x3TEX .
D3DSIO_TEXM3x3TEX
L’instruction TEXM3x3TEX effectue une multiplication de matrices 3x3 et utilise le résultat dans une recherche de texture.


Format

jeton d’instruction qui contient D3DSIO_TEXM3x3TEX.

jeton de paramètre de destination.

jeton de paramètre source.


Commentaires

L’instruction TEXM3x3TEX doit être utilisée avec deux instructions TEXM3x3PAD .

Il est utilisé comme la dernière des trois instructions représentant une opération de multiplication de matrice 3x3, suivie d’une recherche de texture. La matrice 3x3 est composée des coordonnées de texture de la troisième étape de texture et des deux étapes de texture précédentes. Le vecteur à trois composants résultant (U,V,W) est utilisé pour échantillonner la texture à l’étape 3. Toute texture affectée aux deux étapes de texture précédentes est ignorée. La multiplication de matrices 3x3 est généralement utile pour orienter un vecteur normal vers l’espace tangent correct pour la surface en cours de rendu.
D3DSIO_RESERVED0
Cette instruction est réservée à un usage interne.
D3DSIO_TEXM3x3SPEC
L’instruction TEXM3x3SPEC effectue une multiplication de matrices 3x3 et utilise le résultat dans une recherche de texture. Utilisé pour la réflexion spéculaire et le mappage d’environnement.


Format

jeton d’instruction qui contient D3DSIO_TEXM3x3SPEC.

jeton de paramètre de destination.

premier jeton de paramètre source.

deuxième jeton de paramètre source.


Commentaires

L’instruction TEXM3x3SPEC doit être utilisée avec deux instructions TEXM3x3PAD . Ce jeu d’instructions peut être utilisé pour la réflexion spéculaire et le mappage d’environnement.

L’instruction TEXM3x3SPEC effectue la ligne finale d’une multiplication de matrices 3x3, utilise le vecteur résultant comme vecteur normal pour refléter un vecteur de rayons oculaires, puis utilise le vecteur réfléchi pour effectuer une recherche de texture. Le nuanceur lit le vecteur de rayons oculaires à partir d’un registre constant. La multiplication de matrices 3x3 est généralement utile pour orienter un vecteur normal vers l’espace tangent correct pour la surface en cours de rendu.

La matrice 3x3 est composée des coordonnées de texture de la troisième étape de texture et des deux étapes de texture précédentes. Le vecteur post-réflexion résultant (U,V,W) est utilisé pour échantillonner la texture à l’étape de texture finale. Toute texture affectée aux deux étapes de texture précédentes est ignorée.
D3DSIO_TEXM3x3VSPEC
L’instruction TEXM3x3VSPEC effectue une multiplication de matrices 3x3 et utilise le résultat dans une recherche de texture.


Format

jeton d’instruction qui contient D3DSIO_TEXM3x3VSPEC.

jeton de paramètre de destination.

jeton de paramètre source.


Commentaires

L’instruction TEXM3x3VSPEC doit être utilisée avec deux instructions TEXM3x3PAD . Ce jeu d’instructions peut être utilisé pour la réflexion spéculaire et le mappage de l’environnement où le vecteur de rayons oculaires n’est pas constant. Si le vecteur de rayons oculaires est constant, l’instruction TEXM3x3SPEC effectue la même recherche de multiplication et de texture de matrice.

L’instruction TEXM3x3VSPEC effectue la ligne finale d’une opération de multiplication de matrice 3x3, interprète le vecteur résultant comme un vecteur normal pour refléter un vecteur de rayons oculaires, puis utilise le vecteur réfléchi comme adresse de texture pour une recherche de texture. Il fonctionne comme TEXM3X3SPEC, sauf que le vecteur de rayons oculaires est extrait du quatrième composant des coordonnées de texture. La multiplication de matrices 3x3 est généralement utile pour orienter un vecteur normal vers l’espace tangent correct pour la surface en cours de rendu.

La matrice 3x3 est composée des coordonnées de texture de la troisième étape de texture et des deux étapes de texture précédentes. Le vecteur de postréflexion (UVW) résultant est utilisé pour échantillonner la texture à l’étape 3. Toute texture affectée aux deux étapes de texture précédentes est ignorée.
D3DSIO_EXPP
L’instruction EXPP fournit une précision exponentielle partielle de 2x.


Format

jeton d’instruction qui contient D3DSIO_EXPP. La longueur de l’instruction est de 2.

jeton de paramètre de destination.

jeton de paramètre source. Nécessite l’utilisation explicite de répliquer swizzle, c’est-à-dire que le composant swizzle X, Y, Z ou W (ou le R, G, B ou A équivalent) doit être spécifié.


Commentaires

L’instruction EXPP fournit au moins 10 bits de précision.
D3DSIO_LOGP
L’instruction LOGP calcule log₂(x) de précision partielle.


Format

jeton d’instruction qui contient D3DSIO_LOGP. La longueur de l’instruction est de 2.

jeton de paramètre de destination.

jeton de paramètre source. Nécessite l’utilisation explicite de répliquer swizzle, c’est-à-dire que le composant swizzle X, Y, Z ou W (ou le R, G, B ou A équivalent) doit être spécifié.


Commentaires

L’instruction LOGP fournit au moins 10 bits de précision.
D3DSIO_CND
L’instruction CND choisit entre les deuxième et troisième sources, selon que la première source est supérieure à 0,5, et stocke le résultat dans la destination.


Format

jeton d’instruction qui contient D3DSIO_CND.

jeton de paramètre de destination.

premier jeton de paramètre source.

deuxième jeton de paramètre source.

troisième jeton de paramètre source.
D3DSIO_DEF
L’instruction DEF définit une valeur constante, qui doit être chargée chaque fois qu’un nuanceur est défini sur un appareil. Cette instruction peut être utilisée dans toutes les versions du nuanceur de vertex. Les constantes définies par le nuanceur de vertex actuel sont prioritaires sur les constantes définies par l’opération D3DDP2OP_SETVERTEXSHADERCONST.


Format

jeton d’instruction qui contient D3DSIO_DEF. La longueur de l’instruction est de 5.

jeton de paramètre de destination. Le type de registre doit être D3DSPR_CONST, D3DSPR_CONST2, D3DSPR_CONST3 ou D3DSPR_CONST4.

4 jetons DWORD. Nombre à virgule flottante 4D ou nombre entier 4D.
D3DSIO_TEXREG2RGB
L’instruction TEXREG2RGB interprète les composants de couleur rouge, vert et bleu (RVB) de la source comme des données d’adresse de texture (U,V,W) afin d’échantillonner la texture aux étapes correspondant au numéro de registre de destination. Le résultat est stocké dans la destination.


Format

jeton d’instruction qui contient D3DSIO_TEXREG2RGB.

jeton de paramètre de destination.

jeton de paramètre source.


Commentaires

L’instruction TEXREG2RGB est utile pour les opérations de remapping d’espace de couleur. Il prend en charge les coordonnées bidimensionnelles (2D) et tridimensionnelles (3D). Il peut être utilisé comme l’instruction TEXREG2AR ou TEXREG2GB instruction pour remappper des données 2D. Toutefois, l’instruction TEXREG2RGB prend également en charge les données 3D afin qu’elles puissent être utilisées avec des cartes de cube et des textures de volume 3D.
D3DSIO_TEXDP3TEX
L’instruction TEXDP3TEX exécute un produit à points à trois composants et utilise le résultat pour effectuer une recherche de texture 1D.


Format

jeton d’instruction qui contient D3DSIO_TEXDP3TEX.

jeton de paramètre de destination.

jeton de paramètre source.
D3DSIO_TEXM3x2DEPTH
L’instruction TEXM3x2DEPTH calcule la valeur de profondeur à utiliser dans le test en profondeur d’un pixel.


Format

jeton d’instruction qui contient D3DSIO_TEXM3x2DEPTH.

jeton de paramètre de destination.

jeton de paramètre source.


Commentaires

L’instruction TEXM3x2DEPTH doit être utilisée avec l’instruction TEXM3x2PAD .
D3DSIO_TEXDP3
L’instruction TEXDP3 effectue un produit à points à trois composants entre les données du numéro de registre de texture et le jeu de coordonnées de texture correspondant au numéro de registre de destination.


Format

jeton d’instruction qui contient D3DSIO_TEXDP3.

jeton de paramètre de destination.

jeton de paramètre source.
D3DSIO_TEXM3x3
L’instruction TEXM3x3 effectue une multiplication de matrices 3x3 lorsqu’elle est utilisée conjointement avec deux instructions TEXM3x3PAD .


Format

jeton d’instruction qui contient D3DSIO_TEXM3x3.

jeton de paramètre de destination.

jeton de paramètre source.


Commentaires

L’instruction TEXM3x3 doit être utilisée avec deux instructions TEXM3X3PAD . Il est utilisé comme la finale de trois instructions représentant une opération de multiplication de matrice 3x3. La matrice 3x3 est composée des coordonnées de texture de la troisième étape de texture et des deux étapes de texture précédentes. Toute texture affectée à l’une des trois étapes de texture est ignorée.

L’instruction TEXM3x3 est identique à l’instruction TEXM3x3TEX , sans la recherche de texture.
D3DSIO_TEXDEPTH
L’instruction TEXDEPTH calcule la valeur de profondeur à utiliser dans le test de comparaison de la mémoire tampon de profondeur de pixels.


Format

jeton d’instruction qui contient D3DSIO_TEXDEPTH.

jeton de paramètre de destination.
D3DSIO_CMP
L’instruction CMP choisit entre les deuxième et troisième sources, selon que la première source est supérieure ou égale à zéro, et stocke le résultat dans la destination. La comparaison est effectuée par canal.


Format

jeton d’instruction qui contient D3DSIO_CMP.

jeton de paramètre de destination.

premier jeton de paramètre source.

deuxième jeton de paramètre source.

troisième jeton de paramètre source.
D3DSIO_BEM
L’instruction BEM applique une transformation de carte d’environnement de bosse.


Format

jeton d’instruction qui contient D3DSIO_BEM.

jeton de paramètre de destination.

premier jeton de paramètre source.

deuxième jeton de paramètre source.
D3DSIO_DP2ADD
L’instruction DP2ADD effectue un produit à points 2D et un ajout scalaire, et stocke le résultat dans la destination.


Format

jeton d’instruction qui contient D3DSIO_DP2ADD. La longueur de l’instruction est de 4.

jeton de paramètre de destination.

premier jeton de paramètre source.

deuxième jeton de paramètre source.

troisième jeton de paramètre source.
D3DSIO_DSX
L’instruction DSX calcule le taux de modification de la source dans la direction x et stocke le résultat dans la destination.


Format

jeton d’instruction qui contient D3DSIO_DSX. La longueur de l’instruction est de 2.

jeton de paramètre de destination. Accepte tous les masques d’écriture.

jeton de paramètre source. Accepte tous les swizzles.


Commentaires

L’instruction DSX calcule toujours des dégradés sur le contenu actuel des registres en pixels, que les pixels soient actifs en raison du contrôle de flux ou du fait d’être hors du bord d’une primitive. Ces pixels sont exécutés dans lockstep.
D3DSIO_DSY
L’instruction DSY calcule le taux de modification de la source dans le sens y et stocke le résultat dans la destination.


Format

jeton d’instruction qui contient D3DSIO_DSY. La longueur de l’instruction est de 2.

jeton de paramètre de destination. Accepte tous les masques d’écriture.

jeton de paramètre source. Accepte tous les swizzles.


Commentaires

L’instruction DSY calcule toujours les dégradés sur le contenu actuel des registres en pixels, que les pixels soient actifs en raison du contrôle de flux ou du fait d’être hors du bord d’une primitive. Ces pixels sont exécutés dans lockstep.
D3DSIO_TEXLDD
L’instruction TEXLDD échantillonne une texture à l’aide des coordonnées de texture dans le premier jeton source, de l’échantillonneur spécifié par le deuxième jeton source et des dégradés (DSX et DSY) des troisième et quatrième jetons sources.


Format

jeton d’instruction qui contient D3DSIO_TEXLDD. La longueur de l’instruction est de 5.

jeton de paramètre de destination. Accepte tous les masques d’écriture.

premier jeton de paramètre source.

deuxième jeton de paramètre source qui doit utiliser le type de registre D3DSPR_SAMPLER. Les états de l’échantillonneur pris en charge sont D3DSAMP_MAXMIPLEVEL et D3DSAMP_MIPMAPLODBIAS.


Commentaires

Toutes les sources prennent en charge des swizzles arbitraires.

Tous les masques d’écriture sont valides sur la destination.
D3DSIO_SETP
L’instruction SETP définit le registre de prédicat.


Format

jeton d’instruction qui contient D3DSIO_SETP. La longueur de l’instruction est de 3.

jeton de paramètre de destination utilisant le type de registre D3DSPR_PREDICATE. Nécessite des masques d’écriture.

premier jeton de paramètre source. Les composants Swizzle doivent être spécifiés.

deuxième jeton de paramètre source. Les composants Swizzle doivent être spécifiés.


Commentaires

Pour chaque canal qui peut être écrit en fonction du masque d’écriture de destination, enregistrez le résultat booléen de l’opération de comparaison entre les canaux correspondants des sources (une fois les swizzles du modificateur source résolus).
D3DSIO_TEXLDL
L’instruction TEXLDL échantillonne une texture sur un échantillonneur particulier à l’aide des coordonnées de texture fournies. Le niveau de détail particulier (LOD) échantillonné doit être spécifié en tant que quatrième composant (W) de la coordonnée de texture.


Format

jeton d’instruction qui contient D3DSIO_TEXLDL. La longueur de l’instruction est de 3.

jeton de paramètre de destination utilisant le type de registre D3DSPR_PREDICATE.

le premier jeton de paramètre source fournit les coordonnées de texture pour l’exemple de texture.

deuxième jeton de paramètre source utilisant le type de registre D3DSPR_SAMPLER. Identifie le numéro de l’échantillonneur de texture à échantillonner. Le modificateur de source Negate ne peut pas être spécifié. Swizzle peut être spécifié. Le numéro de l’échantillonneur doit être déclaré au début du nuanceur.


Commentaires

Les valeurs par défaut des composants manquants du masque d’écriture du jeton de destination sont 0 ou 1 et dépendent du format de texture.

Le nombre de coordonnées requises pour effectuer l’exemple de texture dépend de la façon dont le numéro de l’échantillonneur a été déclaré. S’il a été déclaré en tant que cube, une coordonnée de texture à 3 composants (RVB) est requise. La validation impose que les coordonnées fournies à texld sont suffisantes pour la dimension de texture déclarée pour l’échantillonneur. L’échantillonnage d’une texture dont les dimensions sont inférieures à celles présentes dans la coordonnée de texture est valide. À l’inverse, l’échantillonnage d’une texture dont les dimensions sont supérieures à celles présentes dans la coordonnée de texture n’est pas valide.

L’échantillonnage des textures RVB non signées génère des valeurs float comprises entre 0,0 et 1,0.

L’échantillonnage des textures signées génère des valeurs float comprises entre -1.0 et 1.0.

L’échantillonnage des textures à virgule flottante entraîne la conservation de la plage Float16 à MAX_FLOAT16, ou la plage float32-max du pipeline en cours de conservation.
D3DSIO_BREAKP
L’instruction BREAK PRED sort de la boucle actuelle au niveau du endloop ou endrep le plus proche en utilisant l’un des composants du registre de prédicat comme condition pour déterminer s’il faut exécuter l’instruction.


Format

jeton d’instruction qui contient D3DSIO_BREAKP.

jeton de paramètre source utilisant le type de registre D3DSPR_PREDICATE avec un swizzle de réplication (chaque canal utilise le même composant source). Le modificateur source NOT (0xd) en bits 27 :24 est autorisé.
D3DSIO_PHASE
S’applique au nuanceur de pixels version 1_4 uniquement.

L’instruction PHASE marque la transition entre le nuanceur de pixels version 1 et 2. Si aucune instruction de phase n’est présente, le nuanceur entier s’exécute comme s’il s’agit d’un nuanceur de phase 2.


Format

jeton d’instruction qui contient D3DSIO_PHASE.


Commentaires

Les instructions du nuanceur qui se produisent avant l’instruction PHASE sont des instructions de phase 1. Toutes les autres instructions sont des instructions de phase 2. En ayant deux phases pour les instructions, le nombre maximal d’instructions par nuanceur est augmenté.

Le composant alpha des registres temporaires ne persiste pas tout au long de la transition de phase. En d’autres termes, le composant alpha doit être réinitialisé après l’instruction de phase.
D3DSIO_COMMENT
Spécifie le jeton de commentaire.
D3DSIO_END
Spécifie le jeton de fin.
D3DSIO_FORCE_DWORD
Force une taille 32 bits.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible dans Windows Vista et versions ultérieures des systèmes d’exploitation Windows.
En-tête d3d9types.h