Temporäres Register (HLSL VS-Referenz)

Ein temporäres Vertex-Shaderregister wird verwendet, um Zwischenergebnisse zu speichern.

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 verbleiben, können nicht verwendet werden.

Ein Register besteht aus Eigenschaften, die bestimmen, wie sich die einzelnen Register verhalten.

Eigenschaft BESCHREIBUNG
Name r[n]. n ist eine optionale Registernummer. Der Standardwert ist 0 und ist 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.
Ports lesen Die Häufigkeit, mit der ein Register innerhalb einer einzelnen Anweisung gelesen werden kann, ist 3. Ein temporäres Register ist das einzige Register, das mehr als einmal in einer einzigen Anweisung 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 Eingabequellopernden enthalten.

Es können keine Werte in einem temporären Register verwendet werden, die von vorherigen Aufrufen des Vertex-Shaders verbleiben. Vertex-Shader, die einen Wert aus einem temporären Register lesen, bevor sie in ihn schreiben, schlagen beim Direct3D-API-Aufruf fehl, um den Vertex-Shader zu erstellen.

Beispiel

Hier sehen Sie ein Beispiel für die Verwendung eines temporären Registers:

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äre Registrierung x x x x x x

 

Vertex-Shaderregister