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
ps_2_0 und ps_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 Registers (c#) sein. Die Werte von src1 und src2 müssen denen der Makros D3DSINCOSCONST1 und D3DSINCOSCONST2 entsprechen.
ps_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
| Pixelshaderversionen | 1_1 | 1_2 | 1_3 | 1_4 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
|---|---|---|---|---|---|---|---|---|---|
| sincos | x | x | x | x | x |
ps_2_0 und ps_2_x
Für ps_2_0 und ps_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 ps_2_0 und ps_2_x funktioniert die Anweisung wie folgt (V = der Skalarwert aus 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 instructionWenn 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 instructionWenn 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
ps_3_0
Für ps_3_0 können Sincos ohne Einschränkung mit Prädikation verwendet werden. Siehe Prädikatregister.
Für ps_3_0 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 not touched by the instruction dest.z is not touched by the instruction dest.w is not touched by the instructionWenn 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 instructionWenn 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