Modifizierer für ps_1_X

Anweisungsmodifizierer wirken sich auf das Ergebnis der Anweisung aus, bevor sie in das Zielregister geschrieben wird. Verwenden Sie sie beispielsweise, um das Ergebnis mit einem Faktor von zwei zu multiplizieren oder zu dividieren oder um das Ergebnis zwischen Null und 1 zu klammern. Anweisungsmodifizierer werden angewendet, nachdem die Anweisung ausgeführt wird, aber vor dem Schreiben des Ergebnisses in das Zielregister.

Unten finden Sie eine Liste der Modifizierer.

Modifikator Beschreibung Syntax Version 1_1 Version 1_2 Version 1_3 Version 1_4
_x2 Multiplizieren mit 2 instruction_x2 X X X X
_x4 Multiplizieren mit 4 instruction_x4 X X X X
_x8 Multiplizieren mit 8 instruction_x8 X
_d2 Dividieren durch 2 instruction_d2 X X X X
_d4 Dividieren durch 4 instruction_d4 X
_d8 Dividieren durch 8 instruction_d8 X
_saß Sättigung (Klemme von 0 und 1) instruction_sat X X X X

 

  • Der Multiplikationsmodifizierer multipliziert die Registerdaten mit einer Potenz von zwei nach dem Lesen. Dies entspricht einer Schicht nach links.
  • Der Trennmodifizierer dividiert die Registerdaten durch eine Potenz von zwei nach dem Lesen. Dies ist identisch mit einer Schicht nach rechts.
  • Der Sättigungsmodifizierer klemmt den Bereich der Registerwerte von Null bis 1.

Anweisungsmodifizierer können in arithmetischen Anweisungen verwendet werden. Sie können nicht für Texturadressenanweisungen verwendet werden.

Multiplizieren des Modifizierers

In diesem Beispiel wird das Zielregister (dest) mit der Summe der beiden Farben in den Quellopernden (src0 und src1) geladen und das Ergebnis mit zwei multipliziert.

add_x2 dest, src0, src1

In diesem Beispiel werden zwei Anweisungsmodifizierer kombiniert. Zuerst werden zwei Farben in den Quellopernden (src0 und src1) hinzugefügt. Das Ergebnis wird dann mit zwei multipliziert und für jede Komponente zwischen 0,0 und 1,0 geklemmt. Das Ergebnis wird im Zielregister gespeichert.

add_x2_sat dest, src0, src1

Modifizierer dividieren

In diesem Beispiel wird das Zielregister (dest) mit der Summe der beiden Farben in den Quellopernden (src0 und src1) geladen und das Ergebnis durch zwei dividiert.

add_d2 dest, src0, src1

Sättigungsmodifizierer

Für arithmetische Anweisungen klemmt der Sättigungsmodifizierer das Ergebnis dieser Anweisung in den Bereich 0,0 bis 1,0 für jede Komponente. Das folgende Beispiel zeigt, wie Sie diesen Anweisungsmodifizierer verwenden.

dp3_sat r0, t0_bx2, v0_bx2    ; t0 is bump, v0 is light direction

Dieser Vorgang tritt nach einem multiplizierten oder dividieren Anweisungsmodifizierer auf. _sat wird am häufigsten verwendet, um Punktproduktergebnisse zu klammern. Es ermöglicht jedoch auch eine konsistente Emulation von Multipass-Methoden, bei denen sich der Framepuffer immer im Bereich 0 bis 1 befindet, und der DirectX 6- und 7.0-Multitexture-Syntax, in der Sättigung in jeder Phase definiert ist.

In diesem Beispiel wird das Zielregister (Dest) mit der Summe der beiden Farben in den Quellopernden (src0 und src1) geladen, und das Ergebnis wird für jede Komponente in den Bereich 0,0 bis 1,0 klammert.

add_sat dest, src0, src1

In diesem Beispiel werden zwei Anweisungsmodifizierer kombiniert. Zuerst werden zwei Farben in den Quellopernden (src0 und src1) hinzugefügt. Das Ergebnis wird mit zwei multipliziert und für jede Komponente zwischen 0,0 und 1,0 geklemmt. Das Ergebnis wird im Zielregister gespeichert.

add_x2_sat dest, src0, src1

-Pixelshaderanweisungen