Udostępnij za pośrednictwem


Source register swizzling (HLSL PS reference)

Swizzling odnosi się do możliwości kopiowania dowolnego składnika rejestru źródłowego do dowolnego składnika tymczasowego rejestru. Swizzling nie ma wpływu na dane rejestru źródłowego. Przed uruchomieniem instrukcji dane w rejestrze źródłowym są kopiowane do rejestru tymczasowego.

Source Swizzling

Źródłowizzle umożliwia poszczególnym składnikom rejestru źródłowego przejęcie wartości dowolnego z czterech składników tego samego rejestru źródłowego, zanim rejestr zostanie odczytany do obliczeń.

Na przykład plik zxxy swizzle oznacza:

  • Składnik .x będzie przyjmować wartość składnika .z
  • Składnik .y będzie przyjmować wartość składnika .x
  • Składnik .z będzie przyjmować wartość składnika .x
  • Składnik .w będzie przyjmować wartość składnika .y

Składniki mogą być wyświetlane w dowolnej kolejności. Jeśli określono mniej niż cztery składniki, ostatni składnik zostanie powtórzony. Na przykład:

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

Jeśli nie określono żadnego składnika, nie zastosowanowizowania.

Niektóre instrukcje mają ograniczenia dotyczącewizzle źródłowego. Są one wymienione na stronach referencyjnych dotyczących instrukcji.

Wersje cieniowania pikseli 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 (wartość domyślna) 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
dowolny swizzle x x x x

 

* Dostępne tylko wtedy, gdy docelowa maska zapisu to .w (.a).

Dowolny swizzle

Swizzles można stosować do rejestrów źródłowych w dowolnej kolejności; oznacza to, że każdy rejestr źródłowy może przyjmować dowolną maskę składników w dowolnej kolejności.

Replikowaniewizyj wizzle

Replikujwizuj wizzle kopiuje jeden składnik do innego. Jest to dokładnie jeden ze składników .x, .y, .z, .w swizzle (lub .r, .g, .b, .a).

Modyfikatory rejestru źródłowego pikseli

ps_1_1__ps_1_2__ps_1_3__ps_1_4 rejestruje

rejestry ps_2_0

ps_2_x rejestruje

rejestry ps_3_0