1 effetti impressionistici daniele marini. 2 tecniche discrete di manipolazione del frame buffer:...

24
1 Effetti impressionistici Daniele Marini

Upload: santino-d-ambrosio

Post on 02-May-2015

228 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: 1 Effetti impressionistici Daniele Marini. 2 Tecniche discrete di manipolazione del frame buffer: –Texture mapping –Antialiasing –Compositing –Alpha blending

1

Effetti impressionistici

Daniele Marini

Page 2: 1 Effetti impressionistici Daniele Marini. 2 Tecniche discrete di manipolazione del frame buffer: –Texture mapping –Antialiasing –Compositing –Alpha blending

2

• Tecniche discrete di manipolazione del frame buffer:– Texture mapping– Antialiasing– Compositing– Alpha blending– Tone reproduction (correzione gamma,

correzione colori)

Page 3: 1 Effetti impressionistici Daniele Marini. 2 Tecniche discrete di manipolazione del frame buffer: –Texture mapping –Antialiasing –Compositing –Alpha blending

3

• riprodurre fedelmente la realtà: es. dell’arancia, costruire un modello accurato:– Modello poliedrico– Modello spline– Modello procedurale/funzionale

• Approssimare la realtà con metodi “impressionistici” - aggiungere dettagli a un modello semplice

Page 4: 1 Effetti impressionistici Daniele Marini. 2 Tecniche discrete di manipolazione del frame buffer: –Texture mapping –Antialiasing –Compositing –Alpha blending

4

• Scomporre la superficie da rendere in “frammenti” fragments della dimensione al più di un pixel; durante il rendering a ogni fragment si assegna il colore seguendo il modello di illuminazione scelto e modificandolo secondo una qualche regola:– Texture mapping --> usa una texture– Bump mapping --> perturba le normali– Environmental mapping --> simula riflessioni– …..

Page 5: 1 Effetti impressionistici Daniele Marini. 2 Tecniche discrete di manipolazione del frame buffer: –Texture mapping –Antialiasing –Compositing –Alpha blending

5

Fragments

• Le primitive sono rasterizzate e convertite in una immagine 2D. Rasterizzare vuol dire decidere quali quadrati di una griglia a valori interi in coordinate window sono occupati dalla primitiva, e assegnare un colore e altri valori

• Un quadrato della griglia con associati i valori di colore e profondità è chiamato fragment frammento

• Un frammento è un pixel “virtuale”

• I Pixel sono elementi del frame buffer; un frammento, che proviene da operazioni di rasterizzazione di una primitiva, viene combinato con il suo pixel corrispondente per produrre un nuovo pixel

Page 6: 1 Effetti impressionistici Daniele Marini. 2 Tecniche discrete di manipolazione del frame buffer: –Texture mapping –Antialiasing –Compositing –Alpha blending

6

Fragments

• Quando il frammento è stato costruito si può applicare: texturing, nebbia, antialiasing se sono inclusi nella descrizione del frammento

• Fatto ciò si possono applicare: alpha blending, dithering, operazioni logiche bit per bit (maschere, ..), usando il frammento e il pixel già inserito nel framebuffer

• Infine il valore di colore del frammento (indice in LUT o quaterna RGBA) viene scritto nel pixel e visualizzato nella window usando la modalità di colore scelta.

Page 7: 1 Effetti impressionistici Daniele Marini. 2 Tecniche discrete di manipolazione del frame buffer: –Texture mapping –Antialiasing –Compositing –Alpha blending

7

Dithering

• Se la profondità di colore è limitata, si approssima la gamma dei colori attraverso con il dithering (esitare, tremare).

• alternando il colore di pixel adiacenti si ottengono le sfumature desiderate, visibili da una certa distanza

• l'occhio non è in grado di distinguere i piccoli punti singolarmente, ma coglie solo l'effetto d'insieme.

• tecnica di riproduzione dei colori a stampa con i retini

Page 8: 1 Effetti impressionistici Daniele Marini. 2 Tecniche discrete di manipolazione del frame buffer: –Texture mapping –Antialiasing –Compositing –Alpha blending

8

Dithering

Page 9: 1 Effetti impressionistici Daniele Marini. 2 Tecniche discrete di manipolazione del frame buffer: –Texture mapping –Antialiasing –Compositing –Alpha blending

9

Dithering

• errore cromatico: differenza tra il valore esatto del colore del pixel e quello più vicino, data una profondità di colore

• Il dithering compensa l’errore cromatico distribuendo la differenza sui pixel confinanti con il pixel considerato

Page 10: 1 Effetti impressionistici Daniele Marini. 2 Tecniche discrete di manipolazione del frame buffer: –Texture mapping –Antialiasing –Compositing –Alpha blending

10

Dithering

• algoritmo di Floyd-Steinberg: distribuisce l'errore cromatico sui pixel confinanti: – 7/16 assegnati al pixel a EST, – 5/16 al pixel SUD, – 3/16 al pixel SUD-OVEST, – 1/16 al pixel SUD-EST

Page 11: 1 Effetti impressionistici Daniele Marini. 2 Tecniche discrete di manipolazione del frame buffer: –Texture mapping –Antialiasing –Compositing –Alpha blending

11

Alpha blending

• Senza blending ogni nuovo frammento sovrascriverebbe il colore già presente nel framebuffer come se il frammento fosse opaco

• Con il blending si può controllare quanta parte del colore esistente deve venir combinato col colore nel nuovo frammento

• alpha blending permette di creare un frammento trasparente, “attraverso il quale” si può vedere il colore già presente

• Compositing, painting e trasparenza si basano sul blending.

Page 12: 1 Effetti impressionistici Daniele Marini. 2 Tecniche discrete di manipolazione del frame buffer: –Texture mapping –Antialiasing –Compositing –Alpha blending

12

Compositing

• Una immagine di sintesi può essere il prodotto del rendering di molteplici elementi, per ciascuno dei quali si costruisce una immagine

• Il compositing mette assieme le diverse immagini per creare la scena completa

Page 13: 1 Effetti impressionistici Daniele Marini. 2 Tecniche discrete di manipolazione del frame buffer: –Texture mapping –Antialiasing –Compositing –Alpha blending

13

Compositing - alpha blending

• Alpha blending richiede alfa channel RGB• Il quarto canale alfa contiene il valore di

blending• Trasparente: =0; • opaco: =1

– Pixel sorgente: s=(sr,sg,sb,sa) – pixel destinazione: d=(dr,dg,db,da) – compositing: d’=(brsr+crdr, …) – dove b e c sono i fattori di blending del pixel

sorgente e pixel destinazione

Page 14: 1 Effetti impressionistici Daniele Marini. 2 Tecniche discrete di manipolazione del frame buffer: –Texture mapping –Antialiasing –Compositing –Alpha blending

14

• L’ordine con cui viene eseguito il compositing influenza il risultato

glEnable(GL_BLEND)

glBlendFunc(source_factor, destination_factor)

Date n immagini da comporre con blending, al pixel i ogni immagine ha un colore Cii Sommando con blending le immagini si supera il valore di coloreSi sostituisce Ci con 1/n Ci e i con 1/n i

Page 15: 1 Effetti impressionistici Daniele Marini. 2 Tecniche discrete di manipolazione del frame buffer: –Texture mapping –Antialiasing –Compositing –Alpha blending

15

Correzione del gamma

• Una variazione lineare dello stimolo produce una variazione logaritmica della sensazione percepita

• I monitor sono costruiti seguendo questo principio: un incremento della tensione di controllo produce un incremento logaritmico della intensità dell’emissione

• Il gamma si può correggere con LUT

Page 16: 1 Effetti impressionistici Daniele Marini. 2 Tecniche discrete di manipolazione del frame buffer: –Texture mapping –Antialiasing –Compositing –Alpha blending

16

gamma

• Due monitor diversi producono immagini diverse

• Due problemi: calibrazione e riproduzione dei toni

varia, tipici valori sono 1.5, 2, 2.5

logI c0 logV

I c V

Page 17: 1 Effetti impressionistici Daniele Marini. 2 Tecniche discrete di manipolazione del frame buffer: –Texture mapping –Antialiasing –Compositing –Alpha blending

17

Page 18: 1 Effetti impressionistici Daniele Marini. 2 Tecniche discrete di manipolazione del frame buffer: –Texture mapping –Antialiasing –Compositing –Alpha blending

18

Aliasing e anti aliasing

• Prodotto da insufficiente frequenza di campionamento

Page 19: 1 Effetti impressionistici Daniele Marini. 2 Tecniche discrete di manipolazione del frame buffer: –Texture mapping –Antialiasing –Compositing –Alpha blending

19

Page 20: 1 Effetti impressionistici Daniele Marini. 2 Tecniche discrete di manipolazione del frame buffer: –Texture mapping –Antialiasing –Compositing –Alpha blending

20

• Possiamo campionare in posizioni regolari al centro del pixel:

Page 21: 1 Effetti impressionistici Daniele Marini. 2 Tecniche discrete di manipolazione del frame buffer: –Texture mapping –Antialiasing –Compositing –Alpha blending

21

• Profili seghettati

• Perdita di dettagli

• Scomparsa della texture

Page 22: 1 Effetti impressionistici Daniele Marini. 2 Tecniche discrete di manipolazione del frame buffer: –Texture mapping –Antialiasing –Compositing –Alpha blending

22

• Filtraggio: sovracampionare il segnale

Page 23: 1 Effetti impressionistici Daniele Marini. 2 Tecniche discrete di manipolazione del frame buffer: –Texture mapping –Antialiasing –Compositing –Alpha blending

23

• Per ogni pixel si prende la media pesata del vicinato dei sovracampioni:

Page 24: 1 Effetti impressionistici Daniele Marini. 2 Tecniche discrete di manipolazione del frame buffer: –Texture mapping –Antialiasing –Compositing –Alpha blending

24

• In OGL si può attivare anti aliasing di punti, linee e poligoni con:

glEnable(GL_POINT_SMOOTH);

glEnable(GL_LINE_SMOOTH);

glEnable(GL_POLYGON_SMOOTH);

• Si può attivare anti aliasing con blending e compositing:

glEnable(GL_BLEND);

glBlendFunc(GL_SRC_ALPHA, GL_ONES_MINUS_SRC_ALPHA);