![]() |
![]() |
![]() |
A temporary register must be initialized before it is used. Each temporary register has single-write and triple-read access. This means that a single shader instruction can use as many as three temporary registers as inputs.
Values in a temporary register that remain from preceeding invocations of the vertex shader cannot be used.
A register consists of properties that determine how each register behaves.
Property | Description |
---|---|
Name | r[n]. n is an optional register number. The default is 0, and is the value used if no value is specified. |
Count | A maximum of 12 registers. |
I/O permissions | Read/write. This register can be read or written by the application programming interface (API) or by the shader. |
Read ports | The number of times a register can be read within a single instruction is 3. A temporary register is the only register that can be read and written more than once in a single instruction. |
Each temporary register has single-write and triple-read access. Therefore, an instruction can have as many as three temporary registers in its set of input source operands.
No values in a temporary register that remain from preceding invocations of the vertex shader can be used. Vertex shaders that read a value from a temporary register before writing to it will fail the Microsoft Direct3D API call to create the vertex shader.
Here is an example using a temporary 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 shader versions | 1_1 | 2_0 | 2_sw | 2_x | 3_0 | 3_sw |
---|---|---|---|---|---|---|
Temporary Register | x | x | x | x | x | x |