dp3 - ps
Calcule le produit à trois composants des registres sources.
Syntaxe
dp3 dst, src0, src1 |
---|
where
- dst est le registre de destination.
- src0 est un registre source.
- src1 est un registre source.
Notes
Versions du nuanceur de pixels | 1_1 | 1_2 | 1_3 | 1_4 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|---|---|---|
dp3 | x | x | x | x | x | x | x | x | x |
L’extrait de code suivant montre les opérations effectuées :
dest.x = dest.y = dest.z = dest.w =
(src0.x * src1.x) + (src0.y * src1.y) + (src0.z * src1.z);
Cette instruction s’exécute dans le pipeline vectoriel, en écrivant toujours dans les canaux de couleur. Pour la version 1_4, cette instruction utilise toujours le pipeline vectoriel, mais peut écrire dans n’importe quel canal.
Une instruction avec un masque d’écriture .rgb (.xyz) de registre de destination peut être co-émise avec dp3, comme indiqué ci-dessous.
dp3 r0.rgb, t0, v0 // Copy scalar result to color components
+mov r2.a, t0 // Copy alpha component from t0 in parallel
L’instruction dp3 peut être modifiée à l’aide du modificateur d’argument d’entrée De la mise à l’échelle signée du registre source (_bx2) appliqué à ses arguments d’entrée s’ils ne sont pas déjà développés en plage dynamique signée. Pour un nuanceur d’éclairage, le modificateur d’instruction saturé (_sat) est souvent utilisé pour limiter les valeurs négatives au noir, comme illustré dans l’exemple suivant.
dp3_sat r0, t0_bx2, v0_bx2 // t0 is a bump map, v0 contains the light direction
Rubriques connexes