1
Local Lighting
(recall?)
Game Engine
Parte del game che si occupa di alcuni dei task “comuni”
Scena / livello Renderer
Real time transofrm + lighting Models, materials … Physics engine
(soft real-time) newtonian physical simulations Collision detection + response
Networking
(LAN – es tramite UTP)
Sound mixer e “sound-renderer”
Gestore unificato HCI devices
Main event loop, timers, windows manager…
Memory management Artificial intelligence module
Soluz dei sotto task comuni AI Supporto alla localizzazione Scripting
GUI (HUD)
2
Lighting locale
LUCE
OCCHIO
OGGETTO
riflessione
Lighting in breve
Proprietà del materiale
(dati che modellano i materiali)
Ambiente di illunimazione
(dati che modellano le luci)
Dati geometrici
(es. normale, pos osservatore…)
(lo c a l) L IG H T IN G
R, G, B finale
(un modello di lighting)
3
Reminder: le normali
Attributo per vertice delle mesh…
Reminder:
seams per hard edges
4
pre-computazione
Normale di un Triangolo: v1
v2
v1×v2
N ˆ
v1
Nˆ
2
Nˆ
3
Nˆ
4
Nˆ
5
Nˆ
6
Nˆ Normale di un vertice
(condiviso da ntriangoli):
Nn
N N
N
ˆ ˆ ... ˆ
2
1
+ + +
=
|
| ˆ
N N = N
Lighting in breve
Proprietà del materiale
(dati che modellano i materiali)
Ambiente di illunimazione
(dati che modellano le luci)
Dati geometrici
(es. normale, pos osservatore…)
(lo c a l) L IG H T IN G
R, G, B finale
(un modello di lighting)
5
Materiale
Lighting in breve
Proprietà del materiale
(dati che modellano i materiali)
Ambiente di illunimazione
(dati che modellano le luci)
Dati geometrici
(es. normale, pos osservatore…)
(lo c a l) L IG H T IN G
R, G, B finale
(un modello di lighting)
6
Ambiente di illuminazione
Insieme (discreto) di emettitori di luce
+ componente ambient
x ogni luce:
geometria: puntiforme o direzionale?
intensità / colore area affected:
area light spot light
Lighting in breve
Proprietà del materiale
(dati che modellano i materiali)
Ambiente di illunimazione
(dati che modellano le luci)
Dati geometrici
(es. normale, pos osservatore…)
(lo c a l) L IG H T IN G
R, G, B finale
(un modello di lighting)
7
Per-vertex lighting
(“Gouraud shading”)
Frammenti & varying & varying & varying & varying interpolatiinterpolatiinterpolatiinterpolati Vertici & loro attributi& loro attributi& loro attributi& loro attributi
Screen buffer
Vertici poriettati & & & & varyingvaryingvaryingvarying rasterizer
triangoli
computazioni per frammento set-up
rasterizer segmenti set-up
rasterizer punti set-up
computazioni per vertice
compreso:
proprietà materialedel e normale
proietto applicoe lighting
interpolo
colore Compreso:
col. finale compreso:
colore per vertice
(risultato del lighting)
Per-fragment lighting
(“Phong shading”)
Frammenti & varying & varying & varying & varying interpolatiinterpolatiinterpolatiinterpolati Vertici & loro attributi& loro attributi& loro attributi& loro attributi
Screen buffer
Vertici poriettati & & & & varyingvaryingvaryingvarying rasterizer
triangoli
computazioni per frammento set-up
rasterizer segmenti set-up
rasterizer punti set-up
computazioni per vertice
compreso:
proprietà materialedel e normale
trasformo normalesia posizioneche
interpolo
normale compreso:
normale interpolata compreso:
normale trasformata
applico - lighting - per ottenere
il colore frammentodel
8
Per vertex lighting
Invece di interpolare il colore
dopo il lighting.interpolo la normale
prima del lighting!dettaglio: interpolando due vettori normali, non ottengo un vettore normale:
(bisogna rinormalizzare dopo l'interpolazione)
n r
1n r
0 interpolaz fra e nr0nr1
interpolaz fra e rinormalizzatanr0
nr1
Per vertex VS Per fragment
Per-vertex Lighting -(a.k.a. "Gouraud Shading") meno oneroso:
applico il lighting una volta per vertice – di solito #vertici << #frammenti
Per-fragment* Lighting –(a.k.a. "Phong Shading“) risultati migliori
specialmente con i riflessi luminosi e piccoli (alta “glossiness”)
Per vertex Per Fragment
(*) talvolta (ma impropriamente) detto: per-pixel lighting
9
Normal-mapping
Frammenti & varying & varying & varying & varying interpolatiinterpolatiinterpolatiinterpolati Vertici & loro attributi& loro attributi& loro attributi& loro attributi
Screen buffer
Vertici poriettati & & & & varyingvaryingvaryingvarying rasterizer
triangoli
computazioni per frammento set-up
rasterizer segmenti set-up
rasterizer punti set-up
computazioni per vertice
compreso:
e normale Nmat.
espazio tangente
T,B
trasformo posizsia N,T,Bche
interpolo
N,T,B compreso:
N,T,B interpolati compreso:
N,T, B leggo
normale, trasformo, applico - lighting - NORMAL
MAP