Approcci al rendering: rasterization-based (2/2)

Approcci al rendering: rasterization-based (2/2)


RASTERIZATIONE
osservazoni importanti sugli algoritmi di rendering in generale
notion image
  • il triangolo è la principale primitiva di rendering supportata (per entrambe le categorie di algoritmi di rendering)
    • notion image
RASTERIZATION (attenzione: si riferisce all’algoritmo)

Rasterizzare un triangolo: che significa?

  • Immagina di avere un triangolo (primitiva) disegnato su uno schermo fatto a griglia, dove ogni quadratino NON è ancora un pixel pk nn c’è ancora il rendering
  • Devi capire riempire quel triangolo di attributi, decidendo quali pixel accendere.

🔧 Come funziona?

  1. Il triangolo è definito da 3 vertici (con coordinate e magari anche colore, materiale ecc.).
  1. Il tuo obiettivo è capire quali pixel dell'immagine cadono dentro al triangolo.

FRAMMENTO ≠ PIXEL

Un frammento è un pixel candidato, non ancora informato ed in spazio schermo:
  • il frammento è solo un punto colorato
  • Deve inserire tutti i gli attributi necessari per calcolare il colore finale del pixel:
    • Normale della superficie
    • Colore di base
    • Materiale
    • Coordinate texture
    • …tutti ottenuti interpolando i valori dei vertici del triangolo.
💡 In pratica, per ogni pixel dentro il triangolo, crei un frammento che poi verrà “colorato” nel passaggio successivo (il fragment shader, se sei in grafica real-time).

🖼️ Differenza tra frammento e pixel:

  • Il frammento è un punto “candidato” con tante informazioni,
  • Il pixel è il punto dell’immagine finale, che prenderà il colore del frammento dopo tutti i calcoli (illuminazione, texture, trasparenza…).

📌 In sintesi:

  • Rasterizzare un triangolo significa riempirlo di frammenti, uno per ogni pixel dentro di lui.
  • Ogni frammento poi sarà elaborato per ottenere un pixel dell'immagine finale.
RASTERIZATION IN 3 STEP (della tri-mesh)
notion image

1. Transform (passaggio da spazio 2d a spazio 3d)

🔹 Converte le coordinate del modello 3D in coordinate 2D sullo schermo
🔹 Applica rotazioni, traslazioni e proiezioni (camera)

2. Rasterization (selezione frammenti)

  1. immergo il triangolo proiettato in apazio 2d in una griglia
  1. seleziono i quadrati da informare = frammenti (pixel candidati)

3. Lighting o fragment processing (informo i frammenti)

🔹 Calcola come la luce colpisce ogni frammento (sfruttando le informazioni in esso contenute)
🔹 Produce il colore finale (RGB) per ciascun pixel…e tante altre informazione
📌 Obiettivo: ottenere un'immagine visivamente realistica

  1. fase per vertice oppure trasformazione
  1. rasterizzazione
  1. fase per frammeto oppure lightning
CONSIDERAZIONI SUL RENDERING

Parallelismo esterno

Le fasi della pipeline (Transform → Rasterization → Lighting) avvengono una dopo l’altra, ma:
  • Mentre elabori una fase per un oggetto, le altre fasi possono già lavorare su oggetti diversi
Esempio:
  • Stai trasformando il triangolo A
  • Rasterizzi il triangolo B (trasformato prima)
  • Calcoli l'illuminazione del triangolo C (rasterizzato prima ancora)

Parallelismo Interno

Ogni fase lavora su più elementi contemporaneamente:
  • Più vertici alla volta
  • Più triangoli
  • Più frammenti

Velocità Limitata dalla Fase più Lenta

Il sistema procede alla velocità della fase più lenta, detta collo di bottiglia
ci possono essere 2 tipi di Collo di Bottiglia
Significato
trasformazione → Transform-limited
La GPU fatica a elaborare le trasformazioni dei vertici (es. mesh troppo dettagliata)
lighting → Fill-limited
La GPU non riesce a colorare i pixel abbastanza velocemente (es. immagine troppo grande)
CONFRONTO TRA I 2 ALGORITMI
PRIMITIVE
  1. rasterization lavora su 3 primitive:
    1. punti
    2. segmenti
    3. triangoli
  1. ray-racing: qualsiasi primitiva

PARALELIZZAZIONE
  • sono entrambi algoritmi parallelizzabili

tipici scenari di applicazione
notion image
RAY TRACING:
  • lento
  • effetti visuali complessi → realismo (ombre, riflessioni speculari, rifrazioni, riflessiioni multiple…)
RASTERIZATION:
  • veloce → perfetto per il rendering real-time e approssimato
  • usato nel cinema per fare le preview (quindi nn per creare il prodotto finale)
SFUMATURE TRA I 2 ALGORITMI
  • il real time ray tracing esiste e sta diventando comune grazie a
    • parallelismo
    • ottimizzazione del numero di primitive
  • varianti della rasterization (in base al tipo di risultato che si vuole)
    • notion image