texkill - ps

如果纹理坐标的前三个分量 (UVW) 中的任何一个小于零,则取消当前像素的呈现。

语法

texkill dst

 

其中

  • 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 的 x,y,z 组件 (阶段 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 到 0.5(u)和 0.0 到 1.0(在 v 中)。 此指令会导致屏蔽负 u 值。下图显示了应用于四边形的顶点颜色,但未应用 texkill 指令。 下图显示了 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, },

};

像素着色器说明