次の方法で共有


setp_comp - ps

プレディケーション レジスタを設定します。

構文

setp_comp dst, src0, src1

この場合

  • _comp は、2 つのソース レジスタのチャンネルごとの比較です。次のいずれかを指定できます。

    構文 比較
    _gt より大きい
    _lt より小さい
    _ge 以上
    _le 以下
    _eq 等しい
    _ne 等しくない
  • dst はプレディケーション レジスタレジスタ (p0) です。

  • src0 はソース レジスタです。

  • src1 はソース レジスタです。

解説 

ピクセル シェーダーのバージョン 1_1 1_2 1_3 1_4 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
}

デスティネーション書き込みマスクに従って書き込むことができるチャンネルごとに、対応する src0 と src1 のチャンネル間の比較演算のブール値の結果を (ソース修飾子のスィズルが解決された後で) 保存します。

ソース レジスタでは、任意の要素のスィズルを指定できます。

デスティネーション レジスタでは、任意の書き込みマスクを使用できます。

dst レジスタは、プレディケーション レジスタでなければなりません。

プレディケーション レジスタの適用

setp_comp で初期化したプレディケーション レジスタを使用すると、成分ごとに命令を制御することができます。次に構文を示します。

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

この場合

  • [!] はオプションのブール値 NOT です。
  • p0 はプレディケーション レジスタです。
  • [.swizzle] はオプションのスィズルで、命令のマスクに使用する前にプレディケーション レジスタの内容に適用します。使用できるスィズルは、.xyzw (何も指定されない場合の既定)、または任意の複製スィズル.x/.r、.y/.g、.z/.b、.a/.w. です。
  • instruction は、任意の算術命令またはテクスチャー命令です。静的または動的フロー制御命令は指定できません。
  • dest, src0, ... は、命令に必要なレジスタです。

プレディケーション レジスタが (true, true, false, false) という要素の値を使って設定されていると仮定した場合、次の命令に適用し、

(p0) add r1, r2, r3

2 つの要素の加算を実行できます。

r1.x = r2.x + r3.x
r1.y = r2.y + r3.y

プレディケーション レジスタの成分 z と w に false が入っているため、r1 の z 成分と w 成分は書き込まれません。

プレディケーション レジスタを算術命令またはテクスチャー命令に適用すると、命令スロット カウントが 1 増えます。

プレディケーション レジスタは、if pred - pscallnz pred - ps、および breakp - ps 命令にも適用できます。これらのフロー制御命令では、プレディケーション レジスタを使用しても命令スロット カウントは増えません。