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 für instance, um das Ergebnis um den Faktor zwei zu multiplizieren oder zu dividieren oder um das Ergebnis zwischen 0 und 1 zu spannen. Befehlsmodifizierer werden angewendet, nachdem die Anweisung ausgeführt wird, aber vor dem Schreiben des Ergebnisses in das Zielregister.

Eine Liste der Modifizierer ist unten dargestellt.

Modifizierer 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
_sat Sättigung (Klemme von 0 und 1) instruction_sat X X X X

 

  • Der Multiplikationsmodifizierer multipliziert die Registerdaten mit einer Leistung von zwei, nachdem sie gelesen wurden. Dies ist identisch mit einer Linksverschiebung.
  • Der Teilmodifizierer teilt die Registerdaten nach dem Lesen durch eine Leistung von zwei. Dies ist identisch mit einer Rechtsverschiebung.
  • Der Sättigungsmodifizierer klemmt den Bereich der Registerwerte von 0 bis 1.

Anweisungsmodifizierer können für arithmetische Anweisungen verwendet werden. Sie dürfen nicht für Anweisungen zur Texturadresse verwendet werden.

Mehrfachmodifizierer

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 Befehlsmodifizierer kombiniert. Zunächst 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

Teilmodifizierer

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 geteilt.

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 erfolgt nach einem multiplizierten oder dividieren Befehlsmodifizierer. _sat wird am häufigsten zum Klemmen von Punktergebnissen verwendet. Es ermöglicht jedoch auch eine konsistente Emulation von Multipassmethoden, bei denen der Framepuffer immer im Bereich von 0 bis 1 liegt, und der DirectX 6- und 7.0-Multitexturesyntax, in der die 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 für jede Komponente in den Bereich 0,0 bis 1,0 eingeklemmt.

add_sat dest, src0, src1

In diesem Beispiel werden zwei Befehlsmodifizierer kombiniert. Zunächst 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

Pixel-Shaderanweisungen