texkill - ps
Membatalkan penyajian piksel saat ini jika salah satu dari tiga komponen pertama (UVW) dari koordinat tekstur kurang dari nol.
Sintaks
texkill dst |
---|
Di mana
- dst adalah register tujuan
Keterangan
Versi shader piksel | 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 |
Instruksi ini sesuai dengan fungsi klip HLSL.
texkill tidak mengambil sampel tekstur apa pun. Ini beroperasi pada tiga komponen pertama dari koordinat tekstur yang diberikan oleh nomor register tujuan. Untuk ps_1_4, texkill beroperasi pada data di tiga komponen pertama dari register tujuan.
Anda dapat menggunakan instruksi ini untuk mengimplementasikan bidang klip arbitrer di rasterizer.
Saat menggunakan shader vertex, aplikasi bertanggung jawab untuk menerapkan transformasi perspektif. Ini dapat menyebabkan masalah untuk bidang kliping arbitrer karena jika mengandung faktor skala anisomorfik, clip plane juga perlu diubah. Oleh karena itu, yang terbaik adalah memberikan posisi vertex yang tidak diproyeksikan untuk digunakan dalam clipper arbitrer, yang merupakan kumpulan koordinat tekstur yang diidentifikasi oleh operator texkill.
Instruksi ini digunakan sebagai berikut:
- texkill tn // Masking piksel dicapai sebagai berikut: jika ( komponen x,y,z dari TextureCoordinates(stage n)UVWQ< 0 ) membatalkan render piksel
Untuk pixel shader 1_1, 1_2, dan 1_3, texkill beroperasi pada kumpulan koordinat tekstur yang diberikan oleh nomor register tujuan. Namun, dalam versi 1_4, texkill beroperasi pada data yang terkandung dalam Texture Coordinate Register (tn) atau dalam register sementara (rn) yang telah ditentukan sebagai tujuan.
Ketika multisampling diaktifkan, efek antialias apa pun yang dicapai pada tepi poligon karena multisampling tidak akan dicapai di sepanjang tepi apa pun yang telah dihasilkan oleh texkill. Shader piksel berjalan sekali per piksel.
Contoh ini hanya untuk ilustrasi.
Contoh ini menutupi piksel yang memiliki koordinat tekstur negatif. Warna piksel diinterpolasi dari warna puncak yang disediakan dalam data puncak.
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
Koordinat tekstur berkisar dari -0,5 hingga 0,5 di u, dan 0,0 hingga 1,0 dalam v. Instruksi ini menyebabkan nilai u negatif ditutupi. Ilustrasi pertama di bawah ini menunjukkan warna puncak yang diterapkan ke quad tanpa instruksi texkill diterapkan. Ilustrasi kedua di bawah ini menunjukkan hasil instruksi texkill. Warna piksel dari koordinat tekstur di bawah 0 (di mana x berubah dari -0,5 ke 0,0) ditutupi. Warna latar belakang (putih) digunakan di mana warna piksel ditutupi.
Data koordinat tekstur dinyatakan dalam deklarasi data puncak dalam contoh ini.
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, },
};
Topik terkait