setp _ comp – vs

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ädikatregister p0.

  • src0 ist ein Quellregister.

  • src1 ist ein Quellregister.

Hinweise

Vertex-Shaderversionen 1_1 2 _ 0 2 _ x 2 _ sw 3 _ 0 3 _ sw
setp _ comp x x x x

Diese Anweisung funktioniert wie:

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 Swizzles des Quellmodifizierers aufgelöst wurden).

Quellregister ermöglichen das Angeben beliebiger Komponentenwischen.

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. Dies ist die Syntax:

([!]p0[.swizzle]) instruction dest, srcReg, ...

Hierbei gilt:

  • [!] ist ein optionaler boolescher NOT-Wert.
  • p0 ist das Prädikatregister.
  • [.swizzle ] ist eine optionale Swizzle, die auf den Inhalt des Prädikatregisters angewendet werden soll, bevor sie zum Maskieren der Anweisung verwendet wird. Die verfügbaren Swizzles sind: .xyzw (Standard, wenn keiner angegeben ist) oder eine beliebige Replizieren-Swizzle: .x/.r, .y/.g, .z/.b oder .a/.w.
  • -Anweisung ist eine beliebige arithmetische Anweisung oder Texturanweisung. Dies kann keine statische oder dynamische Flusssteuerungsanweisung sein.
  • dest, srcReg, ... sind die register, die für die Anweisung erforderlich sind.

Wenn das Prädikatregister mit Komponentenwerten (true, true, false, false) 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 eine 2-Komponenten-Add-Datei 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.

Durch Anwenden des Prädikatregisters auf eine arithmetische oder Texturanweisung wird die Anzahl der Anweisungsslots um 1 erhöht.

Das Prädikatregister kann auch auf angewendet werden, wenn pred - vs, callnz pred - vs and breakp - vs instructions. Diese Anweisungen zur Flusssteuerung haben keine Erhöhung der Anzahl der Anweisungsslots bei Verwendung des Prädikatregisters.

Vertex-Shaderanweisungen