Freigeben über


texkill – ps

Bricht das Rendern des aktuellen Pixels ab, wenn eine der ersten drei Komponenten (UVW) der Texturkoordinaten kleiner als 0 (null) ist.

Syntax

texkill dst

 

where

  • dst ist ein Zielregister.

Bemerkungen

Pixelshaderversionen 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

 

Diese Anweisung entspricht der CLIP-Funktion des HLSL.

texkill gibt keine Textur an. Sie arbeitet mit den ersten drei Komponenten der Texturkoordinaten, die von der Zielregisternummer angegeben werden. Für ps_1_4 arbeitet texkill mit den Daten in den ersten drei Komponenten des Zielregisters.

Sie können diese Anweisung verwenden, um beliebige Clipebenen im Rasterizer zu implementieren.

Bei Verwendung von Vertexshadern ist die Anwendung für die Anwendung der Perspektivtransformation verantwortlich. Dies kann zu Problemen bei den beliebigen Clippingebenen führen, denn wenn sie anisomorphe Skalierungsfaktoren enthält, müssen auch die Clipebenen transformiert werden. Daher ist es am besten, eine nicht projizierte Vertexposition bereitzustellen, die im beliebigen Clipper verwendet werden kann. Dabei handelt es sich um den Texturkoordinatensatz, der durch den Texkill-Operator identifiziert wird.

Diese Anweisung wird wie folgt verwendet:

texkill tn // Die Pixelmaskierung erfolgt wie folgt: if ( the x,y,z components of TextureCoordinates(stage n)UVWQ< 0 ) cancel pixel rendern

Für Den Pixelshader 1_1, 1_2 und 1_3 arbeitet texkill nach der Texturkoordinate, die durch die Zielregisternummer festgelegt wurde. In Version 1_4 arbeitet texkill jedoch mit den Daten, die im Texturkoordinatenregister (tn) oder im temporären Register (rn) enthalten sind, das als Ziel angegeben wurde.

Wenn Multisampling aktiviert ist, werden alle Antialiasingeffekte, die aufgrund von Multisampling an Polygonkanten erzielt werden, nicht entlang einer Kante erreicht, die von texkill generiert wurde. Der Pixelshader wird einmal pro Pixel ausgeführt.

Dieses Beispiel dient nur zur Veranschaulichung.

In diesem Beispiel werden Pixel mit negativen Texturkoordinaten maskiert. Die Pixelfarben werden aus Vertexfarben interpoliert, die in den Vertexdaten bereitgestellt werden.

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

Die Texturkoordinaten reichen von -0,5 bis 0,5 in u und von 0,0 bis 1,0 in v. Diese Anweisung bewirkt, dass die negativen u-Werte maskiert werden. Die erste Abbildung unten zeigt die Vertexfarbe, die auf das Quad angewendet wird, ohne dass die texkill-Anweisung angewendet wird. Die zweite Abbildung unten zeigt das Ergebnis der texkill-Anweisung. Die Pixelfarben aus den Texturkoordinaten unter 0 (wobei x von -0,5 auf 0,0 wechselt) werden maskiert. Die Hintergrundfarbe (weiß) wird verwendet, wenn die Pixelfarbe maskiert wird.

Abbildung der Ausgabe mit der auf das Quad angewendeten Vertexfarbe ohne texkill-Anweisungsdarstellung der Ausgabe mit angewendeter texkill-Anweisung

Die Texturkoordinatendaten werden in der Vertexdatendeklaration in diesem Beispiel deklariert.

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

};

Pixelshaderanweisungen