ps_3_0 Register
Pixelshader sind von Registern abhängig, um Vertexdaten abzurufen, Pixeldaten auszugeben, temporäre Ergebnisse während Berechnungen zu speichern und Textursamplingphasen zu identifizieren. Es gibt mehrere Arten von Registern mit jeweils eindeutigen Funktionen. Dieser Abschnitt enthält Referenzinformationen für die Eingabe- und Ausgaberegister, die von Pixelshader Version 3_0 implementiert werden.
Neue Register
Eingaberegister
Die Eingaberegister (v#) sind jetzt vollständig gleitkomma, und die Texturkoordinatenregister(t#) wurden darin konsolidiert. Der dcl_semantics (sm3 – ps asm) oben im Shader wird verwendet, um zu beschreiben, was in einem bestimmten Input_Register enthalten ist. Für dieses Modell wird eine Semantik für die Pixeltypen eingeführt (analog zur Scheitelpunktseite). Es wird keine Klemmung durchgeführt, wenn die Eingaberegister als Farben (z. B. Texturkoordinaten) definiert sind. Die Auswertung der als Farbe definierten Register unterscheidet sich von den Texturkoordinaten beim Multisampling.
Gesichtserkennungsregister
Das Gesichtserkennungsregister (vFace) ist für dieses Modell neu. Dies ist ein Gleitkomma-Skalarregister, das schließlich den primitiven Bereich enthält. In ps_3_0 ist jedoch nur das Zeichen dieses Registers gültig. Wenn der Wert also kleiner als null ist (das Vorzeichenbit ist negativ festgelegt), ist der Grundtyp die Rückseite (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 Pixelshaders kann die Anwendung entscheiden, welche Beleuchtungstechnik verwendet werden soll. Auf diese Weise lässt sich eine beidseitige Beleuchtung erreichen. Dieses Register erfordert eine Deklaration, sodass die nicht deklarierte Verwendung als Fehler gekennzeichnet wird. Für Linien und Punktgrundtypen ist dieses Register nicht definiert. Das Gesichtserkennungsregister kann nur mit den folgenden Anweisungen als Bedingung verwendet werden: setp_comp - ps, if_comp - ps oder break_comp - ps.
Schleifenzählerregister
Das Schleifenzählerregister (AL ) ist für dieses Modell neu. Es wird automatisch bei jeder Ausführung der Schleife – ps/endloop – ps block 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 für dieses Modell neu. Sie enthält die aktuellen Pixel (x, y) in den entsprechenden Kanälen. Die Kanäle (z, w) sind nicht definiert. Dieses Register erfordert eine Deklaration, sodass die nicht deklarierte Verwendung als Fehler gekennzeichnet wird. Wenn dieses Register deklariert wird, muss genau eine der folgenden Masken vorhanden sein: .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# | Konstanter Float-Register | 224 | R | 1 | Unbegrenzt | 4 | Nein | 0000 | Nein |
Ich # | Konstanter ganzzahliger Register | 16 | R | 1 | 1 | 4 | Nein | 0000 | Nein |
B # | Boolesches Konstantenregister | 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 | Face_Register | 1 | R | 1 | Unbegrenzt | 1 | Nein | Keine | Ja |
vPos | Position_Register | 1 | R | 1 | Unbegrenzt | 4 | Nein | Keine | Ja |
Al | Loop_Counter_Register | 1 | R | 1 | Unbegrenzt | 1 | – | Keine | Nein |
Hinweise:
- Standardwerte für Samplersuche sind vorhanden, werte hängen jedoch vom Texturformat ab.
Die Anzahl der Leseports ist die Anzahl der verschiedenen Register (für jeden Registertyp), die in einer einzigen 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 |
Zugehörige Themen