¿Por qué los triángulos adyacentes nunca se superponen cuando se rasterizan?

11

Disculpas por la siguiente pregunta novata, es solo que no puedo encontrar una respuesta satisfactoria en ningún lado ...

Cuando renderizo un quad simple alineado con un eje formado por dos triángulos, no entiendo por qué nunca hay artefactos visibles en el borde diagonal donde se encuentran esos triángulos. Algunos de esos píxeles deben estar en ambos triángulos, ¿verdad? Entonces, si mi fragshader siempre emite un color parcialmente transparente, digamos 50% negro, ¿no debería haber una línea diagonal oscura visible en el quad resultante?

Obviamente, es genial que este no sea un problema real que deba ser codificado, simplemente no entiendo por qué no lo es. ¿Qué magia de GPU es lo que hace que esto siempre funcione?

Reuben Scratton
fuente

Respuestas:

10

Este es el mismo problema que se discutió en ¿Qué son las brechas de muestra durante la conversión de escaneo?

Brevemente, la rasterización, al menos con la mayoría de los sistemas de hardware, prueba en un único punto 'infinitesimal' para cada píxel para determinar si ese píxel está dentro de un triángulo dado.

Si el punto de muestra se encuentra exactamente en un borde, entonces entran en juego reglas adicionales de desempate, a menudo denominadas "reglas de relleno". Por lo general, esto será algo equivalente a, digamos, considerar solo los puntos de borde en los bordes superior / izquierdo ** de un triángulo como "dentro".

** Otras reglas están disponibles ;-)

Simon F
fuente
Sí, solo estaba buscando esa respuesta
joojaa
1
Pasaje relevante del Libro Negro: jagregory.com/abrash-black-book/…
bblack
Muchas gracias! Tiene un poco de sentido ahora, y ese libro negro también parece un gran recurso
Reuben Scratton