Scissor Test (Direct3D 9)
Uji gunting memisahkan piksel yang berada di luar persegi panjang gunting, sub-bagian persegi panjang yang ditentukan pengguna dari target render.
Persegi panjang gunting dapat digunakan untuk menunjukkan area target render tempat dunia game ditarik. Area di luar persegi panjang dimusnahkan dan dapat dikhususkan untuk GUI permainan. Tes gunting tidak dapat membongkar area non-persegi panjang.
Persegi panjang gunting tidak dapat diatur lebih besar dari target render, tetapi dapat diatur lebih besar dari viewport.
Persegi panjang gunting dikelola oleh status render perangkat. Tes gunting diaktifkan atau dinonaktifkan dengan mengatur renderstate ke TRUE atau FALSE. Pengujian ini dilakukan setelah warna fragmen dihitung tetapi sebelum pengujian alfa. IDirect3DDevice9::SetRenderTarget mengatur ulang persegi panjang gunting ke target render penuh, yang dianalogikan dengan reset viewport. IDirect3DDevice9::SetScissorRect direkam oleh stateblocks, dan IDirect3DDevice9::CreateStateBlock dengan semua pengaturan status (nilai D3DSBT_ALL di D3DSTATEBLOCKTYPE). Pengujian gunting juga memengaruhi perangkat IDirect3DDevice9::Clear operation.
// Methods
HRESULT IDirect3DDevice9::SetScissorRect(CONST RECT* pRect);
HRESULT IDirect3DDevice9::GetScissorRect(RECT* pRect);
// New RenderState, values are TRUE or FALSE
D3DRS_SCISSORTESTENABLE
// New hardware cap
D3D9CAPS.RasterCaps -> D3DPRASTERCAPS_SCISSORTEST;
Persegi panjang gunting default adalah viewport penuh.
Pengujian gunting dilakukan tepat setelah pemrosesan piksel diselesaikan oleh shader piksel atau alur fungsi tetap, seperti yang ditunjukkan pada diagram berikut.
Topik terkait