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 |