次の方法で共有


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) のピクセル カラーがマスク アウトされます。マスクされたピクセル カラーの位置には、バックグラウンド カラー (白) が使用されます。

Vertex color applied to the quad without the texkill instructionOutput with the texkill instruction applied

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

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

};