Udostępnij za pośrednictwem


Rejestr kolorów wyjściowych

Rejestry wyjściowe koloru cieniowania pikseli (oC#) to rejestry tylko do zapisu, które generują wyniki dla wielu elementów docelowych renderowania.

Składnia

Oc#

 

Gdzie:

Nazwa Opis
oC0 renderuj element docelowy #0
oC1 renderuj element docelowy nr 1
oC2 renderuj element docelowy 2
oC3 renderuj element docelowy #3

 

Uwagi

  • Jeśli oCn jest zapisywany, ale nie ma odpowiadającego mu elementu docelowego renderowania, to zapis na oCn jest ignorowany.
  • Stany renderowania D3DRS_COLORWRITEENABLE, D3DRS_COLORWRITEENABLE1, D3DRS_COLORWRITEENABLE2 i D3DRS_COLORWRITEENABLE3 określają, które składniki oCn ostatecznie są zapisywane w obiekcie docelowym renderowania (po połączeniu, jeśli ma to zastosowanie). Jeśli moduł cieniowania zapisuje niektóre, ale nie wszystkie składniki zdefiniowane przez D3DRS_COLORWRITEENABLE* stany renderowania dla danego rejestru oCn, kanały niepisane generują niezdefiniowane wartości w odpowiednim obiekcie docelowym renderowania. Jeśli żaden ze składników oCn nie jest zapisany, odpowiedni element docelowy renderowania nie może być w ogóle aktualizowany (jak określono powyżej), więc stany renderowania D3DRS_COLORWRITEENABLE* nie mają zastosowania.

Ograniczenia modelu cieniowania 2

  • OCn można napisać tylko za pomocą mov - ps instrukcji.
  • oC0 musi być zawsze zapisywany w cieniatorze.
  • Podczas zapisywania do dowolnego obiektu oCn nie jest dozwolone żadne źródłowizzle (z wyjątkiem .xyzw = default swizzle) lub modyfikator źródła.
  • Podczas zapisywania w dowolnej liczbie oCn nie jest dozwolona żadna docelowa maska zapisu (z wyjątkiem .xyzw = maska domyślna) ani modyfikator instrukcji.
  • Jeśli oCn jest napisany, należy również napisać oC0 - oCn-1. Na przykład aby zapisać w usłudze oC2, należy również zapisać w oC0 i oC1.
  • Co najwyżej jeden zapis do dowolnego modułu cieniowania oC# jest dozwolony.
  • W przypadku ps_2_x i ps_3_0 nie można zapisywać w rejestrach oC# i oD# w ramach dynamicznej kontroli przepływu lub predykacji (zapisy w kontrolce przepływu statycznego są poprawne).

Ograniczenia modelu cieniowania 3

  • 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 po prostu go nie zapisał, odpowiedni element rendertarget 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.
  • W przypadku ps_3_0 rejestry oC# można zapisywać przy użyciu dowolnych masek zapisu.
  • W przypadku ps_2_x i ps_3_0 nie można zapisywać w rejestrach oC# i oD# w ramach dynamicznej kontroli przepływu lub predykacji (zapisy w kontrolce przepływu statycznego są poprawne).
  • 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

wielu obiektów docelowych renderowania (Direct3D 9)