if_comp (ピクセル シェーダ)
if_comp (ピクセル シェーダ)
シェーダ内で計算可能な値に基づく条件に従って、if...else...endif ブロックを開始する。この命令は、条件に基づいてコードのブロックをスキップするために使う。
構文
if_comp src0, src1 |
---|
ここで
_comp は、2 つの入力レジスタの比較である。次のいずれかを指定できる。
構文 比較 _gt より大きい _lt より小さい _ge 以上 _le 以下 _eq 等しい _ne 等しくない src0 は入力レジスタである。成分の指定が必要である。
src1 は入力レジスタである。成分の指定が必要である。
注意
ピクセル シェーダのバージョン | 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;
浮動小数点数に対して等しい比較モードと等しくない比較モードを使うときは、注意すること。浮動小数点数の計算では丸めが行われるので、イプシロン値 (0 以外の小さな数) に対する比較を行うと、エラーを防ぐことができる。
次のような制限がある。
- if_comp...else...endif ブロックは、(プレディケーション付きの if ブロックと共に) 最大 24 レイヤまでネストできる。
- src0 レジスタと src1 レジスタには、成分の指定が必要である。
- if_comp ブロックは、else 命令または endif 命令で終わらなければならない。
- if_comp...else...endif ブロックは、loop ブロックにまたがって使うことはできない。if_comp ブロックは、loop ブロックの完全に内側にあるか、loop ブロックを外側で完全に囲まなければならない。
例
この命令は、条件付き動的フロー制御を計算する。
if_lt r3.x, r4.y
// Instructions to run if r3.x < r4.y
else
// Instructions to run otherwise
endif
システム要件
最低限のオペレーティング システム | Windows 98 |