Rasterizzazione
# Rasterizzazione

La rasterizzazione è il lavoro di conversione di un'immagine bidimensionale descritta da vettori (in grafica vettoriale), in un'immagine raster o bitmap, ovvero formata da pixel. Questo lavoro è effettuato sia per ottenere un'immagine proiettabile su dispositivi video, come i monitor, sia per la stampa.

Il problema principale è di doversi spostare da una descrizione lineare (ad esempio un segmento avente estremi p1 e p2) ad una discreta, ovvero i pixel dell'immagine raster. Questo ha comportato la creazione di vari algoritmi di rasterizzazione (o rastering), sia per oggetti semplici come le linee che per più complessi come i poligoni, ad esempio poligoni colorati internamente.

Tra i vari algoritmi troviamo:

* Algoritmo di rasterizzazione di linea: trasforma una linea o un segmento.
* Algoritmo di rasterizzazione di poligono: trasforma un poligono.

## Descrizione

L'immagine rasterizzata può essere visualizzata su un display di computer, display video o stampante o archiviata in un formato di file bitmap. La rasterizzazione può riferirsi alla tecnica di disegno di modelli 3D o alla conversione di primitive di rendering 2D come poligoni, segmenti di linea in un formato rasterizzato.

Il termine deriva dal tedesco Raster ("quadro, schema"), dal latino rāstrum, "raschietto, rastrello".

## Rasterizzazione di immagini 3D

La rasterizzazione è una delle tecniche tipiche di rendering di modelli 3D. Rispetto ad altre tecniche di rendering come il ray tracing, la rasterizzazione è estremamente veloce e quindi utilizzata nella maggior parte dei motori 3D in tempo reale. Tuttavia, la rasterizzazione è semplicemente il processo di calcolo della mappatura dalla geometria della scena ai pixel e non prescrive un modo particolare per calcolare il colore di quei pixel. Il colore specifico di ogni pixel è assegnato dall'ombreggiatura (che nelle moderne GPU è completamente programmabile). L'ombreggiatura può essere basata su leggi fisiche, loro approssimazioni o intenti puramente artistici.

### Rasterizzazione del triangolo

Una rappresentazione comune dei modelli 3D digitali è la forma poligonale. Prima della rasterizzazione, i singoli poligoni vengono scomposti in triangoli, quindi un tipico problema da risolvere nella rasterizzazione 3D è la rasterizzazione di un triangolo. Le proprietà che di solito sono richieste dagli algoritmi di rasterizzazione dei triangoli sono la rasterizzazione di due triangoli adiacenti (cioè quelli che condividono un bordo):

* non lascia buchi (pixel non rasterizzati) tra i triangoli, in modo che l'area rasterizzata sia completamente riempita (proprio come la superficie dei triangoli adiacenti). e
* nessun pixel viene rasterizzato più di una volta, ovvero i triangoli rasterizzati non si sovrappongono. Questo per garantire che il risultato non dipenda dall'ordine in cui i triangoli sono rasterizzati. Sovrascrivere i pixel può anche significare sprecare potenza di calcolo su pixel che verrebbero sovrascritti.

Questo porta a stabilire regole di rasterizzazione per garantire le condizioni di cui sopra. Un insieme di tali regole è chiamato regola top-left, che afferma che un pixel viene rasterizzato se e solo se:

* il suo centro giace completamente all'interno del triangolo. o
* il suo centro giace esattamente sul bordo del triangolo (o più bordi in caso di angoli) che è (o, in caso di angoli, tutti sono) bordo superiore o sinistro.

Un bordo superiore è un bordo che è esattamente orizzontale e si trova sopra gli altri bordi e un bordo sinistro è un bordo non orizzontale che si trova sul lato sinistro del triangolo.

Questa regola è implementata ad esempio da Direct3D e molte implementazioni OpenGL (anche se la specifica non la definisce e richiede solo una regola coerente).

## Qualità

La qualità della rasterizzazione può essere migliorata con l'antialiasing, che crea bordi "uniformi". La precisione sub-pixel è un metodo che tiene conto delle posizioni su una scala più fine rispetto alla griglia di pixel e può produrre risultati diversi anche se i punti finali di una primitiva cadono nelle stesse coordinate di pixel, producendo animazioni di movimento più fluide. Hardware semplice o meno recente, come PlayStation 1, mancava di precisione sub-pixel nella rasterizzazione 3D.

