Perché i triangoli adiacenti non si sovrappongono mai quando sono rasterizzati?


11

Mi scuso per la seguente domanda noob, è solo che non riesco a trovare una risposta soddisfacente da nessuna parte ...

Quando eseguo il rendering di un semplice quadrante allineato all'asse composto da due triangoli, non capisco perché non ci siano mai artefatti visibili sul bordo diagonale in cui si incontrano quei triangoli. Alcuni di quei pixel devono essere in entrambi i triangoli, giusto? Quindi se il mio fragshader emette sempre un colore parzialmente trasparente - il 50% dice il nero - non dovrebbe esserci una linea diagonale scura visibile nel quadrante risultante?

Ovviamente è bello che questo non sia un vero problema da codificare, non capisco perché non lo sia. Quale magia GPU è che fa funzionare sempre questo?

Risposte:


10

Questo è lo stesso problema descritto in Cosa sono gli spazi vuoti di esempio durante la conversione della scansione?

In breve, la rasterizzazione - almeno con la maggior parte dei sistemi hardware - verifica in un singolo punto "infinitesimale" per ciascun pixel per determinare se quel pixel si trova all'interno di un dato triangolo.

Se il punto di campionamento si trova esattamente su un bordo, entrano in gioco regole aggiuntive di pareggio, spesso denominate "regole di riempimento". In genere questi saranno qualcosa di equivalente, diciamo, a considerare "dentro" solo i punti di margine sui bordi superiore / sinistro ** di un triangolo.

** Altre regole sono disponibili ;-)


Sì, stavo solo cercando quella risposta
joojaa,

1
Rilevante passaggio dal Libro nero: jagregory.com/abrash-black-book/…
bblack

Mille grazie! In un certo senso ha un senso adesso, e anche quel libro nero sembra una grande risorsa
Reuben Scratton,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.