Vous êtes sur la page 1sur 20

introduction

équation
calculs : éclairement direct
équation et shader
exemples
calculs : éclairement indirect
exemples

M2-GamaGora
Lumière et Matières

J.C. Iehl

January 28, 2008

J.C. Iehl M2-GamaGora


introduction
équation
calculs : éclairement direct
équation et shader
exemples
calculs : éclairement indirect
exemples

de quoi on parle ?
de la propagation de la lumière
I propagation directe : les objets recoivent de la lumière
directement des sources de lumières : ombres et pénombres.
I propagation indirecte : tous les objets réfléchissent la lumière
qu’ils recoivent, donc les objets recoivent de la lumière de tous
les objets.

de l’aspect des objets


I mat, diffus, lambert
I réfléchissant, phong, glossy
I spéculaire : miroir, transparent
J.C. Iehl M2-GamaGora
introduction
équation
calculs : éclairement direct
équation et shader
exemples
calculs : éclairement indirect
exemples

et alors ?

propagation indirecte : les objets réfléchissent la lumière qu’ils


recoivent
l’aspect des objets modifie la propagation de la lumière
on parle plutot de la matière des objets

J.C. Iehl M2-GamaGora


introduction
équation
calculs : éclairement direct
équation et shader
exemples
calculs : éclairement indirect
exemples

direct

J.C. Iehl M2-GamaGora


introduction
équation
calculs : éclairement direct
équation et shader
exemples
calculs : éclairement indirect
exemples

indirect

J.C. Iehl M2-GamaGora


introduction
équation
calculs : éclairement direct
équation et shader
exemples
calculs : éclairement indirect
exemples

indirect

J.C. Iehl M2-GamaGora


introduction
équation
calculs : éclairement direct
équation et shader
exemples
calculs : éclairement indirect
exemples

influence de la source de lumière

J.C. Iehl M2-GamaGora


introduction
équation
calculs : éclairement direct
équation et shader
exemples
calculs : éclairement indirect
exemples

influence de la matière

J.C. Iehl M2-GamaGora


introduction
équation
calculs : éclairement direct
équation et shader
exemples
calculs : éclairement indirect
exemples

propagation indirecte

J.C. Iehl M2-GamaGora


introduction
équation
calculs : éclairement direct
équation et shader
exemples
calculs : éclairement indirect
exemples

l’équation qui fait peur

Z
Lr (p, ωr ) = Le (p, ωr ) + fr (p, ωi → ωr )Li (p, ωi )|cosθi |dωi
Ω+

I énergie L(p, ω)
I matières (décrire l’aspect des objets) fr (p, ωi → ωr )

J.C. Iehl M2-GamaGora


introduction
équation
calculs : éclairement direct
équation et shader
exemples
calculs : éclairement indirect
exemples

l’explication qui fait moins peur

énergie réfléchie = énergie émise + énergie reçue de toutes les


autres directions

J.C. Iehl M2-GamaGora


introduction
équation
calculs : éclairement direct
équation et shader
exemples
calculs : éclairement indirect
exemples

calculer l’éclairement direct

simplifier l’intégrale générale


on suppose que p n’est pas lui même sur une source :

Le (p, ωr ) = 0

simplifier les calculs


on ne s’interresse qu’aux sources de lumières autour de p, on note
ΩL l’ensemble des directions.

J.C. Iehl M2-GamaGora


introduction
équation
calculs : éclairement direct
équation et shader
exemples
calculs : éclairement indirect
exemples

calculer l’éclairement direct (2)


simplification de l’équation
Z
Lr (p, ωr ) = fr (p, ωi → ωr )Le (p 0 , −ωi )|cosθi |dωi
ΩL

p 0 est situé sur une source de lumière visible dans la direction ωi ,


donc :
Li (p, ωi ) = Lr (p 0 , −ωi )
et
Lr (p 0 , −ωi ) = Le (p 0 , −ωi )

énergie réfléchie = énergie reçue des sources de lumières visibles


(= ensemble de directions ΩL )
J.C. Iehl M2-GamaGora
introduction
équation
calculs : éclairement direct
équation et shader
exemples
calculs : éclairement indirect
exemples

et avec un shader ?

problème :
I comment trouver les sources de lumières visibles du fragment
courant ?
I comment calculer l’intégrale ?

réponse :
en utilisant une shadow map ?

J.C. Iehl M2-GamaGora


introduction
équation
calculs : éclairement direct
équation et shader
exemples
calculs : éclairement indirect
exemples

matières et shaders

diffus, Lambert
fr (p, ωi → ωr ) = 0 < constante < 1

réfléchissant, Phong, Glossy


n
fr (p, ωi → ωr ) = constante × ( ωi +ω
2
r
Np )

spéculaire, miroir, Fresnel


128
fr (p, ωi → ωr ) = constante × ( ωi +ω
2
r
Np )
ωi +ωr 5
fr (p, ωi → ωr ) = constante + (1 − constante) × (1 − 2 Np )

J.C. Iehl M2-GamaGora


introduction
équation
calculs : éclairement direct
équation et shader
exemples
calculs : éclairement indirect
exemples

matières et shaders

en général, on combine deux modèles de matières


Lambert + Glossy ”faible” (n < 100)
n
fr (p, ωi → ωr ) = constanted + constantes × ( ωi +ω
2
r
Np )

Glossy ”faible” (n < 100) + Fresnel


fr (p, ωi → ωr ) =
n 128
constantes × ( ωi +ω
2
r
Np ) + constantef × ( ωi +ω
2
r
Np )

J.C. Iehl M2-GamaGora


introduction
équation
calculs : éclairement direct
équation et shader
exemples
calculs : éclairement indirect
exemples

exemples

présentation Valve 2006

J.C. Iehl M2-GamaGora


introduction
équation
calculs : éclairement direct
équation et shader
exemples
calculs : éclairement indirect
exemples

calculer l’eclairement indirect

petits problèmes :
I un vertex ou un fragment ne connait rien du reste de la scène
...
I beaucoup trop de calculs pour du temps réel ...

J.C. Iehl M2-GamaGora


introduction
équation
calculs : éclairement direct
équation et shader
exemples
calculs : éclairement indirect
exemples

approximations

terme ambiant
I constant : énergie présente dans les ”ombres”
I précalculé par zone de la scène / par vertex
I approximation courante : ”ambiant occlusion”
I dépendant de la direction ωr : harmoniques sphériques,
zonales

J.C. Iehl M2-GamaGora


introduction
équation
calculs : éclairement direct
équation et shader
exemples
calculs : éclairement indirect
exemples

exemples

présentation Valve 2006, 2007

J.C. Iehl M2-GamaGora

Vous aimerez peut-être aussi