Zielregistermaskierung

Maskierung gibt an, welche Komponenten des Zielregisters mit dem Ergebnis einer Anweisung aktualisiert werden. Texturregister verfügen über einen Satz von Regeln und Nichttexturregister über einen anderen Satz von Regeln.

  • dx9 _ graphics _ reference asm vs registers modifiers masking : Dieser Abschnitt enthält Regeln zum Anwenden von _ _ _ _ _ Masken auf Zielregister.
  • _ _ Texturregistermasken: Texturregister verfügen über einige eindeutige Regeln.

Zielregistermaskierung

Wie in der folgenden Tabelle gezeigt, kann die Maskierung (wobei eines der gültigen Vertex-Shader-Shaderregisterist) auf die einzelnen Komponenten der Vektordaten angewendet werden.

Komponentenmodifizierer Beschreibung
r.{x}{y}{z}{w} Zielmaske
  • Im Allgemeinen ist die Angabe von Zielregister-Schreibmasken ein guter Codierungsstil. Dies erleichtert das Lesen und Verwalten von Code.
  • Es kann eine beliebige Kombination von Komponenten angegeben werden (einschließlich none), solange x vor y, y vor z und z vor w ist.
  • Die oPts- und oFog-Ausgaberegister dürfen nur eine Maske verwenden.
  • Bestimmte Anweisungen erfordern, dass das Zielregister eine einzelne Schreibmaske verwendet: exp, expp, log, logp, pow, rcp und rsq.
  • In Version 1.0 erforderte die frc-Anweisung eine der folgenden Maskenkombinationen: .x oder .y oder .xy. Version 2.0 verfügt über keine Maskeneinschränkung.
  • sincos erfordert eine der folgenden Maskenkombinationen: .x oder .y oder .xyz.
  • m3x2 erfordert die XY-Schreibmaske.
  • m3x3 und m4x3 erfordern die .xyz-Schreibmaske.
  • m3x4 und m4x4 erfordern entweder die .xyz-Schreibmaske oder die Standard-Schreibmaske (xyzw).

Texturregistermasken

Die Validierungsregeln für die Verwendung von Modifizierern für Texturkoordinatenregister sind enger als die Validierungsregeln für andere Register.

  • Wenn oTn geschrieben wird, müssen auch alle vorherigen Register (oTn-1 ~ oT0) geschrieben werden.
  • Die "kombinierte" Schreibmaske für ein beliebiges oT-Register # muss genau eine der folgenden Sein:
    • .x
    • .xy
    • .xyz
    • .xyzw (entspricht nicht der Verwendung von Komponentenmodifizierern)

Beispielsweise kann ein Vertex-Shader in separaten Anweisungen an Texturregister ausgegeben werden.

    oT1.y  
    oT0.y  
    oT2  
    oT0.xz  
    oT1.x

Oder die Anweisungen können kombiniert werden.

    oT0.xyz  
    oT1.xy  
    oT2.xyzw    

Diese Einschränkungen gelten nur für die Texturkoordinatenregister.

Vertex-Shader-Registermodifizierer