Share via


Registro temporal (referencia de VS de HLSL)

Un registro temporal del sombreador de vértices se usa para contener los resultados intermedios.

Se debe inicializar un registro temporal antes de usarlo. Cada registro temporal tiene acceso de escritura única y triple lectura. Esto significa que una única instrucción de sombreador puede usar hasta tres registros temporales como entradas.

No se pueden usar los valores de un registro temporal que permanezcan de las invocaciones anteriores del sombreador de vértices.

Un registro consta de propiedades que determinan cómo se comporta cada registro.

Propiedad Descripción
Nombre r[n]. n es un número de registro opcional. El valor predeterminado es 0 y es el valor utilizado si no se especifica ningún valor.
Count Un máximo de 12 registros.
Permisos de E/S Lectura/escritura El sombreador puede leer o escribir este registro.
Puertos de lectura El número de veces que se puede leer un registro en una sola instrucción es 3. Un registro temporal es el único registro que se puede leer y escribir más de una vez en una sola instrucción.

 

Cada registro temporal tiene acceso de escritura única y triple lectura. Por lo tanto, una instrucción puede tener hasta tres registros temporales en su conjunto de operandos de origen de entrada.

No se pueden usar valores de un registro temporal que permanezcan de invocaciones anteriores del sombreador de vértices. Los sombreadores de vértices que leen un valor de un registro temporal antes de escribir en él producirán un error en la llamada api de Direct3D para crear el sombreador de vértices.

Ejemplo

Este es un ejemplo de uso de un registro temporal:

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
Versiones del sombreador de vértices 1_1 2_0 2_sw 2_x 3_0 3_sw
Registro temporal x x x x x x

 

Registros de sombreador de vértices