setp_comp - vs

設定述詞暫存器。

Syntax

setp_comp dst、src0、src1

 

其中:

  • _comp是兩個來源暫存器之間的每個通道比較。 可以是下列其中一項:

    Syntax 比較
    _燃氣輪機 大於
    _lt 小於
    _通用 電氣 大於或等於
    _樂 小於或等於
    _情 商 等於
    _ne 不等於

     

  • dst 是 述詞暫存器緩存 器 p0。

  • src0 是來源暫存器。

  • src1 是來源暫存器。

備註

頂點著色器版本 1_1 2_0 2_x 2_sw 3_0 3_sw
setp_comp x x x x

 

此指令的運作方式如下:

per channel in destination write mask
{
  dst.channel = src0.channel cmp src1.channel
}

針對每個可以根據目的地寫入遮罩所撰寫的通道,在解析來源修飾詞 swizzles 之後,儲存 src0 和 src1 對應通道之間比較作業的布林值結果) (。

來源暫存器允許指定任意元件虛線。

目的地暫存器允許任意寫入遮罩。

dest 暫存器必須是述詞暫存器。

套用述詞暫存器

使用 setp 初始化述詞暫存器之後,就可以用來控制每個元件的指令。 以下是語法:

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

其中:

  • [!]是選擇性布林值 NOT
  • p0 是述詞暫存器
  • [.swizzle] 是選擇性的 swizzle,可套用至述詞暫存器的內容,再使用它來遮罩指令。 可用的 swizzles 為:.xyzw (預設為未指定) ,或任何複寫 swizzle:.x/.r、.y/.g、.z/.b 或 .a/.w。
  • 指令是任何寫入或紋理指令。 這不可以是靜態或動態流程式控制制指令。
  • dest, srcReg, ...是指示所需的暫存器

假設述詞暫存器已設定 (為 true、true、false、false) 元件值,則可以套用至此指示:

// given r0 = 0,0,1,1
// given r1 = 1,1,0,0
setp_le p0, r0, r1
(p0) add r2, r3, r4

表示執行 2 個元件新增。

r2.x = r3.x + r4.x
r2.y = r3.y + r4.y

r2 的 x 和 y 元件將不會寫入,因為述詞暫存器包含在元件 z 和 w 中為 false。

將述詞暫存器套用至算術或紋理指令會增加其指令位置計數 1。

如果 pred - vscallnz pred - vsbreakp - vs 指示,也可以套用述詞暫存器。 這些流程式控制制指令在使用述詞暫存器時,指令位置計數不會有任何增加。

頂點著色器指示