临时寄存器 (HLSL VS 参考)

顶点着色器临时寄存器用于保存中间结果。

在使用临时寄存器之前,必须先初始化临时寄存器。 每个临时寄存器都具有单写入和三次读取访问权限。 这意味着单个着色器指令可以使用多达三个临时寄存器作为输入。

不能使用临时寄存器中保留的顶点着色器调用中的值。

寄存器由确定每个寄存器的行为方式的属性组成。

财产 描述
名字 r[n]。 n 是可选的寄存器号。 默认值为 0,如果未指定任何值,则使用的值。
计数 最多 12 个寄存器。
I/O 权限 读/写。 此寄存器可由 API 或着色器读取或写入。
读取端口 可以在单个指令中读取寄存器的次数为 3。 临时寄存器是唯一可以在单个指令中读取和写入的寄存器。

 

每个临时寄存器都具有单写入和三次读取访问权限。 因此,指令在其一组输入源作数中可以有多达三个临时寄存器。

不能使用临时寄存器中保留的顶点着色器调用中的值。 在写入临时寄存器之前从临时寄存器读取值的顶点着色器将失败 Direct3D API 调用以创建顶点着色器。

下面是使用临时寄存器的示例:

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
顶点着色器版本 1_1 2_0 2_sw 2_x 3_0 3_sw
临时注册 x x x x x x

 

顶点着色器寄存器