Quellregistermodifizierer für Pixelshader
Verwenden Sie Quellregistermodifizierer, um den Aus einem Register gelesenen Wert zu ändern, bevor eine Anweisung ausgeführt wird. Der Inhalt eines Quellregisters bleibt unverändert. Modifizierer sind nützlich, um den Bereich der Registerdaten als Vorbereitung für die Anweisung anzupassen. Eine Reihe von Modifizierern, die als Selektoren bezeichnet werden, kopiert oder repliziert die Daten aus einem einzelnen Kanal (r,g,b,a) in die anderen Kanäle.
ps _ 1 _ 1 - ps _ 1 _ 4
In dieser Tabelle sind die Versionen aufgeführt, die die einzelnen Modifizierer unterstützen:
| Quellregistermodifizierer | Syntax | Version 1 _ 1 | Version 1 _ 2 | Version 1 _ 3 | Version 1 _ 4 |
|---|---|---|---|---|---|
| Vorurteil | _Registervoreingenommenheit | X | X | X | X |
| Invertieren | 1– Registrieren | X | X | X | X |
| Negieren | - Registrieren | X | X | X | X |
| Skalieren um 2 | Registrieren _ von x2 | X | |||
| Signierte Skalierung | register _ bx2 | X | X | X | X |
| Texld- und Texcrd-Modifizierer | register _ d* | X | X | X | X |
| Quellenregister-Swizzling | register.xyzw | X | X | X | X |
Quellregistermodifizierer können nur für arithmetische Anweisungen verwendet werden. Sie können nicht für Texturadressanweisungen verwendet werden. Eine Ausnahme bildet der Modifizierer Scale by 2. Für Version 1 _ 1 kann die signierte Skalierung für das Quellargument jeder texm-Anweisung verwendet * werden. Für Version _ 1 2 oder 1 _ 3 kann die signierte Skala für das Quellargument einer beliebigen Texturadressanweisung verwendet werden.
Einige modifiziererspezifische Einschränkungen:
- Negate kann entweder mit dem Modifizierer bias, signed scaling oder scalex2 kombiniert werden. In kombination wird "negate" zuletzt ausgeführt.
- Invert kann nicht mit einem anderen Modifizierer kombiniert werden.
- Invertieren, Negieren, Voreingenommenheit, signierte Skalierung und Scalex2 können mit jedem der Selektoren kombiniert werden.
- Quellregistermodifizierer sollten nicht für Konstantenregister verwendet werden, da sie nicht definierte Ergebnisse verursachen. Für Version 1 _ 4 sind Modifizierer für Konstanten nicht zulässig und schlagen bei der Überprüfung fehl.
ps _ 2 _ 0 und höher
Für Version ps _ 2 _ 0 und höher wurde die Anzahl der Modifizierer vereinfacht.
Negate
Negieren Sie den Inhalt des Quellregisters.
| Komponentenmodifizierer | Beschreibung |
|---|---|
| - R | Quell negation |
Der Modifizierer negate kann nicht im zweiten Quellregister dieser Anweisungen verwendet werden: m3x2 - ps, m3x3 - ps, m3x4 - ps, m4x3 - psund m4x4 - ps.
| Pixelshaderversionen | 2 _ 0 | 2 _ x | 2 _ sw | 3 _ 0 | 3 _ sw |
|---|---|---|---|---|---|
| - | x | x | x | x | x |
Absoluter Wert
Nehmen Sie den absoluten Wert des Registers.
| Pixelshaderversionen | 2 _ 0 | 2 _ x | 2 _ sw | 3 _ 0 | 3 _ sw |
|---|---|---|---|---|---|
| abs | x | x |
Wenn ein Shader der Version 3 aus einem oder mehreren konstanten float-Registern (c) liest, # muss eines der folgenden Punkte zutreffen.
- Alle konstanten Gleitkommaregister müssen den Abs-Modifizierer verwenden.
- Keiner der konstanten Gleitkommaregister kann den Abs-Modifizierer verwenden.