Quellenregister-Swizzling (HLSL-PS-Referenz)
Swizzling bezieht sich auf die Möglichkeit, jede Quellregisterkomponente in eine temporäre Registerkomponente zu kopieren. Swizzling wirkt sich nicht auf die Quellregisterdaten aus. Bevor eine Anweisung ausgeführt wird, werden die Daten in einem Quellregister in ein temporäres Register kopiert.
Quell-Swizzling
Quellwizzle ermöglicht es einzelnen Komponenten eines Quellregisters, den Wert einer der vier Komponenten desselben Quellregisters zu übernehmen, bevor das Register für die Berechnung gelesen wird.
.zxxy swizzle bedeutet z.B.:
- Die X-Komponente übernimmt den Wert der Z-Komponente.
- Die Y-Komponente übernimmt den Wert der X-Komponente.
- Die .z-Komponente übernimmt den Wert der X-Komponente.
- Die W-Komponente übernimmt den Wert der Y-Komponente.
Die Komponenten können in beliebiger Reihenfolge angezeigt werden. Wenn weniger als vier Komponenten angegeben werden, wird die letzte Komponente wiederholt. Beispiel:
.xy = .xyyy
.wzx = .wzxx
.z = .zzzz
Wenn keine Komponente angegeben ist, wird kein Swizzling angewendet.
Einige Anweisungen weisen Einschränkungen für Quellwizzle auf. Sie sind auf den Referenzseiten für angesehene Anweisungen aufgeführt.
| Pixelshaderversionen | 1_1 | 1_2 | 1 _ 3 | 1_4 | 2 _ 0 | 2 _ x | 2 _ sw | 3 _ 0 | 3 _ sw |
|---|---|---|---|---|---|---|---|---|---|
| .x | x | x | x | x | x | x | |||
| .y | x | x | x | x | x | x | |||
| .z | x* | x* | x* | x | x | x | x | x | x |
| .w | x | x | x | x | x | x | x | x | x |
| .xyzw (Standard) | x | x | x | x | x | x | x | x | x |
| .yzxw | x | x | x | x | x | ||||
| .zxyw | x | x | x | x | x | ||||
| .wzyx | x | x | x | x | x | ||||
| beliebiger Swizzle | x | x | x | x |
* Nur verfügbar, wenn die Zielschreibmaske .w (.a) ist.
Beliebiger Swizzle
Swizzles kann in beliebiger Reihenfolge auf Quellregister angewendet werden. Das heißt, jedes Quellregister kann eine beliebige Komponentenmaske in beliebiger Reihenfolge verwenden.
Replizieren von Swizzle
Replizieren von Swizzle kopiert eine Komponente in eine andere. Dies bedeutet, dass genau eine der .x-, .y-, .z-, .w swizzle-Komponenten (oder die Entsprechungen .r, .g, .b, .a) angegeben werden muss.