Share via


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