Teste de tesoura (Direct3D 9)
O teste de tesoura corta pixels que estão fora do retângulo de tesoura, uma subescasão retangular definida pelo usuário do destino de renderização.
O retângulo de tesoura pode ser usado para indicar a área do destino de renderização onde o mundo do jogo é desenhado. A área fora do retângulo é abatida e pode ser dedicada à GUI de um jogo. O teste de tesoura não pode abater áreas não retangulares.
Retângulos de tesoura não podem ser definidos maiores que o destino de renderização, mas podem ser definidos maiores que o visor.
O retângulo de tesoura é gerenciado por um estado de renderização do dispositivo. Um teste de tesoura está habilitado ou desabilitado definindo o renderstate como TRUE ou FALSE. Esse teste é executado depois que a cor do fragmento é computada, mas antes do teste alfa. IDirect3DDevice9::SetRenderTarget redefine o retângulo de tesoura para o destino de renderização completo, análogo à redefinição do visor. IDirect3DDevice9::SetScissorRect é registrado por stateblocks e IDirect3DDevice9::CreateStateBlock com a configuração de todo o estado (D3DSBT_ALL valor em D3DSTATEBLOCKTYPE). O teste de tesoura também afeta a operação IDirect3DDevice9::Clear do dispositivo.
// 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;
O retângulo de tesoura padrão é o visor completo.
O teste de tesoura é feito logo após o processamento de pixels ser concluído por um sombreador de pixel ou pelo pipeline de função fixa, conforme mostrado no diagrama a seguir.
Tópicos relacionados