Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les modificateurs d’instructions affectent le résultat de l’instruction avant qu’elle soit écrite dans le registre de destination. Par exemple, utilisez-les pour multiplier ou diviser le résultat par un facteur de deux, ou pour limiter le résultat entre zéro et un. Les modificateurs d’instructions sont appliqués après l’exécution de l’instruction, mais avant d’écrire le résultat dans le registre de destination.
Une liste des modificateurs est indiquée ci-dessous.
| Modificateur | Description | Syntaxe | Version 1_1 | Version 1_2 | Version 1_3 | Version 1_4 |
|---|---|---|---|---|---|---|
| _x2 | Multiplier par 2 | instruction_x2 | X | X | X | X |
| _x4 | Multiplier par 4 | instruction_x4 | X | X | X | X |
| _x8 | Multiplier par 8 | instruction_x8 | X | |||
| _d2 | Diviser par 2 | instruction_d2 | X | X | X | X |
| _d4 | Diviser par 4 | instruction_d4 | X | |||
| _d8 | Diviser par 8 | instruction_d8 | X | |||
| _sam | Saturé (pince comprise entre 0 et 1) | instruction_sat | X | X | X | X |
- Le modificateur multiplié multiplie les données de registre par une puissance de deux après sa lecture. C’est la même chose qu’un décalage vers la gauche.
- Le modificateur de division divise les données de registre par une puissance de deux après sa lecture. C’est la même chose qu’un décalage vers la droite.
- Le modificateur saturé limite la plage de valeurs d’enregistrement comprises entre zéro et un.
Les modificateurs d’instructions peuvent être utilisés sur des instructions arithmétiques. Ils ne peuvent pas être utilisés dans les instructions d’adresse de texture.
Multiplier le modificateur
Cet exemple charge le registre de destination (dest) avec la somme des deux couleurs dans les opérandes sources (src0 et src1) et multiplie le résultat par deux.
add_x2 dest, src0, src1
Cet exemple combine deux modificateurs d’instructions. Tout d’abord, deux couleurs dans les opérandes sources (src0 et src1) sont ajoutées. Le résultat est ensuite multiplié par deux, et limité entre 0,0 et 1,0 pour chaque composant. Le résultat est enregistré dans le registre de destination.
add_x2_sat dest, src0, src1
Modificateur de division
Cet exemple charge le registre de destination (dest) avec la somme des deux couleurs dans les opérandes sources (src0 et src1) et divise le résultat par deux.
add_d2 dest, src0, src1
Modificateur saturé
Pour les instructions arithmétiques, le modificateur de saturation limite le résultat de cette instruction dans la plage 0.0 à 1.0 pour chaque composant. L’exemple suivant montre comment utiliser ce modificateur d’instruction.
dp3_sat r0, t0_bx2, v0_bx2 ; t0 is bump, v0 is light direction
Cette opération se produit après tout modificateur d’instruction de multiplication ou de division. _sat est le plus souvent utilisé pour limiter les résultats du produit point. Toutefois, elle permet également une émulation cohérente des méthodes multipasses où la mémoire tampon de trame est toujours comprise entre 0 et 1 et la syntaxe multitexture DirectX 6 et 7.0, dans laquelle la saturation est définie à chaque étape.
Cet exemple charge le registre de destination (dest) avec la somme des deux couleurs dans les opérandes sources (src0 et src1) et limite le résultat dans la plage 0,0 à 1,0 pour chaque composant.
add_sat dest, src0, src1
Cet exemple combine deux modificateurs d’instructions. Tout d’abord, deux couleurs dans les opérandes sources (src0 et src1) sont ajoutées. Le résultat est multiplié par deux et limité entre 0,0 et 1,0 pour chaque composant. Le résultat est enregistré dans le registre de destination.
add_x2_sat dest, src0, src1
Rubriques connexes