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 einmaligen Schreibzugriff und dreifachen Lesezugriff. Dies bedeutet, dass eine einzelne Shaderanweisung so viele wie 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 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 der Male, in denen ein Register innerhalb einer einzelnen Anweisung gelesen werden kann, beträgt 3. Ein temporäres Register ist das einzige Register, das in einer einzigen Anweisung mehr als einmal gelesen und geschrieben werden kann.

 

Jedes temporäre Register verfügt über einmaligen Schreibzugriff und dreifachen Lesezugriff. Daher kann eine Anweisung so viele wie drei temporäre Register in seinem Satz von Eingabequellenopernden aufweisen.

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 vor dem Schreiben lesen, schlägt den Direct3D-API-Aufruf fehl, um den Vertex-Shader zu erstellen.

Beispiel

Nachfolgend sehen Sie 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

 

Vertex-Shaderregister