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