ps _ 3 _ 0 Register

Pixel-Shader sind von Registern abhängig, um Scheitelpunktdaten zu erhalten, Pixeldaten ausausgaben, temporäre Ergebnisse während Berechnungen zu enthalten und Texturstichprobenstufen zu identifizieren. Es gibt mehrere Arten von Registern, die jeweils eine eindeutige Funktionalität haben. Dieser Abschnitt enthält Referenzinformationen zu den Eingabe- und Ausgaberegistern, die von Der Pixel-Shader Version 3 _ 0 implementiert wurden.

Neue Register

Eingaberegister

Die Eingaberegister (v) sind jetzt vollständig Gleitkommawerte, und die Texturkoordinatenregister # (t) wurden in ihr # konsolidiert. Die _ dcl-Semantik (sm3 - ps asm) oben im Shader wird verwendet, um zu beschreiben, was in einem bestimmten Eingaberegister enthalten _ ist. Für dieses Modell wird eine Semantik für die Pixeltypen eingeführt (analog zur Scheitelpunktseite). Es wird keine Klammer ausgeführt, wenn die Eingaberegister als Farben (z. B. Texturkoordinaten) definiert sind. Die Auswertung der registers, die als Farbe definiert sind, unterscheidet sich von den Texturkoordinaten beim Multisampling.

Gesichtsregister

Das Gesichtsregister (vFace) ist neu für dieses Modell. Dies ist ein Gleitkommaskalarregister, das schließlich den primitiven Bereich enthält. In Ps _ 3 _ 0 ist jedoch nur das Vorzeichen dieses Registers gültig. Wenn der Wert also kleiner als 0 (null) ist (das Vorzeichenbit ist negativ festgelegt), ist der Grundtyp das Hintergrundgesicht (der Bereich ist negativ, gegen den Uhrzeigersinn). Daher ist es in Ps 3 0 nur sinnvoll, dieses Register mit _ _ 0 (> 0 oder < 0) zu vergleichen. Innerhalb des Pixel-Shaders kann die Anwendung entscheiden, welche Beleuchtungstechnik verwendet werden soll. Auf diese Weise kann eine zweiseitige Beleuchtung erreicht werden. Für dieses Register ist eine Deklaration erforderlich, sodass die nicht deklarierte Verwendung als Fehler gekennzeichnet wird. Für Linien und Punktprimitive ist dieses Register nicht definiert. Das Gesichtsregister kann nur als Bedingung mit den folgenden Anweisungen verwendet werden: setp _ comp - ps, wenn comp - _ psoder break comp - _ ps.

Schleifenzählerregister

Das Loop Counter Register (aL) ist neu für dieses Modell. Sie wird bei jeder Ausführung des Schleifenblocks ps / endloop - ps automatisch inkrementiert. Sie kann bei Bedarf im -Block für die relative Adressierung verwendet werden. Die Verwendung des Schleifenzählerregisters außerhalb der Schleife ist ungültig.

Positionsregister

Das Positionsregister (vPos) ist neu für dieses Modell. Sie enthält die aktuellen Pixel (x, y) in den entsprechenden Kanälen. Die Kanäle (z, w) sind nicht definiert. Für dieses Register ist eine Deklaration erforderlich, sodass die nicht deklarierte Verwendung als Fehler gekennzeichnet wird. Bei der Deklariertkeit muss dieses Register genau eine der folgenden Masken haben: .x, .y, .xy.

Eingaberegistertypen

Registrieren Name Anzahl R/W # Lesen von Ports # Reads/inst Dimension RelAddr Standardeinstellungen Erfordert DCL
v# Eingaberegister 10 R 1 Unbegrenzt 4 Al Keine Ja
R# Temporäres Register 32 R/W 3 Unbegrenzt 4 Nein Keine Nein
c# Constant Float Register 224 R 1 Unbegrenzt 4 Nein 0000 Nein
Ich# Constant Integer Register 16 R 1 1 4 Nein 0000 Nein
b# Konstantes boolesches Register 16 R 1 1 1 Nein FALSE Nein
p0 Prädikatregister 1 R 1 1 1 Nein Keine Nein
s# Sampler (Direct3D 9 asm-ps) 16 R 1 1 4 Nein Siehe Hinweis 1 Ja
vFace _Gesichtsregister 1 R 1 Unbegrenzt 1 Nein Keine Ja
vPos _Positionsregister 1 R 1 Unbegrenzt 4 Nein Keine Ja
Al _ _ Schleifenzählerregister 1 R 1 Unbegrenzt 1 Keine Nein

Hinweise:

  • Die Standardwerte für Samplersuche sind vorhanden, aber die Werte hängen vom Texturformat ab.

Die Anzahl der Leseports ist die Anzahl der verschiedenen Register (für jeden Registertyp), die in einer einzelnen Anweisung gelesen werden können.

Ausgaberegistertypen

Registrieren Name Anzahl R/W Dimension RelAddr Standardeinstellungen Erfordert DCL
Oc # Ausgabefarbregister Siehe Texturen mit mehreren Elementen (Direct3D 9) W 4 Nein Keine Nein
oDepth Ausgabetieferegister 1 W 1 Nein Keine Nein

Register