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.