texkill - ps

Annule le rendu du pixel actuel si l’un des trois premiers composants (UVW) des coordonnées de texture est inférieur à zéro.

Syntaxe

texkill dst

 

where

  • dst est un registre de destination

Notes

Versions du nuanceur de pixels 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

 

Cette instruction correspond à la fonction clip de HLSL.

texkill n’échantillonner aucune texture. Il fonctionne sur les trois premiers composants des coordonnées de texture fournies par le numéro de registre de destination. Par ps_1_4, texkill fonctionne sur les données des trois premiers composants du registre de destination.

Vous pouvez utiliser cette instruction pour implémenter des plans de découpage arbitraires dans le rastériseur.

Lors de l’utilisation de nuanceurs de vertex, l’application est responsable de l’application de la transformation de perspective. Cela peut entraîner des problèmes pour les plans de découpage arbitraires, car s’il contient des facteurs d’échelle anisomorphe, les plans de découpage doivent également être transformés. Par conséquent, il est préférable de fournir une position de vertex non projetée à utiliser dans le clipper arbitraire, qui est le jeu de coordonnées de texture identifié par l’opérateur texkill.

Cette instruction est utilisée comme suit :

texkill tn // Le masquage des pixels est effectué comme suit : si ( les composants x,y,z de TextureCoordinates(stage n)UVWQ< 0 ) annulent le rendu des pixels

Pour le nuanceur de pixels 1_1, 1_2 et 1_3, texkill fonctionne sur la coordonnée de texture définie par le numéro de registre de destination. Toutefois, dans la version 1_4, texkill fonctionne sur les données contenues dans le registre de coordonnées de texture (tn) ou dans le registre temporaire (rn) qui a été spécifié comme destination.

Lorsque l’échantillonnage multiple est activé, tout effet anticrénelage obtenu sur les bords de polygones en raison de l’échantillonnage multiple ne sera pas obtenu le long d’un bord qui a été généré par texkill. Le nuanceur de pixels s’exécute une fois par pixel.

Cet exemple n'est donné qu'à titre indicatif.

Cet exemple masque les pixels qui ont des coordonnées de texture négatives. Les couleurs des pixels sont interpolées à partir des couleurs de vertex fournies dans les données de vertex.

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

Les coordonnées de texture vont de -0,5 à 0,5 en u et de 0,0 à 1,0 dans v. Cette instruction entraîne le masquage des valeurs u négatives. La première illustration ci-dessous montre la couleur de vertex appliquée au quad sans l’instruction texkill appliquée. La deuxième illustration ci-dessous montre le résultat de l’instruction texkill. Les couleurs des pixels des coordonnées de texture inférieures à 0 (où x passe de -0,5 à 0,0) sont masquées. La couleur d’arrière-plan (blanc) est utilisée lorsque la couleur du pixel est masquée.

illustration de la sortie avec la couleur de vertex appliquée au quad sans l’illustration d’instruction texkillde la sortie avec l’instruction texkill appliquée

Les données de coordonnées de texture sont déclarées dans la déclaration de données de vertex dans cet exemple.

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

};

Instructions du nuanceur de pixels