texkill - ps
テクスチャー座標の最初の 3 要素 (UVW) のいずれかが 0 未満だった場合に、現在のピクセルのレンダリングを中止します。
構文
texkill src |
---|
この場合
- src はソース レジスタです。
解説
ピクセル シェーダーのバージョン | 1_1 | 1_2 | 1_3 | 1_4 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|---|---|---|
texkill | x | x | x | x | x | x | x | x | x |
この命令は、HLSLの clip 関数に対応します。
texkill ではテクスチャーがサンプリングされません。この命令は、ソース レジスタ番号で指定されたテクスチャー座標の最初の 3 要素に対して実行されます。ps_1_4 の場合、texkill はソース レジスタの最初の 3 要素のデータに対して実行されます。
この命令を使って、ラスタライザーに任意のクリップ面を実装できます。
頂点シェーダーを使用する場合、アプリケーションはパースペクティブ トランスフォームを適用する必要があります。不等形のスケール係数が含まれている場合、クリップ面もトランスフォームする必要があるので、任意のクリップ面では問題が発生することがあります。したがって、任意のクリップ面で使用するには、texkill operatorで識別されるテクスチャー座標セットである非射影頂点位置を使用するのが最適です。
この命令は次のように使用されます。
texkill tn
// The pixel masking is accomplished as follows:
if ( the x,y,z components of TextureCoordinates(stage n)UVWQ< 0 )
cancel pixel render
ピクセル シェーダー 1_1、1_2、1_3 の場合、texkill はソース レジスタ番号によって指定されたテクスチャー座標セットに対して実行されます。しかしバージョン 1_4 では、ソースとして指定されたテクスチャー座標レジスタ (tn) またはテンポラリ レジスタ (rn) に格納されているデータに対して texkill が実行されます。
マルチサンプリングが有効な場合、マルチサンプリングによってポリゴンのエッジに対して実行されるアンチエイリアシングは、texkill により生成されたエッジに対しては実行されません。ピクセル シェーダーは各ピクセルに対して 1 回のみ実行されます。
この例は説明用のものです。
この例では、負のテクスチャー座標を持つピクセルをマスク アウトします。ピクセル カラーは、頂点データで指定された頂点カラーから補間されます。
ps_1_1 // Version instruction
texkill t0 // Mask out pixel using texture coordinates from stage 0
mov r0, v0 // Move the diffuse color in v0 to r0
// The rendered output from the pixel shader is shown below
テクスチャー座標の範囲は、u が -0.5 ~ 0.5、v が 0.0 ~ 1.0 です。この命令により、負の u の値がマスク アウトされます。第 1 の画像では、texkill 命令が適用されていないクワッドに頂点カラーが適用されています。第 2 の画像に、texkill 命令の結果を示します。テクスチャー座標が 0 未満 (x の範囲が -0.5 ~ 0.0) のピクセル カラーがマスク アウトされます。マスクされたピクセル カラーの位置には、バックグラウンド カラー (白) が使用されます。
この例の場合、テクスチャー座標データは頂点データの宣言で宣言されています。
struct CUSTOMVERTEX
{
FLOAT x, y, z;
DWORD color;
FLOAT tu1, tv1;
};
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE|D3DFVF_TEX1|D3DTEXCOORD2(0))
static CUSTOMVERTEX g_Vertices[]=
{
// x y z color u1, v1
{ -1.0f, -1.0f, 0.0f, 0xffff0000, -0.5f, 1.0f, },
{ 1.0f, -1.0f, 0.0f, 0xff00ff00, 0.5f, 1.0f, },
{ 1.0f, 1.0f, 0.0f, 0xff0000ff, 0.5f, 0.0f, },
{ -1.0f, 1.0f, 0.0f, 0xffffffff, -0.5f, 0.0f, },
};