Por que triângulos adjacentes nunca se sobrepõem quando rasterizados?


11

Desculpas pela seguinte pergunta noob, é que não consigo encontrar uma resposta satisfatória em nenhum lugar ...

Quando renderizo um quadrilátero alinhado por eixo simples composto por dois triângulos, não entendo por que nunca há artefatos visíveis na borda diagonal em que esses triângulos se encontram. Alguns desses pixels devem estar nos dois triângulos, certo? Portanto, se meu fragshader sempre emitir uma cor parcialmente transparente - 50%, digamos, preto -, não deve haver uma linha diagonal escura visível no quad resultante?

Obviamente, é ótimo que este não seja um problema real que precise ser codificado, apenas não entendo por que não é. Que mágica da GPU faz com que isso sempre funcione?

Respostas:


10

Esse é o mesmo problema discutido em Quais são as lacunas de amostra durante a conversão da verificação?

Resumidamente, a rasterização - pelo menos com a maioria dos sistemas de hardware - testa em um único ponto 'infinitesimal' para cada pixel para determinar se esse pixel está dentro de um determinado triângulo.

Se o ponto de amostra estiver exatamente no limite, regras adicionais de desempate, geralmente chamadas de "regras de preenchimento", entram em ação. Normalmente, isso equivale a, digamos, considerar apenas os pontos da aresta nas arestas superior / esquerda ** de um triângulo como "internos".

** Outras regras estão disponíveis ;-)


Sim, eu estava apenas procurando por essa resposta
joojaa

1
Passagem relevante do Livro Negro: jagregory.com/abrash-black-book/…
bblack 15/06/16

Muito obrigado! Sorta meio faz sentido agora, e que o livro olhares negros como um grande recurso também
Reuben Scratton
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.