Udostępnij za pośrednictwem


rejestry ps_3_0

Cieniowanie pikseli zależy od rejestrów w celu uzyskania danych wierzchołka, danych wyjściowych pikseli, przechowywania tymczasowych wyników podczas obliczeń oraz identyfikowania etapów próbkowania tekstury. Istnieje kilka typów rejestrów, z których każda ma unikatową funkcjonalność. Ta sekcja zawiera informacje referencyjne dotyczące rejestrów wejściowych i wyjściowych implementowanych przez cieniowanie pikseli w wersji 3_0.

Nowe rejestry

Rejestr danych wejściowych

Rejestry wejściowe (v#) są teraz w pełni zmiennoprzecinkowe, a rejestr współrzędnych teksturys (t#) został w nim skonsolidowany. dcl_semantics (sm3 - ps asm) w górnej części cieniowania służy do opisania zawartości zawartej w określonym Input_Register. Semantyka typów pikseli jest wprowadzana (analogicznie do strony wierzchołka) dla tego modelu. Nie jest wykonywane zaciskanie, gdy rejestry wejściowe są definiowane jako kolory (na przykład współrzędne tekstury). Ocena rejestrów zdefiniowanych jako kolor różni się od współrzędnych tekstury podczas wieloamperowania.

Rejestr twarzy

Rejestr twarzy (vFace) jest nowy dla tego modelu. Jest to rejestr skalarny zmiennoprzecinkowa, który ostatecznie będzie zawierać obszar pierwotny. Jednak w ps_3_0 tylko znak tego rejestru jest prawidłowy. W związku z tym, jeśli wartość jest mniejsza niż zero (bit znaku jest ustawiony ujemnie) pierwotny jest twarzą wsteczną (obszar jest ujemny, przeciwkrętowy). W związku z tym w ps_3_0 warto porównać ten rejestr tylko z wartością 0 (> 0 lub < 0). Wewnątrz cieniowania pikseli aplikacja może podjąć decyzję, która technika oświetlenia ma być używana. Dwukierunkowe oświetlenie można osiągnąć w ten sposób. Ten rejestr wymaga deklaracji, więc niezdecydowane użycie będzie oflagowane jako błąd. W przypadku wierszy i punktów pierwotnych ten rejestr jest niezdefiniowany. Rejestr twarzy może być używany tylko jako warunek z następującymi instrukcjami: setp_comp - ps, if_comp - pslub break_comp - ps.

Rejestr licznika pętli

Rejestr licznika pętli (aL) jest nowy dla tego modelu. Automatycznie zwiększa się w każdym wykonaniu pętli — ps/endloop — ps bloku. W razie potrzeby można go użyć w bloku do względnego adresowania. Nie można użyć rejestru licznika pętli poza pętlą.

Rejestrowanie pozycji

Rejestr pozycji (vPos) jest nowy dla tego modelu. Zawiera on bieżące piksele (x, y) w odpowiednich kanałach. Kanały (z, w) są niezdefiniowane. Ten rejestr wymaga deklaracji, więc niezdecydowane użycie będzie oflagowane jako błąd. Po zadeklarowaniu ten rejestr musi mieć dokładnie jedną z następujących masek: .x, .y, .xy.

Typy rejestrów wejściowych

Rejestrować Nazwa Hrabia R/W # Odczytywanie portów # Odczyty/inst Wymiar RelAddr Ustawienia domyślne Wymaga listy DCL
v# rejestrowanie danych wejściowych 10 R 1 Nieograniczony 4 Al Żaden Tak
r# rejestracji tymczasowej 32 R/W 3 Nieograniczony 4 Nie Żaden Nie
c# stały rejestr zmiennoprzecinkowy 224 R 1 Nieograniczony 4 Nie 0000 Nie
ja# stałej liczby całkowitej rejestru 16 R 1 1 4 Nie 0000 Nie
b# stałej rejestracji logicznej 16 R 1 1 1 Nie FAŁSZYWY Nie
p0 Predykate Register 1 R 1 1 1 Nie Żaden Nie
s# Sampler (Direct3D 9 asm-ps) 16 R 1 1 4 Nie Zobacz notatkę 1 Tak
VFace Face_Register 1 R 1 Nieograniczony 1 Nie Żaden Tak
vPos Position_Register 1 R 1 Nieograniczony 4 Nie Żaden Tak
Al Loop_Counter_Register 1 R 1 Nieograniczony 1 N/a Żaden Nie

 

Notatki:

  • Istnieją wartości domyślne dla odnośników przykładowych, ale wartości zależą od formatu tekstury.

Liczba operacji odczytu to liczba różnych rejestrów (dla każdego typu rejestru), które można odczytać w jednej instrukcji.

Typy rejestrów wyjściowych

Rejestrować Nazwa Hrabia R/W Wymiar RelAddr Ustawienia domyślne Wymaga listy DCL
Oc# rejestr kolorów danych wyjściowych Zobacz tekstury wieloelementowe (Direct3D 9) W 4 Nie Żaden Nie
oDepth rejestr głębokości danych wyjściowych 1 W 1 Nie Żaden Nie

 

rejestruje