次の方法で共有


setp_comp - ps

述語レジスタを設定します。

構文

setp_comp dst、src0、src1

 

この場合、

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

    構文 比較
    _Gt より大きい
    _中尉 より小さい
    _Ge 以上
    _ル 以下
    _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 の対応するチャネル間の比較操作のブール値の結果を保存します (ソース修飾子 swizzles が解決された後)。

ソース レジスタを使用すると、任意のコンポーネントスウィズルを指定できます。

宛先レジスタでは、任意の書き込みマスクを使用できます。

dst レジスタは述語レジスタである必要があります。

述語レジスタの適用

述語レジスタが setp_comp で初期化されたら、それを使用してコンポーネントごとの命令を制御できます。 構文を次に示します。

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

この場合、

  • [!]は省略可能なブール値 NOT です
  • p0 は述語レジスタです
  • [.swizzle] は、述語レジスタを使用して命令をマスクする前に述語レジスタの内容に適用するオプションの swizzle です。 使用可能なスワイズルは、.xyzw (指定されていない場合は既定値)、レプリケート swizzle: .x/.r、.y/.g、.z/.b、.a/.w です。
  • 命令は、任意の aritmetic またはテクスチャ命令です。 静的または動的フロー制御命令にすることはできません。
  • dest、src0、...は命令に必要なレジスタです

述語レジスタが (true、true、false、false) コンポーネント値で設定されていると仮定すると、この命令に適用できます。

(p0) add r1, r2, r3

2 コンポーネントの追加を実行します。

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

r1 の z コンポーネントと w コンポーネントは、述語レジスタがコンポーネント z と w に false を含んでいたため、書き込まれません。

算術命令またはテクスチャ命令に述語レジスタを適用すると、命令スロット数が 1 増加します。

述語レジスタは、 pred - pscallnz pred - psbreakp - ps 命令の場合にも適用できます。 これらのフロー制御命令では、述語レジスタを使用する場合、命令スロット数は増加しません。

ピクセル シェーダーの手順