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
Zugehörige Themen