Máscara de Gravação de Registro de Destino

Uma máscara de gravação controla quais componentes de um registro de destino são gravados após a conclusão de uma instrução. Uma máscara de gravação de saída é permitida desde que os componentes estejam na ordem de .rgba ou .xyzw. Ou seja, .rba e .xw são máscaras válidas. Os registros de textura têm um conjunto de regras e registros não textuais têm outro conjunto de regras.

Sintaxe

dst.writemask

 

onde

  • dst é um registro de destino.
  • writemask é uma sequência de máscaras de um dos conjuntos: (x,y,z,w) ou (vermelho, verde, azul, alfa).

Comentários

As máscaras de gravação de destino a seguir estão disponíveis.

Versões do sombreador de pixel 1_1 1_2 1_3 1_4 2_0 2_x 2_sw 3_0 3_sw
.xyzw (padrão) x x x x x x x x x
.Xyz x x x x x x x x x
.W x x x x x x x x x
máscara arbitrária x x x x x x

 

A máscara arbitrária permite que qualquer conjunto de canais seja combinado para produzir uma máscara. Os canais devem ser listados na ordem r, g, b, a , por exemplo, register.rba, que atualiza os canais vermelho, azul e alfa do destino. A máscara arbitrária está disponível na versão 1_4 ou superior.

Se nenhuma máscara de gravação de destino for especificada, a máscara de gravação de destino usará como padrão o caso rgba. Em outras palavras, todos os canais no registro de destino são atualizados.

Para as versões 1_0 a 1_3, a instrução aritmética dp3 - ps dp3 pode usar apenas as máscaras de gravação de saída .rgb ou .rgba.

Máscaras de gravação de registro de destino têm suporte apenas para operações aritméticas. Eles não podem ser usados em instruções de endereçamento de textura, com exceção das instruções da versão 1_4, texcrd - ps e texld - ps_2_0 e para cima.

O padrão é gravar todos os quatro canais de cores.

// All four color channels can be written by explicitly listing them.
mul r0.rgba, t0, v0

// Or, the default mask can be used to write all four channels.
mul r0, t0, v0

A máscara de gravação alfa também é conhecida como máscara de gravação escalar, pois usa o pipeline escalar.

add r0.a, t1, v1

Portanto, essa instrução efetivamente coloca a soma do componente alfa de t1 e o componente alfa da v1 em r0.a.

A máscara de gravação de cor é usada para controlar a gravação nos canais de cores.

// The color write mask is also referred to as the vector write mask, 
//   because it uses the vector pipeline.
mul r0.rgb, t0, v0

Para a versão 1_4, máscaras de gravação de destino podem ser usadas em qualquer combinação, desde que as máscaras sejam ordenadas r,g,b,a.

// This example updates the red, blue, and alpha channels.
mov r0.rba, r1

Uma instrução co-emitida permite que duas instruções potencialmente diferentes sejam emitidas simultaneamente. Isso é feito executando as instruções no pipeline alfa e no pipeline RGB.

  mul r0.rgb, t0, v0
+ add r1.a,   t1, c1

A vantagem das instruções de emparelhamento dessa maneira é que ela permite que diferentes operações sejam executadas no vetor e no pipeline escalar em paralelo.

Esses registros de saída do sombreador de vértice são restritos às seguintes máscaras de gravação:

Tipo de Registro Máscara de Gravação Necessária
oFog nenhuma máscara de gravação explícita é permitida neste registro escalar
Opta nenhuma máscara de gravação explícita é permitida neste registro escalar
Opos .xyzw(que é o padrão)
Ot # máscara combinada: .x | .xy | .xyz | .xyzw (que é o padrão)

 

Modificadores de registro de sombreador de pixel