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.

Modifizierer für Das Pixel-Shader-Quellregister

ps _ 1 _ 1 _ _ ps _ 1 _ 2 ps _ _ _ 1 _ 3 ps _ _ _ 1 _ 4 Register

ps _ 2 _ 0 Register

ps _ 2 _ x Register

ps _ 3 _ 0 Register