Uji Gunting (Direct3D 9)
Pengujian 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 digambar. Area di luar persegi panjang dimusnahkan dan dapat dikhususkan untuk GUI game. 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. Pengujian 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, dianalogikan ke reset viewport. IDirect3DDevice9::SetScissorRect direkam oleh stateblock, dan IDirect3DDevice9::CreateStateBlock dengan semua pengaturan status (nilai D3DSBT_ALL dalam D3DSTATEBLOCKTYPE). Pengujian gunting juga memengaruhi perangkat operasi IDirect3DDevice9::Clear.
// 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 lengkap.
Pengujian gunting dilakukan tepat setelah pemrosesan piksel diselesaikan oleh shader piksel atau alur fungsi tetap, seperti yang ditunjukkan pada diagram berikut.
diagram
Topik terkait