Maskierung des Zielregisters

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

  • dx9_graphics_reference_asm_vs_registers_modifiers_masking: Dieser Abschnitt enthält Regeln zum Anwenden von Masken auf Zielregister.
  • Texture_Register_Masks: Texturregister verfügen über einige eindeutige Regeln.

Maskierung des Zielregisters

Wie in der folgenden Tabelle gezeigt, kann die Maskierung (wobei are eines der gültigen Vertexshaderregister des Vertexshaders ist) auf die einzelnen Komponenten der Vektordaten angewendet werden.

Komponentenmodifizierer BESCHREIBUNG
r.{x}{y}{z}{w} Zielmaske

 

  • Im Allgemeinen ist das Angeben von Schreibmasken für Zielregister eine gute Codierungsart. Dies erleichtert das Lesen und Verwalten von Code.
  • Eine beliebige Kombination von Komponenten kann angegeben werden (einschließlich keiner), solange x vor y, y vor z und z vor w liegt.
  • 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 weist keine Maskeneinschränkung auf.
  • 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 Standardschreibmaske (xyzw).

Texturregistermasken

Die Validierungsregeln für die Verwendung von Modifizierern für Texturkoordinatenregister sind strenger 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 jedes oT#-Register muss genau eine der folgenden Sein:
    • .x
    • .Xy
    • .Xyz
    • .xyzw (entspricht der Verwendung von Komponentenmodifizierern)

Beispielsweise kann ein Vertexshader in separaten Anweisungen in Texturregistern 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