共用方式為


texkill - ps

如果紋理座標的前三個元件 (UVW) 小於零,取消目前圖元的轉譯。

Syntax

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 不會取樣任何紋理。 它會在目的地暫存器編號所指定紋理座標的前三個元件上運作。 針對ps_1_4,texkill 會在目的地暫存器的前三個元件中運算元據。

您可以使用此指令在點陣化中實作任意裁剪平面。

使用頂點著色器時,應用程式會負責套用檢視方塊轉換。 這可能會造成任意裁剪平面的問題,因為如果它包含異型刻度因數,也必須轉換裁剪平面。 因此,最好提供未投影的頂點位置,以用於任意裁剪器,這是 texkill 運算子所識別的紋理座標集。

此指示如下所示:

texkill tn // 圖元遮罩的完成方式如下:如果 ( textureCoordinates (階段 n) UVWQ< 0 ) 取消圖元轉譯

對於圖元著色器 1_1、1_2 和 1_3,texkill 會在目的地暫存器編號指定的紋理座標集上運作。 不過,在 1_4 版中,texkill 會在 紋理座標緩存 器 (tn) 或暫存暫存器 (rn) 指定為目的地的資料上運作。

啟用多重取樣時,由於多重取樣所造成的多邊形邊緣上達到的任何反鋸齒效果,將不會沿著 texkill 所產生的任何邊緣達成。 圖元著色器會針對每個圖元執行一次。

這個範例只供說明。

本範例會遮罩具有負紋理座標的圖元。 圖元色彩會從頂點資料中提供的頂點色彩進行插補。

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

紋理座標的範圍從 -0.5 到 u 中的 0.5,而 v 中的 0.0 到 1.0。 此指令會導致負 u 值被遮罩。下圖顯示套用至四邊形的頂點色彩,而不套用texkill 指令。 下圖顯示 texkill 指令的結果。 紋理座標低於 0 的圖元色彩 (x 從 -0.5 到 0.0) 會遮罩。背景色彩 (白色) 會用來遮罩圖元色彩。

輸出圖例,其中頂點色彩套用至四邊形,不含套用 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, },

};

圖元著色器指示