Temporäres Register (HLSL VS-Referenz)
Ein temporäres Vertex-Shaderregister wird verwendet, um Zwischenergebnisse zu halten.
Ein temporäres Register muss initialisiert werden, bevor es verwendet wird. Jedes temporäre Register verfügt über Single-Write- und Triple-Read-Zugriff. Dies bedeutet, dass eine einzelne Shaderanweisung bis zu drei temporäre Register als Eingaben verwenden kann.
Werte in einem temporären Register, die von vorherigen Aufrufen des Vertex-Shaders übrig bleiben, können nicht verwendet werden.
Ein Register besteht aus Eigenschaften, die bestimmen, wie sich jedes Register verhält.
| Eigenschaft | Beschreibung |
|---|---|
| Name | r [ n ] . n ist eine optionale Registernummer. Der Standardwert ist 0 und der Wert, der verwendet wird, wenn kein Wert angegeben wird. |
| Anzahl | Maximal 12 Register. |
| E/A-Berechtigungen | Lese-/Schreibzugriff. Dieses Register kann von der API oder vom Shader gelesen oder geschrieben werden. |
| Lesen von Ports | Die Anzahl, mit der ein Register innerhalb einer einzelnen Anweisung gelesen werden kann, ist 3. Ein temporäres Register ist das einzige Register, das in einer einzelnen Anweisung mehr als einmal gelesen und geschrieben werden kann. |
Jedes temporäre Register verfügt über Single-Write- und Triple-Read-Zugriff. Daher kann eine Anweisung bis zu drei temporäre Register in ihrem Satz von Eingabequellenopernden haben.
Es können keine Werte in einem temporären Register verwendet werden, die von vorherigen Aufrufen des Vertex-Shaders übrig bleiben. Vertex-Shader, die einen Wert vor dem Schreiben aus einem temporären Register lesen, führen beim Direct3D-API-Aufruf zum Erstellen des Vertex-Shaders zu einem Fehler.
Beispiel
Hier ist ein Beispiel mit einem temporären Register:
def c4, 0,0,0,1
...
// Decompress position
mov r0.x, v0.x
mov r0.y, c4.w // 1
mov r0.z, v0.y
mov r0.w, c4.w // 1
// Compute theta from distance and time
mov r4.xz, r0 // xz
| Vertex-Shaderversionen | 1_1 | 2 _ 0 | 2 _ sw | 2 _ x | 3 _ 0 | 3 _ sw |
|---|---|---|---|---|---|---|
| Temporäres Register | x | x | x | x | x | x |