Modyfikatory ps_1_X
Modyfikatory instrukcji wpływają na wynik instrukcji przed zapisaną w rejestrze docelowym. Na przykład użyj ich, aby pomnożyć lub podzielić wynik przez współczynnik dwóch lub zaciskać wynik między zerem a jednym. Modyfikatory instrukcji są stosowane po uruchomieniu instrukcji, ale przed zapisaniem wyniku w rejestrze docelowym.
Poniżej przedstawiono listę modyfikatorów.
Modyfikator | Opis | Składnia | Wersja 1_1 | Wersja 1_2 | Wersja 1_3 | Wersja 1_4 |
---|---|---|---|---|---|---|
_x2 | Mnożenie przez 2 | instruction_x2 | X | X | X | X |
_x4 | Mnożenie przez 4 | instruction_x4 | X | X | X | X |
_x8 | Mnożenie przez 8 | instruction_x8 | X | |||
_d2 | Podziel przez 2 | instruction_d2 | X | X | X | X |
_d4 | Podziel przez 4 | instruction_d4 | X | |||
_d8 | Podziel przez 8 | instruction_d8 | X | |||
_sobota | Saturate (zacisk z 0 i 1) | instruction_sat | X | X | X | X |
- Modyfikator mnożenia danych rejestru przez moc dwóch po jego odczytaniu. Jest to takie samo, jak przesunięcie w lewo.
- Modyfikator dzielenia dzieli dane rejestru przez moc dwóch po jego odczytaniu. Jest to takie samo, jak przesunięcie w prawo.
- Modyfikator saturacji zaciska zakres wartości rejestru od zera do jednego.
Modyfikatory instrukcji można używać w instrukcjach arytmetycznych. Mogą nie być używane w instrukcjach adresowych tekstury.
Modyfikator mnożenia
W tym przykładzie ładuje rejestr docelowy (dest) z sumą dwóch kolorów w operandach źródłowych (src0 i src1) i mnoży wynik przez dwa.
add_x2 dest, src0, src1
Ten przykład łączy dwie modyfikatory instrukcji. Po pierwsze, dodawane są dwa kolory w źródłowych operandach (src0 i src1). Wynik jest następnie mnożony przez dwa i zaciśnięty między 0,0 do 1,0 dla każdego składnika. Wynik zostanie zapisany w rejestrze docelowym.
add_x2_sat dest, src0, src1
Modyfikator dzielenia
W tym przykładzie ładuje rejestr docelowy (dest) z sumą dwóch kolorów w operandach źródłowych (src0 i src1) i dzieli wynik na dwa.
add_d2 dest, src0, src1
Modyfikator saturacji
W przypadku instrukcji arytmetycznych modyfikator nasycenia zaciska wynik tej instrukcji do zakresu od 0,0 do 1,0 dla każdego składnika. W poniższym przykładzie pokazano, jak używać tego modyfikatora instrukcji.
dp3_sat r0, t0_bx2, v0_bx2 ; t0 is bump, v0 is light direction
Ta operacja występuje po dowolnym modyfikatorze instrukcji mnożenia lub dzielenia. _sat jest najczęściej używany do zaciskania wyników produktu kropki. Jednak umożliwia również spójne emulowanie metod multipass, w których bufor ramki jest zawsze w zakresie od 0 do 1, oraz składni directX 6 i 7.0 wielotekstowej, w której nasycenie jest definiowane na każdym etapie.
W tym przykładzie ładuje rejestr docelowy (odst) z sumą dwóch kolorów w operandach źródłowych (src0 i src1) i zaciska wynik w zakresie od 0,0 do 1,0 dla każdego składnika.
add_sat dest, src0, src1
Ten przykład łączy dwie modyfikatory instrukcji. Po pierwsze, dodawane są dwa kolory w źródłowych operandach (src0 i src1). Wynik jest mnożony przez dwa i zaciśnięty między 0,0 do 1,0 dla każdego składnika. Wynik zostanie zapisany w rejestrze docelowym.
add_x2_sat dest, src0, src1
Tematy pokrewne