setp_comp - vs
述語レジスタを設定します。
構文
setp_comp dst、src0、src1 |
---|
この場合、
_compは、2 つのソース レジスタ間のチャネルごとの比較です。 次のいずれかを指定できます。
構文 比較 _Gt より大きい _中尉 より小さい _Ge 以上 _ル 以下 _Eq 等しい _Ne 等しくない dst は 述語レジスタ レジスタ p0 です。
src0 はソース レジスタです。
src1 はソース レジスタです。
解説
頂点シェーダーのバージョン | 1_1 | 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 の対応するチャネル間の比較操作のブール値の結果を保存します (ソース修飾子のスウィズルが解決された後)。
ソース レジスタを使用すると、任意のコンポーネントスウィズルを指定できます。
宛先レジスタでは、任意の書き込みマスクを使用できます。
dest レジスタは述語レジスタである必要があります。
述語レジスタの適用
述語レジスタが setp で初期化されると、それを使用してコンポーネントごとの命令を制御できます。 構文を次に示します。
([!]p0[.swizzle]) instruction dest, srcReg, ...
この場合、
- [!]は省略可能なブール値 NOT です
- p0 は述語レジスタです
- [.swizzle] は、述語レジスタを使用して命令をマスクする前に述語レジスタの内容に適用するオプションのスウィズルです。 使用可能なスウィズルは、.xyzw (指定されていない場合は既定値)、レプリケート swizzle: .x/.r、.y/.g、.z/.b、.a/.w です。
- 命令は、任意の aritmetic、またはテクスチャ命令です。 これは、静的または動的なフロー制御命令にすることはできません。
- dest、srcReg、...は、命令に必要なレジスタです
述語レジスタが (true、true、false、false) コンポーネント値で設定されていると仮定すると、この命令に適用できます。
// given r0 = 0,0,1,1
// given r1 = 1,1,0,0
setp_le p0, r0, r1
(p0) add r2, r3, r4
2 コンポーネントの追加を実行する場合は 。
r2.x = r3.x + r4.x
r2.y = r3.y + r4.y
r2 の x および y コンポーネントは、述語レジスタのコンポーネント z と w に false が含まれているため、書き込まれません。
述語レジスタを算術命令またはテクスチャ命令に適用すると、命令スロット数が 1 増加します。
述語レジスタは、 pred - vs、 callnz pred - vs および breakp - vs instructions の場合にも適用できます。 これらのフロー制御命令では、述語レジスタの使用時に命令スロット数が増加することはありません。
関連トピック