Quellregister-Swizzling (HLSL PS-Referenz)

Swizzling bezieht sich auf die Möglichkeit, eine beliebige Quellregisterkomponente in eine beliebige 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

Source Swizzle ermöglicht es einer einzelnen Komponente eines Quellregisters, den Wert einer der vier Komponenten desselben Quellregisters zu übernehmen, bevor das Register für die Berechnung gelesen wird.

Beispielsweise bedeutet .zxxy swizzle:

  • 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 sind, wird die letzte Komponente wiederholt. Beispiel:

.xy  = .xyyy
.wzx = .wzxx
.z   = .zzzz

Wenn keine Komponente angegeben ist, wird kein Schwenken angewendet.

Einige Anweisungen weisen Einschränkungen für Quellschwister auf. Sie sind auf den referenzierten Seiten für 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 können in beliebiger Reihenfolge auf Quellregister angewendet werden. Das heißt, jedes Quellregister kann eine beliebige Komponentenmaske in beliebiger Reihenfolge annehmen.

Replizieren von Swizzle

Replizieren von Swizzle kopiert eine Komponente in eine andere. Dies ist genau eine der Komponenten .x, .y, .z, .w swizzle (oder die Äquivalente .r, .g, .b, .a) müssen angegeben werden.

Pixel-Shader-Quellregistermodifizierer

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