Maska zapisu rejestru docelowego
Maska zapisu określa, które składniki rejestru docelowego są zapisywane po zakończeniu instrukcji. Maska zapisu wyjściowego jest dozwolona tak długo, jak składniki są w kolejności .rgba lub .xyzw. Oznacza to, że .rba i .xw są prawidłowymi maskami. Rejestry tekstur mają jeden zestaw reguł, a rejestry nie tekstury mają inny zestaw reguł.
Składnia
dst.writemask |
---|
gdzie
- dst to rejestr docelowy.
- maska zapisu to sekwencja masek z zestawu: (x,y,z,w) lub (czerwony, zielony, niebieski, alfa).
Uwagi
Dostępne są następujące maski zapisu docelowego.
Wersje cieniowania pikseli | 1_1 | 1_2 | 1_3 | 1_4 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|---|---|---|
.xyzw (wartość domyślna) | x | x | x | x | x | x | x | x | x |
.Xyz | x | x | x | x | x | x | x | x | x |
.w | x | x | x | x | x | x | x | x | x |
dowolna maska | x | x | x | x | x | x |
Dowolna maska umożliwia łączenie dowolnego zestawu kanałów w celu utworzenia maski. Kanały muszą być wymienione w kolejności r, g, b, a — na przykład register.rba, który aktualizuje kanały czerwone, niebieskie i alfa miejsca docelowego. Dowolna maska jest dostępna w wersji 1_4 lub nowszej.
Jeśli nie określono docelowej maski zapisu, docelowa maska zapisu jest domyślna dla wielkości liter rgba. Innymi słowy, wszystkie kanały w rejestrze docelowym są aktualizowane.
W przypadku wersji 1_0 do 1_3 dp3 — ps instrukcji arytmetycznej dp3 mogą używać tylko masek zapisu danych wyjściowych rgb lub rgba.
Maski zapisu rejestru docelowego są obsługiwane tylko w przypadku operacji arytmetycznych. Nie można ich używać w instrukcjach adresowania tekstury, z wyjątkiem instrukcji w wersji 1_4, texcrd - ps i texld - ps_2_0 i w górę.
Wartością domyślną jest zapisanie wszystkich czterech kanałów kolorów.
// All four color channels can be written by explicitly listing them.
mul r0.rgba, t0, v0
// Or, the default mask can be used to write all four channels.
mul r0, t0, v0
Maska zapisu alfa jest również nazywana maską zapisu skalarnego, ponieważ używa potoku skalarnego.
add r0.a, t1, v1
Więc ta instrukcja skutecznie umieszcza sumę składnika alfa t1 i składnika alfa w wersji 1 do r0.a.
Maska zapisu koloru służy do kontrolowania zapisywania w kanałach kolorów.
// The color write mask is also referred to as the vector write mask,
// because it uses the vector pipeline.
mul r0.rgb, t0, v0
W przypadku wersji 1_4 docelowe maski zapisu mogą być używane w dowolnej kombinacji, o ile maski są uporządkowane r,g,b,a.
// This example updates the red, blue, and alpha channels.
mov r0.rba, r1
Wspólna instrukcja umożliwia jednoczesne wydawanie dwóch potencjalnie różnych instrukcji. Jest to realizowane przez wykonanie instrukcji w potoku alfa i potoku RGB.
mul r0.rgb, t0, v0
+ add r1.a, t1, c1
Zaletą instrukcji parowania jest to, że umożliwia wykonywanie różnych operacji w wektorze i potoku skalarnego równolegle.
Te rejestry wyjściowe cieniowania wierzchołków są ograniczone do następujących masek zapisu:
Typ rejestru | Wymagana maska zapisu |
---|---|
oFog | w tym rejestrze skalarny nie jest dozwolona jawna maska zapisu |
Zdecyduje się | w tym rejestrze skalarny nie jest dozwolona jawna maska zapisu |
oPos | .xyzw(który jest wartością domyślną) |
Ot# | maska połączona: .x | .xy | .xyz | .xyzw (co jest wartością domyślną) |
Tematy pokrewne
-
modyfikatory rejestru pikseli