if_comp - vs
啟動 if bool - vs ... else - vs ... endif - vs block,其條件是以可在著色器中計算的值為基礎。 此指示是用來根據條件略過程式碼區塊。
語法
if_comp src0、src1 |
---|
其中:
_comp是兩個來源暫存器之間的比較。 可以是下列其中一項:
語法 比較 _燃氣輪機 大於 _lt 小於 _通用 電氣 大於或等於 _樂 小於或等於 _情 商 等於 _ne 不等於 src0 是來源暫存器。 需要複寫 swizzle 才能選取元件。
src1 是來源暫存器。 需要複寫 swizzle 才能選取元件。
備註
頂點著色器版本 | 1_1 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|
if_comp | x | x | x | x |
此指示是用來根據條件略過程式碼區塊。
if_lt src0, src1
jump to the corresponding else or endif instruction;
請小心在浮點數上使用等號和不等於比較模式。 由於在浮點計算期間發生四捨五入,因此可以針對 epsilon 值(小型非零數位)進行比較,以避免發生錯誤。
限制包含:
- if_comp... else - vs ... endif - vs blocks (以及述詞 if 區塊) 可以巢狀至 24 層深。
- src0 和 src1 暫存器需要複寫的旋轉。
- if_comp區塊必須以 else - vs 或 endif - vs 指令結尾 。
- if_comp... else - vs ... endif - vs 區塊無法跨越迴圈區塊。 if_comp 區塊必須完全位於迴圈內部或外部 - 與 區塊。
範例
此指令提供條件式動態流程式控制制。
if_lt r3.x, r4.y
// Instructions to run if r3.x < r4.y
else
// Instructions to run otherwise
endif
相關主題