Sottoproblema
• Dalla dir arrivano L lumens (N “palle da tennis”) : quante ne riceve un intorno di ?
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
ω i
r
x
x
i
n x ω r r
=
Sottoproblema
• Dalla dir arrivano L lumens (N “palle da tennis”) : quante ne riceve un intorno di ?
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
ω i
r
x
x
ω i x r n r
Sottoproblema
• Dalla dir arrivano L lumens (N “palle da tennis”) : quante ne riceve un intorno di ?
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
ω i
r
x
x
ω i
r n x
r
Johann Heinrich Lambert 1728 - 1777
Sottoproblema
• Dalla dir arrivano L lumens (N “palle da tennis”) : quante ne riceve un intorno di ?
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
ω i
r
x
x
ω i
r n x
r Soluz:
=
“La legge del coseno”
L
i
n ) ( r r
ω ⋅ L ) cos(α
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Lighting locale più in generale possibile:
l'equazione della radianza
) , ( ) , ( ) ,
( r e r r r
o x L x L x
L ω ω ω
r r
r
+
=
i i i i r i r r
r x f x L x n d
L
i
ω ω ω ω
ω ω
ω
r r r r r
r r
r
) )(
, ( ) , , ( )
,
( = ∫ ⋅
Ω
∈
legge legge legge legge del del del del coseno coseno coseno coseno
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Lighting locale più in generale possibile:
l'equazione della radianza
• Calcolo esatto dell’equazione della radianza:
operazione troppo costosa
• Grafica interattiva
= bisogno di una formula computabile su tutta la scena più volte al secondo
• Necessaria: forme semplificata dell’equazione
• Ora vediamo un es di modello di lighting molto semplificato!
– il (vecchio) “Modello di Lighting di OpenGL”
– adottato dalla Fixed Pipeline (ed è l’unico a disposizione usandola) – attualmente (con shaders programmati), non è più una scelta obbligata
• ma rimane un buon esempio di quello che possiamo fare
• un buon bilancio realismo/prestazioni
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Cosa è facile fare davvero
• Illuminazione locale:
– riflessioni della luce su oggetti
• con proprietà ottiche (BRDF) semplici e/o approssimate – Luce incidente: alcune fonti di luci (discrete!)
• semplici: puntiformi o all’infinito
• poche: di solito <10 (spesso, 1 o 2)
• Illuminazione globale:
– riflessioni multiple
• in maniera BRUTALMENTE approssimata – assorbimento da parte del mezzo
• assunzioni semplificanti (nebbia uniforme) – tutto il resto solo "a fatica"
• escogitando algoritmi ad-hoc che si adattino al nostro paradigma HW
Modello di illuminazione di OpenGL
• Nel resto di questa lezione vediamo il modello di illuminazione di OpenGL
• è il modello di lighting storico
– quello adottato dalla Fixed Pipeline di OpenGL
– attualmente (con shaders programmabili), non è più una scelta obbligata
– rimane un buon esempio di quello che si puo’ fare a basso costo computazionale
• un buon bilancio realismo/prestazioni
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
I 3 addendi nel modello di Lighting di OpenGL
luce finale
= ambiente
+ riflessione
+ emissione
per ogni addendo, ho una componente R, G e B.
definite sia per l'oggetto, (sotto forma di attributi per vertice)
sia per ogni luce che uso
le proprieta ottiche dell'oggetto, (di solito sono attributi per vertice)
nel loro insieme sono dette il suo "materiale"
terminologia OpenGL
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente emissione
• LEDs, lampadine...
• Non dipende dalle luci – solo dall'oggetto
• E’ solo una componente additiva – costante per R, G e B
• Nota: non manda luce ad oggetti vicini – non e’ illuminazione globale
– per fare cio’, devo settare una altra luce
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
I 3 addendi nel modello di Lighting di OpenGL
luce finale
= ambiente
+ riflessione
+ emissione
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente ambiente
• Modella (ma in modo estremamente semplificato)
la luce che arriva
attraverso rifelssioni multiple – effetto globale
• Assunzione:
"un pò di luce raggiunge ogni punto di ogni superficie"
– Per es. anche quelle in ombra
• Piccola costante additiva
– non dipende dalla normale della superficie
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente ambiente
• prodotto fra:
– colore “ambient” del materiale ( R M G M B M ) – colore “ambient” della luce ( R L G L B L )
• Nota: possono essere colori RGB diversi – prodotto componente per componente
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente ambiente
senza
con
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
I 3 addendi nel modello di Lighting di OpenGL
luce finale
= ambiente
+ riflessione
+ emissione
riflessione diffusa +
riflessione speculare
solo componente ambient
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
I 4 addendi nel modello di Lighting di OpenGL
luce finale
= ambiente
+
riflessione diffusa +
riflessione speculare +
emissione
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione diffusa
• Esibita nella realtà da (per es) : – gesso
– legno (quasi)
– materiali molto opachi (nel senso di "non lucidi")
• Detta anche – diffuse diffuse diffuse diffuse reflection – Lambertian Lambertian Lambertian Lambertian reflection
Johann Heinrich Lambert 1728 - 1777
opaco in [ita] significa anche “non trasparente” :)
Confronta con [eng]:
dull – not shiny (not “glossy”) opaque – not trasparent
I materiali che esibiscono questo comportamento si dicono (puramente) “diffusivi”
o “Lambertiani”
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione diffusa
• Legge di Lambert: Legge di Lambert: Legge di Lambert: Legge di Lambert:
a livello microscopico...
la superficie presenta micro-sfaccettature disposte in modo caotico che riflettono la luce in una direzione “casuale”
(dopo una o più rifelssioni interne!) (BRDF costante:
“un tennista molto caotico, che
rimanda indietro ogni pallina che
riceve in una dir a caso!”)
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione diffusa
• La luce che colpisce una superficie Lambertiana si riflette in tutte
le direzioni (nella semisfera)
– nello stesso modo
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione diffusa
• La luce che colpisce una superficie Lambertiana si riflette in tutte
le direzioni (nella semisfera)
– nello stesso modo
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione diffusa
• La luce che colpisce una superficie Lambertiana si riflette in tutte
le direzioni (nella semisfera)
– nello stesso modo
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione diffusa
• Dipende solo da:
– l'orientamento della superficie
• (la "normale") – la direzione della luce
• del raggio incidente
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione diffusa
• Dipende solo da:
– l'orientamento della superficie N N N N
• (cioè la sua "normale") – la direzione della luce L L L L
• (cioé del raggio incidente)
θ
⋅ cos
⋅
= luce diff materiale diff
diff I k
I
R, G, B (di solito bianco: 1,1,1)
R, G, B (il "colore" dell'oggetto)
moltiplicazione componente per componente
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
fa parte del
"materiale"
(caratteristica dell'oggetto)
Componente riflessione diffusa
• Dipende solo da:
– l'orientamento della superficie N N N N
• (cioè la sua "normale") – la direzione della luce L L L L
• (cioé del raggio incidente)
θ
⋅ cos
⋅
= luce diff materiale diff
diff I k
I
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione diffusa
• Dipende solo da:
– l'orientamento della superficie N N N N
• (cioè la sua "normale") – la direzione della luce L L L L
• (cioé del raggio incidente)
θ
⋅ cos
⋅
= luce diff materiale diff
diff I k
I
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione diffusa
• Dipende solo da:
– l'orientamento della superficie N N N N
• (cioè la sua "normale") – la direzione della luce L L L L
• (cioé del raggio incidente)
) L ˆ N ˆ
⋅ ( ⋅
⋅
= I luce diff k materiale diff
θ
⋅ cos
⋅
= luce diff materiale diff
diff I k
I
se angolo é compreso fra 0° e 90°, else: 0, (oggetto in ombra di se stesso)
nota: ciascuno dei "puntini" in questa equazione rappresenta una operazione diversa!
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione diffusa
L L L L
N N N N
componente diffusa piccola
⍬=70⁰
L L L L
N N N N
componente diffusa grande
⍬=35⁰
L L L L N N N N
componente diffusa massima
⍬=0⁰
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione diffusa
L L L L
N N N N
componente diffusa ZERO
⍬=90⁰
L L L L
N N N N
componente diffusa ZERO
⍬>90⁰
(la superficie è nella propria stessa ombra)
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione diffusa
• Proprietà – modello fedele
delle BRDF
di alcuni materiali reali ☺ – ma non poi molti
– modello fisicamente coerente ☺
• per es, conserva l'energia – molto semplice da calcolare ☺
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
I 4 fattori che consideriamo
luce finale
= ambiente
+
riflessione diffusa +
riflessione speculare +
emissione
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione speculare
• Fenomeno molto semplice (concettualmente):
fotoni che “rimbalzano”
– come se fossero palline!
• NB: natura corpuscolare del fotone – il rimbalzo dipende dalla normale
della superficie
• in formula?
• Microscopicamente: Microscopicamente: Microscopicamente: Microscopicamente:
la normale delle “ microfacets ” si discosta poco da quella della superficie macroscopica
(meno se ne discosta, in media, maggiormente speculare apparirà la sup)
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione speculare
• "Specular" reflection
• Per materiali lucidi – con riflessi brillanti – ("highlights")
senza con
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione speculare
• Idea base:
la luce non viene riflessa da materiali lucidi in maniera eguale in tutte le direzioni
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione speculare
L: raggio incidente N: normale R: raggio riflesso V: dir. di vista
N N N L N L L
L R R R R
V V V V α
in 3D!
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione speculare
• Phong light model – by Bui-Tuong Phong, 1975
in 3D!
α
⋅ cos
⋅
= luce spec materiale spec
spec I k
I
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione speculare
• Elevando il coseno ad una potenza,
si ottengono riflessi piu' piccoli e brillanti
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
fanno parte del "materiale"
(caratteristiche dell'oggetto)
Componente riflessione speculare
• Phong light model – by Bui-Tuong Phong, 1975
in 3D
n α
spec materiale spec
luce
spec I k
I = ⋅ ⋅ cos
α
⋅ cos
⋅
= luce spec materiale spec
spec I k
I
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione speculare
• Phong light model – by Bui-Tuong Phong, 1975
in 3D
n spec
materiale spec
luce k R V
I ⋅ ⋅ ( ⋅ ˆ ˆ )
=
α
⋅ cos
⋅
= luce spec materiale spec
spec I k
I
n α
spec materiale spec
luce
spec I k
I = ⋅ ⋅ cos
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione speculare
1
n = n = 5 n = 10 n = 100
⋅
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione speculare
• Blinn-Phong light model:
• semplificazione del Phong light model
• risultati simili, formula lievemente diversa
• Intuizione: V V V V è (quasi) in direzione di R R R R sse
N N N
N è (quasi) la media (rinormalizzata) fra V V V V e L LL L
• (e non devo neanche calcolarlo, R R R R )
Jim Blinn
(MEGA-MEGA-GURU)N N N L N L L
L R R R R
V V V V
“half-way” vector
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione speculare
n spec
materiale spec
luce
spec I k R V
I = ⋅ ⋅ ( ⋅ ˆ ˆ )
phong:
blinn-phong: I spec = I luce spec ⋅ k materiale spec ⋅ ( H ˆ ⋅ N ˆ ) n
"half-way"
vector
N N N N L L L
L R R R R
V V V V
ˆ |
| ˆ ˆ ˆ ˆ
V L
V H L
+
= +
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
I 4 fattori che consideriamo
luce finale
= ambiente
+
riflessione diffusa +
riflessione speculare +
emissione
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Equazione di lighting in totale
+
⋅
⋅
⋅ materiale spacular n
spacular
luce k H N
I ( )
+
⋅
⋅
⋅ k ( L N )
I luce diffuse materiale diffuse
+
⋅ materiale ambient
ambient
luce k
I
emission materiale
k
tot = I
propretà del materiale propretà della luce
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Materiali...
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Equazione di lighting:
modellazione delle luci
+
⋅
⋅
⋅ materiale spacular n
spacular
luce k H N
I ( ˆ ˆ )
+
⋅
⋅
⋅ k ( L ˆ N ˆ ) I luce diffuse materiale diffuse
+
⋅ materiale ambient
ambient
luce k
I
emission materiale
k
tot = I
propretà della luce
V L
V L
ˆ ˆ
ˆ ) ( ˆ
+ +
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Modellazione delle luci
• Come varia L?
– costante nella scena: fonti di luci "direzionali"
• buono per fonti di luce molto distanti, e.g. il sole – varia nella scena: fonti di luci "posizionali"
• buono per fonti di luci vicine, e.g. lampadine
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Modellazione delle luci: luci posizionali
• Nelle luci posizionali, si può attenuare l'intensità in funzione della distanza
• In teoria (per la fisica) intensità = 1 / distanza 2
= ⋅
2 L
1 d f attentuazi one luce c
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Modellazione delle luci: luci posizionali
• In pratica, questo porta ad
attenuazioni della luce troppo repentine
• Invece usiamo:
+
= + 1 , 1
min 2
L 3 L 2
1 c d c d
f attentuazi one luce c
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Equazione di lighting
n spacular
materiale spacular
luce k H N
I ⋅ ⋅ ( ⋅ )
+
⋅
⋅
⋅ k ( L N )
I luce diffuse materiale diffuse +
⋅ materiale ambient ambient
luce k
I
emission materiale
+ k
tot =
I ⋅ f attentuazi one luce
+
= + 1 , 1
min 2
L 3 L 2
1 c d c d
f attentuazi one luce c
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Equazione di Lighting di OpenGL (completa)
n spacular
materiale spacular
luce k H N
I ⋅ ⋅ ( ˆ ⋅ ˆ )
+
⋅
⋅
⋅ k ( L ˆ N ˆ ) I luce diffuse materiale diffuse
+
⋅ materiale ambient ambient
luce k
I
emission materiale
+ k
tot =
I attenuazio ne luce
⋅ f
spotlight effetto
⋅ f
caratteristiche della luce caratteristiche del materiale dati dalla scena
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Prossimamente:
F ram m enti & a ttr ib u ti & a ttr ib u ti & a ttr ib u ti & a ttr ib u ti in te rp o la ti in te rp o la ti in te rp o la ti in te rp o la ti Ver ti c i & l o ro a ttr ib u ti & l o ro a ttr ib u ti & l o ro a ttr ib u ti & l o ro a ttr ib u ti
Screen buffer Ver ti c i por iettati & a ttr ib u ti & a ttr ib u ti & a ttr ib u ti & a ttr ib u ti co m p u ta ti co m p u ta ti co m p u ta ti co m p u ta ti
rasterizer triangoli
c om put az ioni per f ram m ent o set-
up rasterizer segmenti set-
up rasterizer
punti set-
up
c om put az ioni per v er tic e
lighting: DOVE?
x y
z