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?

Reuben Scratton
fonte

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 ;-)

Simon F
fonte
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