texkill - ps

テクスチャ座標の最初の 3 つのコンポーネント (UVW) のいずれかが 0 未満の場合、現在のピクセルのレンダリングをキャンセルします。

構文

texkill dst

 

where

  • dst は宛先レジスタです

解説

ピクセル シェーダーのバージョン 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 の クリップ 関数に対応します。

texkill はテクスチャをサンプリングしません。 これは、宛先レジスタ番号によって指定されたテクスチャ座標の最初の 3 つのコンポーネントで動作します。 ps_1_4の場合、texkill は宛先レジスタの最初の 3 つのコンポーネントのデータに対して動作します。

この命令を使用して、ラスタライザーに任意のクリップ プレーンを実装できます。

頂点シェーダーを使用する場合、アプリケーションはパースペクティブ変換を適用します。 これにより、任意のクリッピング 平面に問題が発生する可能性があります。これは、同型スケール ファクターが含まれている場合は、クリップ プレーンも変換する必要があるためです。 したがって、任意のクリッパーで使用する非投影頂点位置 (texkill 演算子によって識別されるテクスチャ座標セット) を提供することをお勧めしています。

この命令は次のように使用されます。

texkill tn // ピクセル マスクは、(TextureCoordinates(stage n)UVWQ< 0) の x,y,z コンポーネントがピクセル レンダリングをキャンセルする場合に実行されます。

ピクセル シェーダー 1_1、1_2、1_3 の場合、texkill は宛先レジスタ番号によって指定されたテクスチャ座標セットに対して動作します。 ただし、バージョン 1_4 では、texkill は、 テクスチャ座標レジスタ (tn) または宛先として指定された一時レジスタ (rn) に含まれるデータに対して動作します。

マルチサンプリングが有効になっている場合、マルチサンプリングによってポリゴン エッジに対して行われたアンチエイリアシング効果は、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 値がマスクされます。次の最初の図は、texkill 命令を適用せずに四角形に適用された頂点の色を示しています。 次の 2 番目の図は、texkill 命令の結果を示しています。 テクスチャ座標から 0 未満のピクセルカラー (x は -0.5 から 0.0 まで) がマスクされます。背景色 (白) は、ピクセルの色がマスクされている場所で使用されます。

texkill 命令を適用した出力の texkill 命令の図を使用せずに、四角形に頂点の色を適用した出力の図

テクスチャ座標データは、この例の頂点データ宣言で宣言されています。

   
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, },

};

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