sincos - vs

Berechnet Sine und Cosine in Radierern.

Syntax

vs_2_0 und vs_2_x

sincos dst. {x|y|xy}, src0. {x|y|z|w}, src1, src2

 

Hierbei gilt:

vs_3_0

sincos dst. {x|y|xy}, src0. {x|y|z|w}

 

Hierbei gilt:

  • dst ist ein Zielregister und muss ein temporäres Register (r#) sein. Das Zielregister muss genau eine der folgenden drei Masken aufweisen: .x | .y | .xy.
  • src0 ist ein Quellregister, das den Eingabewinkel bereitstellt, der sich innerhalb von [-pi, +pi] befindet. {x|y|z|w} ist die erforderliche Replikate.

Hinweise

Vertex-Shaderversionen 1_1 2_0 2_x 2_sw 3_0 3_sw
sincos x x x x x

 

vs_2_0 und vs_2_x Hinweise

Für vs_2_0 und vs_2_x können Sincos mit Prädikation verwendet werden, aber mit einer Einschränkung auf den Schwarm des Prädikatregisters (p0): nur Replizieren von Swizzle (.x | .y | .z | .w) ist zulässig.

Für vs_2_0 und vs_2_x funktioniert die Anweisung wie folgt: (V = der Skalarwert von src0 mit einem replizierten Schwarm):

  • Wenn die Schreibmaske .x ist:

    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
    
  • Wenn die Schreibmaske .y ist:

    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
    
  • Wenn die Schreibmaske .xy ist:

    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 Hinweise

Für vs_3_0 können Sincos ohne Einschränkung mit Prädikation verwendet werden. Siehe Prädikatregister.

Für vs_3_0 funktioniert die Anweisung wie folgt: (V = der Skalarwert von src0 mit einem replizierten Schwarm)

  • Wenn die Schreibmaske .x ist:

    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
    
  • Wenn die Schreibmaske .y ist:

    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
    
  • Wenn die Schreibmaske .xy ist:

    dest.x = cos( V )
    dest.y = sin( V )
    dest.z is not touched by the instruction
    dest.w is not touched by the instruction
    

Die Anwendung kann einen beliebigen Winkel (in Radien) dem Bereich [-pi, +pi] mit dem folgenden Shader-Pseudocode zuordnen:

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

Vertex-Shaderanweisungen