Modificateurs pour ps_1_X
Les modificateurs d’instruction affectent le résultat de l’instruction avant son écriture dans le registre de destination. Pour instance, utilisez-les pour multiplier ou diviser le résultat par un facteur de deux, ou pour serrer le résultat entre zéro et un. Les modificateurs d’instruction 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 présenté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 | Saturation (pince à partir de 0 et 1) | instruction_sat | X | X | X | X |
- Le modificateur de multiplication multiplie les données de registre par une puissance de deux après leur lecture. Il s’agit de 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 leur lecture. C’est la même chose qu’un décalage vers la droite.
- Le modificateur saturé limite la plage de valeurs de registre de zéro à 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.
Modificateur de multiplication
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 serré 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 diviser
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 de saturation
Pour les instructions arithmétiques, le modificateur de saturation limite le résultat de cette instruction dans la plage de 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 n’importe quel modificateur d’instruction multiplier ou diviser. _sat est le plus souvent utilisé pour serrer les résultats du produit à points. Toutefois, elle permet également l’émulation cohérente des méthodes multipass où la mémoire tampon de trame est toujours comprise entre 0 et 1, et de la syntaxe multitexture DirectX 6 et 7.0, dans laquelle la saturation est définie pour se produire à 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 attache le résultat dans la plage de 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 serré 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