다음을 통해 공유


texkill - ps

텍스처 좌표의 처음 세 성분(UVW) 중 하나라도 0보다 작은 경우 현재 픽셀의 렌더링을 취소합니다.

Syntax

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의 clip 함수에 해당합니다.

texkill은 텍스처를 샘플링하지 않습니다. 대상 레지스터 번호로 지정된 텍스처 좌표의 처음 세 성분에서 작동합니다. ps_1_4의 경우 texkill은 대상 레지스터의 처음 세 성분에 있는 데이터에서 작동합니다.

이 명령을 사용하여 래스터라이저에서 임의의 클립 평면을 구현할 수 있습니다.

꼭짓점 셰이더를 사용할 때 애플리케이션은 원근 변환 적용을 담당합니다. 이로 인해 임의 클리핑 평면에 문제가 발생할 수 있습니다. 이형성 배율 인수가 포함된 경우 클립 평면도 변환해야 하기 때문입니다. 따라서 texkill 연산자에 의해 식별된 텍스처 좌표 집합인 임의 클리퍼에서 사용할 비투영 꼭짓점 위치를 제공하는 것이 가장 좋습니다.

이 명령은 다음과 같이 사용됩니다.

texkill tn // 픽셀 마스킹은 다음과 같이 수행됩니다. TextureCoordinates(stage n)UVWQ의 x,y,z 성분 < 0인 경우 픽셀 렌더링을 취소합니다.

픽셀 셰이더 1_1, 1_2 및 1_3의 경우 texkill은 대상 레지스터 번호로 지정된 텍스처 좌표 집합에서 작동합니다. 그러나 버전 1_4에서는 texkill이 대상으로 지정된 Texture Coordinate Register(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

텍스처 좌표 범위는 u에서 -0.5에서 0.5, v에서 0.0에서 1.0입니다. 이 명령을 사용하면 음수 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, },

};

픽셀 셰이더 명령