|
|
|
|
|
La pipeline di rendering; assumendo che |
|
La scena è composta di entita’ geometriche
semplici (primitive) descritte per mezzo di vertici |
|
L’algoritmo di rendering che voglio usare è
strutturato in maniera da processare e disegnare tutte le primitive una
alla volta abbastanza indipendentemente (object order) |
|
Allora per ogni primitiva le operazioni da fare
sono, in sequenza, le seguenti |
|
|
|
|
|
Il fatto di strutturare il rendering |
|
Indipendemente per primitiva |
|
Per ogni primitiva in una pipeline ben
determinata |
|
Permette di progettare hw grafico che espliciti
il parallelismo nei due livelli |
|
Multiple rendering pipelines |
|
I passi piu lenti della pipeline possono essere
parallelizzati più massicciamente |
|
|
|
|
|
Ogni oggetto nella scena ha, di solito il
proprio sistema di riferimento |
|
I vertici della scena da rendere devono essere
trasformati in un unico sistema di riferimento: quello della camera. |
|
|
|
|
|
|
|
|
|
|
Dopo la trasformazione di modellazione si può
decidere che cosa è visibile per la camera corrente (e quindi interrompere
la pipeline per ciò che non è visibile) |
|
|
|
|
Si calcola dove ogni vertice cade nel piano di
proiezione |
|
|
|
|
Per ogni primitiva a questo punto sappiamo dove
finiscono nel frame buffer i suoi vertici. |
|
Il processo di trovare tutti i pixel che nel
frame buffer appartengono alla primitiva è detto rasterizzazione. |
|
|
|
|
|
|
Sulla pipeline di rendering torneremo più volte |
|
Gli step possono essere ben più dettagliati |
|
Non tutti gli step, non su tutti gli hw, sono
implementati effettivamente in hw |
|
Questa pipeline di rendering NON è l’unica
esistente |
|
|
|
|
Luce e’ una forma di radiazione elettromagnetica |
|
La retina umana ha tre tipi di recettori, i
coni, sensibili a particolari lunghezze d’onda |
|
|
|
|
Gli spazi colore o modelli colore sono dei
sistemi particolari di coordinate che consentono di definire all’interno di
un sottoinsieme di colori (detto gamut) un particolare elemento |
|
A noi interessano gli spazi: RGB (monitor,
sintesi additiva), CMYK (stampe, sintesi sottrattiva), HSV (intuitivo) |
|
|
|
|
Il gamut dei monitor a raggi catodici (CRT), è
definito dalle primarie rosso, verde e blu o RGB (dall’inglese Red, Green,
Blue) |
|
I monitor sintetizzano i colori eccitando tre
tipi di fosfori (RGB), per cui un colore è ottenuto miscelando parti
diverse di queste tre primarie |
|
|
|
|
Queste tre componenti si mescolano
additivamente: |
|
L’area in cui si sovrappongono due componenti il
colore si somma (entrambi i recettori vengono stimolati) |
|
|
|
|
La rappresentazione tipica dello spazio RGB è in
forma di cubo |
|
Sui vertici si trovano il bianco, il nero, le
primarie e i complementari |
|
|
|
|
|
I colori ciano, magenta e giallo sono detti
complementari dei colori primari |
|
Ad esempio, il ciano è il complementare del
rosso poiché deriva dalla sottrazione del rosso (1,0,0) dal bianco (1,1,1): |
|
bianco (1,1,1) - |
|
rosso (1,0,0) = |
|
ciano (0,1,1) |
|
|
|
|
Le tre coordinate RGB variano ciascuna da 0
(intensità minima) a 1 (intensità massima) |
|
|
|
|
Il colore nero di un pixel si otterrà spegnendo tutti
e tre i fosfori (cioè R=0, G=0, B=0), il colore bianco accendendo i fosfori
al massimo (cioè R=1, G=1, B=1) |
|
|
|
|
In RGB il colore rosso è dato dalla tripletta
(R=1, G=0, B=0); variando R da 0 a 1 (mantenendo costanti G e B a 0) si
ottengono tutti i rossi puri di diversa luminosità (da poco a molto
luminoso) |
|
|
|
|
La diagonale che unisce il nero con il bianco è
detta linea dei grigi |
|
Infatti un grigio ha la caratteristica di avere
tutte le tre componenti uguali, ad esempio, (0.5,0.5,0.5) è un grigio |
|
|
|
|
Ciano, Magenta e Giallo (Cyan, Magenta, Yellow
CMY) sono i colori complementari di Rosso, Verde e Blu |
|
Quando vengono usati come filtri per sottrarre
colore dalla luce bianca, questi colori sono chiamati primarie sottrattive |
|
|
|
|
|
|
Il modello CMY dal punto di vista geometrico è
lo stesso di RGB con la differenza che, in questo caso, il bianco è
l’origine (al posto del nero) e i colori sono definiti per sottrazione
dalla luce bianca, anziché per addizione |
|
|
|
|
Il modello CMY è usato nei dispositivi di stampa
a colori (stampanti laser, ink-jet, a sublimazione, elettrostatiche) dove
l’inchiostro colorato funziona come un filtro che sottrae alcune frequenze
dal bianco del foglio |
|
|
|
|
|
|
Ad esempio, un inchiostro ciano depositato su un
foglio bianco riflette tutti i colori ad eccezione del rosso (in termini di
primarie additive, ciano è dato da bianco - rosso o da verde + blu) |
|
|
|
|
Aree in cui si sovrappongono ciano e magenta
riflettono tutti i colori ad eccezione del rosso e del verde: quindi
appaiono blu! |
|
|
|
|
La relazione esistente tra CMY e RGB è definita
dalle semplici formule |
|
C=1-R
M=1-G
Y=1-B |
|
Usando questo modello per ottenere una
superficie nera dobbiamo evitare che rifletta tutti i primari (rosso, verde
e blu), dobbiamo quindi colorarla di ciano, magenta e giallo alla massima
intensità |
|
|
|
|
|
Nei dispositivi di stampa a colori si è pensato
di aggiungere ai tre inchiostri CMY del vero e proprio inchiostro nero
(detto colore K) per due motivi: |
|
mettendo insieme C, M e Y non si ottiene un nero
puro poiché i tre inchiostri non sono filtri perfetti |
|
l’inchiostro nero costa meno di quelli colorati! |
|
|
|
|
Quindi, anziché usare parti uguali di C, M e Y
si usa K |
|
Si ha così il cosiddetto modello CMYK |
|
Si passa da CMY a CMYK con le formule: |
|
K=min(C,M,Y)
C=C-K
M=M-K
Y=Y-K |
|
|
|
|
Sia RGB che CMYK sono modelli hardware-oriented,
destinati a semplificare la descrizione dei colore utilizzando dispositivi
di visualizzazione o stampa |
|
Per un operatore umano non esperto selezionare
un rosa, un viola o un marrone (in questi spazi) è un’impresa molto
faticosa e necessita di numerosi tentativi |
|
|
|
|
Per questo problemi si introduce il modello HSV
(Hue, Saturation, Value) |
|
Il modello nasce dall’idea di cercare di
riprodurre il modo con cui un pittore prepara un suo colore sulla
tavolozza: prende un colore puro e aggiunge del bianco per ottenere una
tinta; poi aggiunge del nero per cambiare la luminosità ed ottiene un tono |
|
|
|
|
La sua tipica rappresentazione geometrica è su
un sistema di coordinate cilindriche come cono (o prisma a base esagonale)
con il vertice rivolto verso il basso |
|
|
|
|
La coordinata V (Value) corrisponde alla
luminosità e assume valori nell’intervallo da 0 (scuro) a 1 (chiaro) |
|
V è rappresentata dall’asse verticale |
|
|
|
|
La coordinata H (Hue) corrisponde al colore ed è
la misura dell’angolo attorno all’asse verticale (V) |
|
Il rosso vale 0°, il verde vale 120° e il blu
240° |
|
|
|
|
I colori complementari sono opposti (+180°) ai
primari |
|
|
|
|
La coordinata S (Saturation) corrisponde al
livello di saturazione ed è rappresentato da un asse orizzontale avente
angolo H |
|
S varia da 0 (bianco o completamente desaturo) a
1 (colore puro o completamente saturo) |
|
|
|
|
La coordinata S (Saturation) corrisponde al
livello di saturazione ed è rappresentato da un asse orizzontale avente
angolo H |
|
S varia da 0 (bianco o completamente desaturo) a
1 (colore puro o completamente saturo |
|
|
|
|
Gli spazi dei colori sono un astrazione |
|
In realtà ci sono vari aspetti da tenere in
considerazione |
|
I device di output non possono visualizzare
tutti i colori che possiamo vedere. |
|
Limitazioni sull’insieme dei colori
sintetizzabili |
|
Non linearità nel mappaggio di colori dallo
spazio in cui sono definiti a quelli reali |
|
|
|
|
|
|
|
|
Ogni device può sintetizzare solo un
sottoinsieme di colori detto gamut |
|
|
|
|
I device fisici mappano i colori in maniera
fortemente non lineare: |
|
in generale non e’ vero che il grigio RGB
(.5,.5,.5) e’ luminoso la metà di (1,1,1) |
|
Gamma correction si mappa ogni colore
(r,
g, b) in (r g, gg, bg)
dove g è
un valore nel range 0.2 ~ 4 |
|