Registro temporário (referência vs HLSL)

Um registro temporário de sombreador de vértice é usado para conter resultados intermediários.

Um registro temporário deve ser inicializado antes de ser usado. Cada registro temporário tem acesso de gravação única e leitura tripla. Isso significa que uma única instrução de sombreador pode usar até três registros temporários como entradas.

Valores em um registro temporário que permanecem das invocações anteriores do sombreador de vértice não podem ser usados.

Um registro consiste em propriedades que determinam como cada registro se comporta.

Propriedade Descrição
Nome r[n]. n é um número de registro opcional. O padrão é 0 e é o valor usado se nenhum valor for especificado.
Contagem Um máximo de 12 registros.
Permissões de E/S Leitura/gravação. Esse registro pode ser lido ou gravado pela API ou pelo sombreador.
Portas de leitura O número de vezes que um registro pode ser lido em uma única instrução é 3. Um registro temporário é o único registro que pode ser lido e gravado mais de uma vez em uma única instrução.

 

Cada registro temporário tem acesso de gravação única e leitura tripla. Portanto, uma instrução pode ter até três registros temporários em seu conjunto de operandos de origem de entrada.

Nenhum valor em um registro temporário que permaneça das invocações anteriores do sombreador de vértice pode ser usado. Sombreadores de vértice que leem um valor de um registro temporário antes de gravar nele falharão na chamada à API do Direct3D para criar o sombreador de vértice.

Exemplo

Aqui está um exemplo usando um registro temporário:

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
Versões do sombreador de vértice 1_1 2_0 2_sw 2_x 3_0 3_sw
Registro Temporário x x x x x x

 

Registros de sombreador de vértice