Rendu réaliste en synthèse d’images. Lancer de rayons stochastique
Rendu réaliste en synthèse d’images.
Lancer de rayons stochastique
Organisation
Lancer de rayons stochastique– Intégration de Monte Carlo
Exemple sur l’éclairage direct
– Résolution de l’équation de la luminance– Optimisation
Carte de photons
Lancer de rayon classique
Un rayon d’ombre par point
Sources lumineuses approximées par un point
Ombres dures
Solution exacte
Ombres douces Sources étendues != Sources ponctuelles
Plus d’échantillons?
Approximer la source par plusieurs points Aliasing sur les ombres (Effet marche d’escalier)
x
y
rxy
x
y
V(x,y)=?
LA
xy
yxer dy
ryxVyLxfxL 2
coscos),()(),()(
Equation
Intégration analytique très difficile
Utilisation de techniques numériques : Monte Carlo
Intégration numérique
Intégration numérique d'intégrale simple
b
a
dxxfI )(
a b
)(xf
Intégration déterministe
Intégration déterministe par quadrature :
N
i
ii
b
a
xfw
dxxfI
1
)(
)(
a b
)(xf
1x Nx
Ne marche que sous certains conditions : fonctions dérivables, dimensions du problème pas trop élevé
Intégration de Monte Carlo
Estimation de la valeur d’une intégrale– Échantillonner N points suivant une densité de
probabilité p(x)– L’estimateur est une moyenne pondérée des
valeurs de la fonction à chaque échantillon
N
i i
i
xpxf
NI
1 )()(1ˆ
Variable aléatoire continue
Variable aléatoire X
Fonctions de répartition : probabilité que la variable aléatoire soit inférieure ou égal à x
Densité de probabilité
)(xp
x
dyypxF )()(
Exemple : taille d’un individu
Densité de probabilité
120 230
)(xp
160 190
1)(300
0
dxxp
180
170
)(])180,170[( dxxpXP
0)()178(178
178
dxxpXP
2/1)()170(170
0
dxxpF
)(xF
Densité de probabilité uniforme
Densité uniforme
P(x) : probabilité que x appartienne à [a’,b’]
a b
)(xp
a’ b’
abxp
dxxpb
a
1
)(
1)(
'b
'a
dx)x(p)x(P
Échantillonnage selon une densité
Choisir une densité de probabilité p(x)
0 1
1
0
)(xp
Échantillonnage selon une densité
Choisir une densité de probabilité p(x).
Intégrer pour obtenir une fonction de répartition P(x):
0 1
1
0
)(xPx
dttpxP0
)()( )(xp
Échantillonnage selon une densité
Choisir une densité de probabilité normalisée p(x).
Intégrer pour obtenir une fonction de répartition P(x):
Inverser P(x) : x = P-1()
échantillonné avec une densité uniforme entre 0 et 1 0 1
1
0
)(xP
x
dttpxP0
)()(
Échantillonnage selon une densité
Choisir une densité de probabilité normalisée p(x).
Intégrer pour obtenir une distribution de probabilité P(x):
Inverser P(x) : x = P-1() 0 1
1
0
)(xP
x
dttpxP0
)()(
Transforme un
échantillonnage uniforme vers échantillonnage non uniforme
Illumination directe
Génération de points aléatoires sur la source
Évaluation de l'intégrale avec ces points
LA
dyyDxL )()(
N
i i
i
ypyD
NxL
1 )()(1)(
x
y
rxy
x
y
V(x,y)=?
’
LA
xy
yxer dy
ryxVyLxfxL 2
coscos),()(),()(
Illumination directe
1 rayon d'ombre 9 rayons d'ombre
N
i
ixy
yxiies yxVis
ryLxfA
NxL
i
i
12 ),(coscos)(),(1)(
SAyp 1)(
Illumination directe
36 rayons d'ombre 100 rayons d'ombre
N
i
ixy
yxiies yxVis
ryLxfA
NxL
i
i
12 ),(coscos)(),(1)(
Échantillonnage stratifié
Objectif – Réduction de la variance.
Principe– Découpage du domaine d'intégration
0 1
)(xf
1
0 0
2
1
11
1
)(...)()()(x x
x xn
dxxfdxxfdxxfdxxfI
Échantillonnage stratifié
Objectif – Réduction de la variance.
Principe– Découpage du domaine d'intégration– Estimateur
0 1
)(xf
N
i i
istrat xp
xf
NI
1 )(
)(1
Échantillonnage stratifié
Application à 2 dimensions
N2 échantillons
Échantillons arbitrairement proches
Problème pour les dimensions supérieures
Échantillonnage stratifié
9 rayons d'ombre uniformes
9 rayons d'ombre stratifiés
Échantillonnage stratifié
36 rayons d'ombre uniformes
36 rayons d'ombre stratifiés
Échantillonnage stratifié
100 rayons d'ombreuniformes
100 rayons d'ombrestratifiés
Echantillonnage stratifié
Application aux dimensions supérieuresÉchantillonnage stratifié en en grille
Nd Echantillons
Échantillonnage des N reines
N Echantillons
9 échantillons
Uniforme
Stratifié N reines
36 échantillons
Uniforme
Stratifié N reines
Plusieurs sources lumineuses
L’intégrale ne change pas : au lieu d’intégrer sur la surface de la source, on intègre sur les surfaces des sources lumineuses.
La densité pour sélectionner les points est modifié : d’abord on sélectionne une source S avec la densité p(S) puis un point sur S avec p(y|S)
T
SSp )(
sASyp 1)( )()()( SypSpyp
LA
xy
yxer dy
ryxVyLxfxL 2
coscos),()(),()(
Plusieurs sources lumineuses
36 rayons d’ombres par pixels dans les deux images mais densité de probabilité différentes
Application aux pixels
Calcul de la luminance au centre du pixel : aliassage
Utilisation d'un filtre …
… évalué par intégration de Monte Carlo.
Pixel
dxxLxfL )()(
Application aux pixels
Tout type d'échantillonnage envisageable
N
i i
ii
xpxLxf
NL
1 )()()(1
Implantation
1 rayon / pixel 10 rayons / pixel 100 rayons / pixel
Implantation
Comparaison :
1 rayon centré par pixel
100 rayons d'ombre aléatoires par intersection
100 rayons aléatoires par pixel
1 rayons d'ombre aléatoire par intersection
Équation du rendu
Évaluation de l'équation du rendu– Comment écrire l'équation du rendu et l'évaluer par
intégration de Monte Carlo?
– Quelle densité de probabilité utiliser pour l'équation du rendu?
– Algorithmes et résultats
Équation du rendu
x
dnxLxfxLxL xre ),cos()(),()()(
x
L x( )
L xe ( )
L x( )
Équation du rendu
x
re fL cos
x
dnxLxfxLxL xre ),cos()(),()()(
Calcul de la luminance
Comment évaluer L ?
– Trouver Le(x)
– Ajouter L=?
x
dnxLxfxL xri ),cos()(),()(
Calcul de la luminance
Comment évaluer Li ?– Intégration de Monte Carlo
– Générer des directions aléatoires sur x, en utilisant la densité de probabilité p()
x
dnxLxfxL xr ),cos()(),()(
N
i i
xiiir
pnxLxf
NxL
1 )(),cos()(),(1)(
Calcul de la luminance
Échantillonnage de l'hémisphère
sin),( ddd
0 20
2/
in
in
in
ind
in
21 2)cos(cos)( etap
21
1
1 2)cos(cos2
1)( etanp nn
Calcul de la luminance
Générer une direction aléatoire i
N
i i
ir
p
xLf
NL
1 )(
)cos()()(1
Evaluer la brdf
Evaluer le cos(…)
Evaluer L(xi)
Calcul de la luminance
Evaluation de L(xi) ?
La radiance est constante sur la direction de propagation.
rc(x, i) = premier point visible.
L(xi) = L(rc(x, i) i)
Calcul de la luminance
Évaluation récursive
Chaque rebond ajoute un niveau d'éclairage indirect.
Arrêt de la récursivité
Quand arrêter la récursivité ?
Les contributions des ordres de réflexions élevés sont négligeables.
Si on les ignore, les estimateurs sont biaisés !
Roulette russe
Roulette russe– En pratique, définition d'un coefficient d'absorption
Probabilité que le rayon soit absorbé. La luminance deviens L/(1-.
– Exemple : =0.9 (1.0 - moyenne de la réflectance) Un rayon sur 10 est réfléchit. La luminance estimée sur un rayon réfléchi est multipliée par
10.
Roulette russe
Estimateur non biaisé
Espérance de l’estimateur est toujours correcte
Plus grande variance
Mais plus efficace
Tracé de chemins
Algorithme– Lancer N rayons par pixels– A chaque intersection avec une surface, lancer 1
rayon distribués sur l'hémisphère pour évaluer l’équation de la luminance
– Terminer la récursivité par roulette russe
Tracé de chemins
1 rayon/pixel 16 rayons/pixel 256 rayons/pixel
Très bruité : contribution nulle tant que le chemin n’a pas atteint une source lumineuse!!
Tracé de chemins
?L ?L
Tracé de chemins
?
0
r
e
L
L
?
0
r
e
L
L
Tracé de chemins
?inL ?inL
Tracé de chemins
?inL ?inL
Tracé de chemins
?L ?L
Tracé de chemins
?0reLL
?0reLL
Tracé de chemins
?inL ?inL
Tracé de chemins
?L ?L
Tracé de chemins
?
234.1
r
e
L
L
?
234.1
r
e
L
L
Tracé de chemins
Tracé de chemins
)()()( xLxLxL ie
• Améliorer l’algorithme en séparant l’intégrale en deux parties
x
x
dnxLxf
dnxLxfxL
xir
xeri
),cos()(),(
),cos()(),()(
Tracé de chemins
),())cos(
()cos()()(
)cos()()(
)cos()()()(
2yxV
r
dAxyLf
dxyLf
dxLfxL
source
x
x
Area xy
yer
er
erdirect
dAy
d
xd
dA
ry y
cos2
Tracé de chemins
Conclusion – Évaluer différemment l'éclairage direct et indirect
x
r
Source
r ff coscos
Algorithme
?L ?L
Algorithme
?
0
r
e
L
L
?
0
r
e
L
L
Algorithme
?
?
0
i
d
e
L
L
L
?
?
0
i
d
e
L
L
L
Algorithme
?L ?L
?
345.2
0
i
d
e
L
L
L
?
345.2
0
i
d
e
L
L
L
Algorithme
Algorithme
Comparaison
Sans calcul d'éclairage direct
16 rayons/pixel
Avec calcul d'éclairage direct
Comparaison
1 rayon/pixel
4 rayons/pixel
16 rayons/pixel
256 rayons/pixel
Limitations
Chemins tracés en sens inverse de la lumière
Ne prends pas bien en compte tous les effets
Bruit sur les caustiques
Limitations
Tracé de chemins : 1000 chemins par pixel
Tracé de chemins lumineux
Tracer des chemins des sources lumineuse plutôt que de l’œil
Permet de bien prendre en compte les caustiques et l’éclairage indirect
Mais pas les réflexions!!!
Tracé de chemins lumineux
Tracé de chemins bidirectionnels
Trace un chemin des sources lumineuses et un chemin de l’œil
Connecte les chemins à chaque sommets
Très coûteux mais prend en compte quasiment tous les effets
Tracé de chemins bidirectionnels
Tracé de chemins bidirectionnels
Tracé de chemins bidirectionnels Tracé de chemins classique
2L,1E1L,2E
1L,3E 3L,1E
1L,4E 4L,1E
Carte de photons
Algorithme fondé sur l’estimation de densité
Approche similaire au tracé de chemins bidirectionnel– « cache » des chemins lumineux
Estimation de densité par noyau
Méthode statistique
Ensemble de données issues d’un processus aléatoire
Estimer la densité de probabilité de ce processus
Estimation de densité par noyau
Relation entre densité de probabilité et éclairement– par définition :
– Exprimé par rapport au flux :
d.cosLE i
dA
dEdAdcosLd i
Estimation de densité par noyau
N photons d’énergie lancé dans la scène Le flux s incident sur une surface s’exprime
Probabilité qu’un photon Pi heurte une surface A
s
N
iis N
s
1
N
NAP s)(
Estimation de densité par noyau
La densité de probabilité des photons est proportionnelle à l’éclairement
AN
ANN
ANN
A
APppdf
sss
)()(
ENAN
ppdf s
11)(
Estimation de densité par noyau
Ensemble de n données observées
Estimation de densité par noyau
La densité est estimée par la moyenne de n fonctions noyaux centrées sur chaque donnée observée
Fonction noyau K unitaire, symétrique et à support compact
1
1 1ˆ( )n
id
i
x Xf x K
n h h
Estimation de densité par noyau
La densité est estimée par la moyenne de n fonctions noyaux centrées sur chaque donnée observée
1
1ˆ( )n
h ii
f x K x Xn
Fonction noyau K unitaire, symétrique et à support compact
Estimation de densité par noyau
Le paramètre de lissage h contrôle le compromis biais/variance
1
1ˆ( )n
h ii
f x K x Xn
2ˆ ( ) ( ) 0.5 ² ( ) "( ) ( ²)Ef x f x h K f x o h
1 1ˆ ( ) ( ) ( ) ( ) ( )Vf x nh R K f x o nh
Estimation de densité par noyau
Le paramètre de lissage h contrôle le compromis biais/variance
1
1ˆ( )n
h ii
f x K x Xn
2ˆ ( ) ( ) 0.5 ² ( ) "( ) ( ²)Ef x f x h K f x o h
1 1ˆ ( ) ( ) ( ) ( ) ( )Vf x nh R K f x o nh
Biais
Variance
Application à l’éclairage global
Lancer de photons Photons
– Position– Énergie
Processus aléatoire = lancer de photons
Données observées = photons
1 1,X
2 2,X
3 3,X
Estimation de l’éclairement
Densité des photons proportionnelle à l’éclairement incident
Éclairement estimé en un point– Approche scène : estimé par sommet ou par texel– Approche image : estimé par pixel
1
ˆ ( ) ( )n
i h ii
E x K x X
Mise en oeuvre
Jensen (96)
Visualisation directe de la carte de photons (6 min)
Mise en oeuvre
Walter (98)
Éclairage global par estimation de densité linéaire: 8h
Approche classique
• La fonction noyau est à support local et symétrique : disque en 2D
• Localiser les k photons qui sont à une distance h du point d’estimation
1
ˆ ( )k
i h ii
E x K x X
Approche duale
• L’éclairement est estimé en un grand nombre de points
• Pour chaque photon, localiser les points d’estimation à la distance h, et leur ajouter la contribution du photon
( ) ( )i i h iC x K x X
Approche duale en pratique
Par texture– Estimation réalisée dans l’espace texture très
efficace– Peu évident à généraliser
Par maillage triangulaire connecté– Plus général– Plus coûteux
Performance
Résultats équivalents entre approche duale et classique
Photons accédés linéairement– Permet de gérer plus facilement ce grand volume
de donnés
Biais sur les bords
Fuite d’énergie sur les bords des surfaces
Biais sur les bords
Estimation de densité évalue la fonction à zéro en dehors de la surface
Biais vers zéro sur les bords
Corriger le biais sur les bords
Méthode de réflexion– Réfléchir les données sur les bords
Utilisation de noyaux frontières– Noyaux qui s’adaptent au bord (ne sont plus
symétriques)– Calculs complexes
Triangles fantômes
Étendre la surface pour rajouter de l’information
Triangles fantômes
Surfaces étendues sur leurs bords– Trouver le contour– Déplacer le contour– Trianguler la bande formée par les deux contours
Déplacement proportionnel au paramètre de lissage
Triangles fantômes
Lancer de photons modifié pour prendre en compte les triangles fantômes
Un photon n’est pas arrêté par un triangle fantôme mais un photon est ajouté
Triangles fantômes
Réduit le biais sur les bords – Nécessite des calculs géométriques
Augmente la complexité géométrique– Dépend du paramètre de lissage => Dépend du
nombre de photons
Carte de Photons
100000 photons, 50 photons pour l’estimateur
Carte de Photons
500000 photons, 500 photons pour l’estimateur
Carte de Photons
Photons stockés dans un Kd-Tree balancé pour accélérer le calcul des N plus proches voisins
Photons séparés en deux groupes : caustiques et globales
Limité par la mémoire