setp_comp – im Vergleich
Legen Sie das Prädikatregister fest.
Syntax
setp_comp dst, src0, src1 |
---|
Hierbei gilt:
_comp ist ein Kanalvergleich zwischen den beiden Quellregistern. Folgende Werte sind möglich:
Syntax Vergleich _Gt Größer als _Lt Kleiner als _Ge Größer als oder gleich _Le Kleiner als oder gleich _Eq Gleich _Ne Ungleich dst ist das Prädikatregisterregister , p0.
src0 ist ein Quellregister.
src1 ist ein Quellregister.
Bemerkungen
Vertex-Shaderversionen | 1_1 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|
setp_comp | x | x | x | x |
Diese Anweisung funktioniert wie folgt:
per channel in destination write mask
{
dst.channel = src0.channel cmp src1.channel
}
Speichern Sie für jeden Kanal, der gemäß der Zielschreibmaske geschrieben werden kann, das boolesche Ergebnis des Vergleichsvorgangs zwischen den entsprechenden Kanälen von src0 und src1 (nachdem die Quellmodifizierer-Swizzles aufgelöst wurden).
Quellregister ermöglichen die Angabe beliebiger Komponentenschwemme.
Das Zielregister lässt beliebige Schreibmasken zu.
Das dest register muss das Prädikatregister sein.
Anwenden des Prädikatregisters
Nachdem das Prädikatregister mit setp initialisiert wurde, kann es verwendet werden, um eine Anweisung pro Komponente zu steuern. Hier sehen Sie die Syntax:
([!]p0[.swizzle]) instruction dest, srcReg, ...
Hierbei gilt:
- [!] ist ein optionaler boolescher NOT-Wert
- p0 ist das Prädikatregister
- [.swizzle] ist ein optionaler Swizzle, der auf den Inhalt des Prädikatregisters angewendet werden kann, bevor es zum Maskieren der Anweisung verwendet wird. Die verfügbaren Swizzles sind .xyzw (Standardwert, wenn keine angegeben ist) oder beliebige Replikatschwänze: .x/.r, .y/.g, .z/.b oder .a/.w.
- -Anweisung ist eine beliebige aritmetische Oder Texturanweisung. Dies kann keine statische oder dynamische Ablaufsteuerungsanweisung sein.
- dest, srcReg, ... sind die Register, die für die Anweisung erforderlich sind
Wenn das Prädikatregister mit (true, true, false, false) Komponentenwerten eingerichtet wurde, kann es auf diese Anweisung angewendet werden:
// given r0 = 0,0,1,1
// given r1 = 1,1,0,0
setp_le p0, r0, r1
(p0) add r2, r3, r4
, um ein Hinzufügen von 2 Komponenten auszuführen.
r2.x = r3.x + r4.x
r2.y = r3.y + r4.y
Die x- und y-Komponenten von r2 werden nicht geschrieben, da das Prädikatregister false in den Komponenten z und w enthielt.
Das Anwenden des Prädikatregisters auf eine Arithmetik- oder Texturanweisung erhöht die Anzahl der Befehlsslots um 1.
Das Prädikatregister kann auch auf Anweisungen angewendet werden , wenn pred - vs, callnz pred - vs und breakp - vs . Diese Ablaufsteuerungsanweisungen haben keine Erhöhung der Anzahl der Befehlsslots bei Verwendung des Prädikatregisters.
Zugehörige Themen