texkill - ps
Bricht das Rendering des aktuellen Pixels ab, wenn eine der ersten drei Komponenten (UVW) der Texturkoordinaten kleiner als 0 (null) ist.
Syntax
| texkill dst |
|---|
Hierbei gilt:
- dst ist ein Zielregister
Hinweise
| Pixel-Shaderversionen | 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 Clipfunktion von HLSL.
texkill nimmt keine Stichproben von Texturen. Er 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 Vertex-Shadern ist die Anwendung für die Anwendung der Perspektiventransformation verantwortlich. Dies kann zu Problemen bei den beliebigen Clippingebenen führen, da die Clipebenen auch transformiert werden müssen, wenn sie anisomorphe Skalierungsfaktoren enthalten. Daher ist es am besten, eine nicht projizierte Scheitelpunktposition für die Verwendung im beliebigen Clipper zur Verfügung zu stellen. Dies ist die Texturkoordinaten menge, die vom texkill-Operator identifiziert wird.
Diese Anweisung wird wie folgt verwendet:
- texkill tn
Die Pixelmaskierung erfolgt wie folgt:
if ( die x,y,z-Komponenten von TextureCoordinates(Stage n)UVWQ< 0 )
Pixelrendering abbrechen
Für den Pixel-Shader _ 1 1, 1 2 und 1 3 arbeitet texkill mit der Texturkoordinate, die durch die _ Zielregisternummer angegeben _ wird. 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, wird jeder Antialiasingeffekt, der auf Polygonrändern aufgrund von Multisampling erzielt wird, nicht entlang einer Kante erreicht, die von texkill generiert wurde. Der Pixel-Shader 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 scheitelpunktfarben interpoliert, die in den Scheitelpunktdaten 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 0,0 bis 1,0 in v. Diese Anweisung bewirkt, dass die negativen u-Werte maskiert werden. Die erste Abbildung unten zeigt die Scheitelpunktfarbe, die auf das Quad angewendet wird, ohne dass die texkill-Anweisung angewendet wurde. Die zweite Abbildung unten zeigt das Ergebnis der texkill-Anweisung. Die Pixelfarben aus den Texturkoordinaten unter 0 (wobei x zwischen -0,5 und 0,0 liegt) werden maskiert. Die Hintergrundfarbe (weiß) wird verwendet, wenn die Pixelfarbe maskiert ist.


Die Texturkoordinatendaten werden in diesem Beispiel in der Vertexdatendeklaration 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, },
};