Schreibmaske für Zielregister

Eine Schreibmaske steuert, welche Komponenten eines Zielregisters nach Abschluss einer Anweisung geschrieben werden. Eine Ausgabeschreibmaske ist zulässig, solange sich die Komponenten in der Reihenfolge .rgba oder .xyzw befinden. Das heißt, .rba und .xw sind gültige Masken. Texturregister verfügen über einen Satz von Regeln, und Nichttexturregister verfügen über einen weiteren Satz von Regeln.

Syntax

dst.writemask

 

where

  • dst ist ein Zielregister.
  • writemask ist eine Abfolge von Masken aus einem Satz: (x,y,z,w) oder (rot, grün, blau, alpha).

Bemerkungen

Die folgenden Zielschreibmasken sind verfügbar.

Pixelshaderversionen 1_1 1_2 1_3 1_4 2_0 2_x 2_sw 3_0 3_sw
.xyzw (Standard) 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
beliebige Maske x x x x x x

 

Die beliebige Maske ermöglicht es, eine beliebige Gruppe von Kanälen zu kombinieren, um eine Maske zu erzeugen. Die Kanäle müssen in der Reihenfolge r, g, b, a aufgeführt werden, z. B. register.rba, die die roten, blauen und Alphakanäle des Ziels aktualisiert. Die beliebige Maske ist in Version 1_4 oder höher verfügbar.

Wenn keine Zielschreibmaske angegeben wird, wird für die Zielschreibmaske standardmäßig der rgba-Fall verwendet. Anders ausgedrückt: Alle Kanäle im Zielregister werden aktualisiert.

Für die Versionen 1_0 bis 1_3 kann die arithmetische Anweisung dp3 - ps dp3 nur die Ausgabeschreibmasken .rgb oder .rgba verwenden.

Schreibmasken für Zielregister werden nur für arithmetische Operationen unterstützt. Sie können nicht für Texturadressierungsanweisungen verwendet werden, mit Ausnahme der Anweisungen der Version 1_4, texcrd - ps und texld - ps_2_0 und höher.

Standardmäßig werden alle vier Farbkanäle geschrieben.

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

Die Alphaschreibmaske wird auch als Skalarschreibmaske bezeichnet, da sie die Skalarpipeline verwendet.

add r0.a, t1, v1

Diese Anweisung setzt also effektiv die Summe der Alphakomponente von t1 und der Alphakomponente von v1 in r0.a.

Die Farbschreibmaske wird verwendet, um das Schreiben in die Farbkanäle zu steuern.

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

Für Version 1_4 können Zielschreibmasken in beliebiger Kombination verwendet werden, solange die Masken r,g,b,a sortiert sind.

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

Eine gemeinsam ausgestellte Anweisung ermöglicht es, zwei potenziell unterschiedliche Anweisungen gleichzeitig zu erteilen. Dies wird erreicht, indem die Anweisungen in der Alphapipeline und der RGB-Pipeline ausgeführt werden.

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

Der Vorteil der Kopplungsanweisungen auf diese Weise besteht darin, dass verschiedene Vorgänge in der Vektor- und Skalarpipeline parallel ausgeführt werden können.

Diese Vertexshaderausgaberegister sind auf die folgenden Schreibmasken beschränkt:

Registrierungstyp Erforderliche Schreibmaske
oFog Für dieses Skalarregister ist keine explizite Schreibmaske zulässig.
Setzt Für dieses Skalarregister ist keine explizite Schreibmaske zulässig.
Opos .xyzw(Dies ist die Standardeinstellung)
Ot # kombinierte Maske: .x | .xy | .xyz | .xyzw (dies ist die Standardeinstellung)

 

Pixelshader-Registermodifizierer