sincos - vs
Calcule le sinus et le cosinus, en radians.
Syntaxe
vs_2_0 et vs_2_x
sincos dst. {x|y|xy}, src0. {x|y|z|w}, src1, src2 |
---|
Où :
- dst est le registre de destination et doit être un registre temporaire (r#). Le registre de destination doit avoir exactement l’un des trois masques suivants : .x | .y | .xy.
- src0 est un registre source qui fournit l’angle d’entrée, qui doit se trouver dans [-pi, +pi]. {x|y|z|w} est le swizzle de réplication requis.
- src1 et src2 sont des registres sources et doivent être deux registres float constants (c#). Les valeurs de src1 et src2 doivent être celles des macros D3DSINCOSCONST1 et D3DSINCOSCONST2 respectivement.
vs_3_0
sincos dst. {x|y|xy}, src0. {x|y|z|w} |
---|
Où :
- dst est un registre de destination et doit être un registre temporaire (r#). Le registre de destination doit avoir exactement l’un des trois masques suivants : .x | .y | .xy.
- src0 est un registre source qui fournit l’angle d’entrée, qui doit se trouver dans [-pi, +pi]. {x|y|z|w} est le swizzle de réplication requis.
Notes
Versions du nuanceur de vertex | 1_1 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|
sincos | x | x | x | x | x |
vs_2_0 et vs_2_x remarques
Pour vs_2_0 et vs_2_x, sincos peut être utilisé avec la prédication, mais avec une restriction au swizzle du registre de prédicat (p0) : seule la réplication swizzle (.x | .y | .z | .w) est autorisée.
Pour vs_2_0 et vs_2_x, l’instruction fonctionne comme suit : (V = la valeur scalaire de src0 avec un swizzle de réplication) :
Si le masque d’écriture est .x :
dest.x = cos( V ) dest.y is undefined when the instruction completes dest.z is undefined when the instruction completes dest.w is not touched by the instruction
Si le masque d’écriture est .y :
dest.x is undefined when the instruction completes dest.y = sin( V ) dest.z is undefined when the instruction completes dest.w is not touched by the instruction
Si le masque d’écriture est .xy :
dest.x = cos( V ) dest.y = sin( V ) dest.z is undefined when the instruction completes dest.w is not touched by the instruction
vs_3_0 Remarques
Par vs_3_0, sincos peut être utilisé avec une prédication sans aucune restriction. Consultez Registre des prédicats.
Pour vs_3_0, l’instruction fonctionne comme suit : (V = la valeur scalaire de src0 avec un swizzle de réplication)
Si le masque d’écriture est .x :
dest.x = cos( V ) dest.y is not touched by the instruction dest.z is not touched by the instruction dest.w is not touched by the instruction
Si le masque d’écriture est .y :
dest.x is not touched by the instruction dest.y = sin( V ) dest.z is not touched by the instruction dest.w is not touched by the instruction
Si le masque d’écriture est .xy :
dest.x = cos( V ) dest.y = sin( V ) dest.z is not touched by the instruction dest.w is not touched by the instruction
L’application peut mapper un angle arbitraire (en radians) à la plage [-pi, +pi] à l’aide du pseudocode de nuanceur suivant :
def c0, pi, 0.5, 2*pi, 1/(2*pi)
mad r0.x, input_angle, c0.w, c0.y
frc r0.x, r0.x
mad r0.x, r0.x, c0.z, -c0.x
Rubriques connexes
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour