Rasterizzazione di primitive (no lightning?)

Rasterizzazione di primitive (no lightning?)

notion image
ripasso: link
 
COSA è SUCCESSO PRIMA
trasformazioni in sequenza dallo spazio oggetto allo spazio clip
 
CARATTERISTICHE
  • in genere ogni hardware ha il suo rasterizatore
  • per ogni primitiva (nel 2D) individuo i frammenti che la compongono (al suo interno)
    • 1 frammento → informazione (unicamente RGB) → 1 pixel
    • qs attributo è riassunto nella codifica RGB
  • parallelizzabile
  • efficente
  • poco flessibile: non programmabile dall’utente
 
 
ALGORITMO DI RASTERIZZAZIONE TRIANGOLI
  1. conversione VERTICI da pazio clip a spazio schermo (viewport)
      • i vertici nello spazio clip, li converto in frammenti in spazio schermo cartesiano: questo segna il passaggio dalla rappresentazione continua (float) delle coordinate dei vertici a quella discreta (intera) dei frammenti, cioè dalla geometria vettoriale alla rasterizzazione
      • in spazio schermo
        • il rasterizzatore usa solo le coordinate x ed y (la depth della z viene ignorata)
        • le coordinate non sono necessariamente dentro al viewport, ma in ogni caso vengono prodotti frammenti al suo interno
      ripasso
      notion image
  1. indivisuo i FRAMMENTI del singolo triangolo
      • Input: tre punti 2D (le posizioni x,y dei vertici in screen space sono float)
      • Output: i frammenti interni al triangolo di coordinate intere
      tra input e output
      notion image
      definisco i triangoli interni al viewport totalmente o parzialmente
      cosa fare se è parzialmente dentro la mesh:
      VECCHIA SCUOLA: CLIPPING (taglio) e CULLING (eliminazione) +triangle mesh
      notion image
      diagonal split alla sottomesh formata col clipping
      notion image
      notion image
      notion image
      NEW SCHOOL: clipping ebbasta (ottimizzazione hardware) + doppia bounding box
      • crea una bounding box che include unicamente la sotto mesh interna al viewport
      • rasterizza quello: griglia + selezione frammenti
        • notion image
      definisco tutti e soli i frammenti totalmente o parzialmente interni al triangolo
      notion image
      notion image
      PREMESSA
      • Un semipiano è una metà di un piano, divisa da una retta
      • attenzione: dato un prodotto vettoriale tra la normale di un piano ed un vettore, il punto sulla punta del vettore è inteso come “davanti” se (mesh definita in senso orario) sta a sinistra del semipiano e “dietro” se sta a destra del semipiano
        • se cambio orientamento del triangolo a senso antiorario, cambio la normale (che punta verso l’esterno), quindi ciò che è davanti ora è dietro e viceversa: la formula verifica se il prodotto dot è maggiore di 0 per tutti i 3 piani rispetto al punto
          • notion image
      SPIEGAZIONE
      1. determina 2 punti a caso sul piano, ne definisce il vettore e lo ruota di 90° per avere il vetttore ortogonale al semipiano (punta verso l’esterno ) della mesh
      1. prodotto vettoriale in immagine
      1. in base alla posizione di p definisco se diventerà un frammento
      casi particolari p.1
      notion image
      notion image
      casi particolari p.2: ANTIALIESING
      • nel esempio sopra, la rasterizzazione conferisce al frammento: conferisce tutto o nessun attributo, senza far nulla per nascondere alcuna fuoriuscita dalla primitiva
      • l’antialiesing (AA) è una serie di tecniche che cerca un compromesso in caso di frammenti parzialemente nella mesh: sfuma il frammento per nascondere il difetto di scalettatura associando semitrasparenza ai bordi delle primitive che le intersecano
        • notion image
  1. INTPERPOLAZIONE attributi per defininre l’RGB di ogni pixel
      • Input ulteriore: un set di attributi per ogni vertice (qualsiasi insieme di vettori, scalari…)
      • Output ulteriore: un set di valori interpolati, per ogni frammento prodotto
      ATTENZIONE: i frammenti mappano la primitiva che è una trimesh (c’è i frammenti sono più piccoli della trimesh). Le coordinate baricentriche che pesano gli attributi ai vertici li ho, e quindi compongono l’input di queta fase

 
ACCENNI SULLE ALTRE PRIMITIVE
notion image
LINEE
notion image
notion image
notion image