Maschera di scrittura del registro di destinazione

Una maschera di scrittura controlla quali componenti di un registro di destinazione vengono scritti dopo il completamento di un'istruzione. È consentita una maschera di scrittura di output purché i componenti si trovino nell'ordine di .rgba o xyzw. Vale a dire, .rba e .xw sono maschere valide. I registri delle trame hanno un set di regole e registri non di trama hanno un altro set di regole.

Sintassi

dst.writemask

 

dove

  • dst è un registro di destinazione.
  • la maschera di scrittura è una sequenza di maschere da set: (x,y,z,w) o (rosso, verde, blu, alfa).

Commenti

Sono disponibili le maschere di scrittura di destinazione seguenti.

Versioni del pixel shader 1_1 1_2 1_3 1_4 2_0 2_x 2_sw 3_0 3_sw
.xyzw (impostazione predefinita) 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
maschera arbitraria x x x x x x

 

La maschera arbitraria consente di combinare qualsiasi set di canali per produrre una maschera. I canali devono essere elencati nell'ordine r, g, b, a , ad esempio register.rba, che aggiorna i canali rosso, blu e alfa della destinazione. La maschera arbitraria è disponibile nella versione 1_4 o successiva.

Se non viene specificata alcuna maschera di scrittura di destinazione, per impostazione predefinita la maschera di scrittura di destinazione viene applicata alla distinzione tra maiuscole e minuscole rgba. In altre parole, tutti i canali nel registro di destinazione vengono aggiornati.

Per le versioni da 1_0 a 1_3, l'istruzione aritmetica dp3 - ps dp3 può usare solo le maschere di scrittura di output rgb o rgba.

Le maschere di scrittura del registro di destinazione sono supportate solo per le operazioni aritmetiche. Non possono essere usate nelle istruzioni di indirizzamento delle trame, ad eccezione delle istruzioni della versione 1_4, texcrd - ps e texld - ps_2_0 e versioni successive.

L'impostazione predefinita consiste nel scrivere tutti e quattro i canali di colore.

// 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

La maschera di scrittura alfa è detta anche maschera di scrittura scalare, perché usa la pipeline scalare.

add r0.a, t1, v1

Quindi questa istruzione inserisce in modo efficace la somma del componente alfa di t1 e il componente alfa di v1 in r0.a.

La maschera di scrittura dei colori viene utilizzata per controllare la scrittura nei canali di colore.

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

Per la versione 1_4, le maschere di scrittura di destinazione possono essere usate in qualsiasi combinazione, purché le maschere siano ordinate r,g,b,a.

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

Un'istruzione condivisa consente l'emissione simultanea di due istruzioni potenzialmente diverse. Questa operazione viene eseguita eseguendo le istruzioni nella pipeline alfa e nella pipeline RGB.

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

Il vantaggio delle istruzioni di associazione in questo modo consiste nel fatto che consente l'esecuzione di diverse operazioni nella pipeline vettoriale e scalare in parallelo.

Questi registri di output del vertex shader sono limitati alle maschere di scrittura seguenti:

Tipo di registrazione Maschera di scrittura obbligatoria
oFog nessuna maschera di scrittura esplicita è consentita in questo registro scalare
Opta nessuna maschera di scrittura esplicita è consentita in questo registro scalare
Opos .xyzw(che è l'impostazione predefinita)
Ot # maschera combinata: .x | .xy | .xyz | .xyzw (impostazione predefinita)

 

Modificatori del registro pixel shader