Viés de profundidade (Direct3D 9)
Polígonos que são coplanares em seu espaço 3D podem aparecer como se não fossem coplanares, adicionando um z-bias a cada um. Esta é uma técnica comumente usada para garantir que as sombras em uma cena sejam exibidas corretamente. Por exemplo, uma sombra em uma parede provavelmente terá o mesmo valor de profundidade que a parede. Se você renderizar a parede primeiro e, em seguida, a sombra, a sombra pode não estar visível ou artefatos de profundidade podem estar visíveis. Você pode inverter a ordem em que você renderiza os objetos coplanares na esperança de reverter o efeito, mas artefatos de profundidade ainda são prováveis.
Um aplicativo pode ajudar a garantir que os polígonos coplanares sejam renderizados corretamente, adicionando um viés aos valores z que o sistema usa ao renderizar os conjuntos de polígonos coplanares. Para adicionar um z-bias a um conjunto de polígonos, chame o método IDirect3DDevice9::SetRenderState pouco antes de renderizá-los, definindo o parâmetro State como D3DRS_DEPTHBIAS e o parâmetro Value como um valor float adequado (por exemplo, um valor adequado pode ser de -1.0 a 1.0); para passar esse valor para SetRenderState, você também deve converter o valor para um DWORD. Um valor z-bias mais alto aumenta a probabilidade de que os polígonos renderizados sejam visíveis quando exibidos com outros polígonos coplanares.
Offset = m * D3DRS_SLOPESCALEDEPTHBIAS + D3DRS_DEPTHBIAS
onde m é a inclinação máxima da profundidade do triângulo que está sendo renderizado.
m = max(abs(delta z / delta x), abs(delta z / delta y))
As unidades para os estados de renderização D3DRS_DEPTHBIAS e D3DRS_SLOPESCALEDEPTHBIAS dependem se z-buffering ou w-buffering está habilitado. O pedido deve fornecer valores adequados.
O viés não é aplicado a nenhuma primitiva de linha e ponto. No entanto, esse viés precisa ser aplicado a triângulos desenhados no modo wireframe.
// RenderStates
D3DRS_SLOPESCALEDEPTHBIAS, // Defaults to zero
D3DRS_DEPTHBIAS, // Defaults to zero
// Caps
D3DPRASTERCAPS_DEPTHBIAS
D3DPRASTERCAPS_SLOPESCALEDEPTHBIAS
Tópicos relacionados