Ausgabefarbregister

Die Pixel-Shader-Farbausgaberegister (oC#) sind Nur-Schreib-Register, die Ergebnisse an mehrere Renderziele aus geben.

Syntax

Oc #

Hierbei gilt:

Name BESCHREIBUNG
oC0 Renderziel # 0
oC1 Renderziel # 1
oC2 Renderziel # 2
oC3 Renderziel # 3

Bemerkungen

  • Wenn oCn geschrieben wird, aber kein entsprechendes Renderziel besteht, wird dieser Schreibzugriff auf oCn ignoriert.
  • Die Renderzustände D3DRS _ COLORWRITEENABLE, D3DRS _ COLORWRITEENABLE1, D3DRS _ COLORWRITEENABLE2 und D3DRS COLORWRITEENABLE3 bestimmen, welche Komponenten von oCn letztendlich in das Renderziel geschrieben werden (ggf. nach _ der Mischung). Wenn der Shader einige, aber nicht alle Komponenten schreibt, die durch den D3DRS COLORWRITEENABLE-Renderzustände für ein bestimmtes _ oCn-Register definiert sind, erzeugen die ungeschriebenen Kanäle nicht definierte Werte im entsprechenden * Renderziel. Wenn keine der Komponenten eines oCn geschrieben wird, darf das entsprechende Renderziel überhaupt nicht aktualisiert werden (wie oben erwähnt), sodass die D3DRS COLORWRITEENABLE-Renderzustände nicht angewendet _ * werden.

Einschränkungen für Shadermodell 2

  • oCn kann nur mit der mov - ps-Anweisung geschrieben werden.
  • oC0 muss immer im Shader geschrieben werden.
  • Beim Schreiben in einen oCn ist kein Quell-Swizzle (mit Ausnahme von .xyzw = default swizzle) oder source-Modifizierer zulässig.
  • Beim Schreiben in einen oCn ist keine Zielschreibmaske (mit Ausnahme von XYZW = Standardmaske) oder Anweisungsmodifizierer zulässig.
  • Wenn oCn geschrieben wird, muss auch oC0 - oCn-1 geschrieben werden. Um beispielsweise in oC2 zu schreiben, müssen Sie auch in oC0 und oC1 schreiben.
  • Es ist nur ein Schreibzugriff auf oC# pro Shader zulässig.
  • Für ps 2 x und ps 3 0 können Sie nicht in _ _ oC#- und oD-Register innerhalb der dynamischen Flusssteuerung oder Prädication schreiben (Schreibvorgänge in _ _ oC# innerhalb der statischen Flusssteuerung # sind in Ordnung).

Einschränkungen für Shadermodell 3

  • Für ps 3 0 können die Ausgaberegister oC# und oD so oft _ _ wie möglich geschrieben # werden. Die Ausgabe des Pixelschattens stammt aus dem Inhalt der Ausgaberegister am Ende der Shaderausführung. Wenn kein Schreibzugriff in ein Ausgaberegister vor sich geht, z. B. aufgrund der Flusssteuerung oder wenn der Shader es einfach nicht geschrieben hat, wird auch das entsprechende Renderziel nicht aktualisiert. Wenn eine Teilmenge der Kanäle in einem Ausgaberegister geschrieben wird, werden nicht definierte Werte in die verbleibenden Kanäle geschrieben.
  • Für ps _ 3 _ 0 können die oC#-Register mit beliebigen Schreibmasken geschrieben werden.
  • Für ps 2 x und ps 3 0 können Sie nicht in _ _ oC#- und oD-Register innerhalb der dynamischen Flusssteuerung oder Prädication schreiben (Schreibvorgänge in _ _ oC# innerhalb der statischen Flusssteuerung # sind in Ordnung).
  • Sie dürfen keine Farbverlaufsberechnungen (oder Vorgänge, die implizit Farbverlaufsberechnungen aufrufen, z. B. texld – ps _ 2 _ 0und up , texldb – ps, texldp – ps) innerhalb von Flusssteuerungsanweisungen ausführen, deren Verzweigungsbedingungen je nach Primitiven variieren (d.h. dynamische Flusssteuerungsanweisungen). Anweisungsvordication wird nicht als dynamische Flusssteuerung betrachtet.

Register

Mehrere Renderziele (Direct3D 9)