Partilhar via


Registo temporário (referência HLSL VS)

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

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

Os valores em um registro temporário que permanecem de 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
Designação r[n]. n é um número de registo opcional. O padrão é 0 e é o valor usado se nenhum valor for especificado.
Contagem Um máximo de 12 registos.
Permissões de E/S Leitura/gravação. Esse registro pode ser lido ou escrito pela API ou pelo sombreador.
Ler portas O número de vezes que um registo pode ser lido numa única instrução é 3. Um registro temporário é o único registro que pode ser lido e escrito mais de uma vez em uma única instrução.

 

Cada registo temporário tem acesso de escrita única e de 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 de invocações anteriores do sombreador de vértice pode ser usado. Os sombreadores de vértice que leem um valor de um registro temporário antes de gravá-lo falharão na chamada da API do Direct3D para criar o sombreador de vértice.

Exemplo

Eis um exemplo da utilização de um registo 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 de sombreador de vértice 1_1 2_0 2_sw 2_x 3_0 3_sw
Registo temporário x x x x x x

 

Vertex Shader Registra