Udostępnij za pośrednictwem


Rejestr głębokości danych wyjściowych

Rejestr głębi danych wyjściowych cieniowania pikseli (oDepth) jest rejestrem skalarnym tylko do zapisu z zakresem [0..1], który zwraca nową wartość głębokości testu głębokości względem buforu wzornika głębokości.

Składnia

oDepth

 

Gdzie:

Nazwa Opis
oDepth Nowa wartość głębokości testu głębokości dla buforu wzornika głębokości

 

Ważne jest, aby pamiętać, że zapisywanie do oDepth powoduje utratę wszelkich algorytmów optymalizacji buforu głębokości specyficznego dla sprzętu (tj. hierarchicznych Z), które przyspieszają wydajność testu głębokości.

Podczas zapisywania w formacie oDepth wymagane jest replikowanie pliku swizzle źródłowego (.x | .y | .z | .w). Jawne maski zapisu są niedozwolone.

Zapisywanie w rejestrze oDepth zastępuje wartość głębokości interpolowanej (i ignoruje wszelkie wartości renderowania stronniczości głębokości/nachylenia skali). Jeśli nie utworzono ani nie dołączono buforu głębokości do urządzenia, zapis w obiekcie oDepth jest ignorowany.

Jeśli pracujesz w trybie wieloamperowym i zapisujesz w trybie oDepth, ponieważ cieniowanie pikseli jest uruchamiane tylko raz na piksel, wartość głębokości jest replikowana dla wszystkich omówionych lokalizacji podrzędnych. Test głębokości nadal odbywa się na próbkę, ale nie masz wartości głębokości dla próbki przechodzącej do porównania z cieniowania pikseli, tak jak w przypadku, gdy nie zapisano wartości oDepth.

Jeśli aplikacja ma bufor w-buffer ustawiony jako bufor głębokości, należy wziąć to pod uwagę podczas zapisywania w formacie oDepth. Potencjalnie musi wysłać informacje o zakresie w do cieniowania pikseli i obliczyć zakres w, aby skalować wartości w zapisane do oDepth.

Ograniczenia ps_2_0 i ps_2_x

  • ODepth można napisać tylko za pomocą mov - ps instrukcji i można to zrobić tylko raz.
  • Podczas zapisywania w formacie oDepth nie jest dozwolony żaden modyfikator źródła.
  • Podczas zapisywania w formacie oDepth nie jest dozwolony żaden modyfikator instrukcji.
  • Brak zapisu w elemecie oDepth z poziomu konstrukcji sterowania przepływem lub w przypadku korzystania z predykacji.

ograniczenia ps_3_0

  • W przypadku ps_3_0 dane wyjściowe rejestrują oC# i oD# można zapisać dowolną liczbę razy. Dane wyjściowe cieniowania pikseli pochodzą z zawartości rejestrów wyjściowych na końcu wykonywania cieniowania. Jeśli zapis w rejestrze danych wyjściowych nie występuje, być może ze względu na sterowanie przepływem lub jeśli moduł cieniowania nie zapisał go, odpowiedni element docelowy renderowania również nie jest aktualizowany. Jeśli zostanie zapisany podzbiór kanałów w rejestrze danych wyjściowych, wartości niezdefiniowane zostaną zapisane w pozostałych kanałach.
  • Możesz zapisać w formacie oDepth w ramach sterowania przepływem lub predykacji tak długo, jak wszystkie możliwe ścieżki ostatecznie zapisują się w rejestrze.
  • Nie można wykonywać żadnych obliczeń gradientu (lub operacji, które niejawnie wywołują obliczenia gradientu, takie jak texld - ps_2_0 i w górę, texldb - ps, texldp - ps) wewnątrz instrukcji sterowania przepływem, których warunki rozgałęziania różnią się w zależności od pierwotnej (tj. dynamiczne instrukcje sterowania przepływem). Predykacja instrukcji nie jest uznawana za dynamiczne sterowanie przepływem.

rejestruje