Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Berechnet Sinus und Kosinus im Bogenmaß.
Syntax
vs_2_0 und vs_2_x
sincos dst. {x|y|xy}, src0. {x|y|z|w}, src1, src2 |
---|
Hierbei gilt:
- dst ist das 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 innerhalb von [-pi, +pi] sein muss. {x|y|z|w} ist der erforderliche Replikationsschwund.
- src1 und src2 sind Quellregister und müssen zwei verschiedene Constant Float Register (c#) sein. Die Werte von src1 und src2 müssen denen der Makros D3DSINCOSCONST1 und D3DSINCOSCONST2 entsprechen.
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 innerhalb von [-pi, +pi] sein muss. {x|y|z|w} ist der erforderliche Replikationsschwund.
Bemerkungen
Vertexshaderversionen | 1_1 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|
sincos | x | x | x | x | x |
hinweise zu vs_2_0 und vs_2_x
Für vs_2_0 und vs_2_x können Sincos mit Prädication verwendet werden, aber mit einer Einschränkung für den Swizzle des Prädikatregisters (p0): nur replizieren 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 repliziertem Swizzle):
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 lautet:
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 aus src0 mit einem Replikations-Swizzle)
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 lautet:
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 (im Bogenmaß) mit dem folgenden Shader-Pseudocode dem Bereich [-pi, +pi] 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
Zugehörige Themen