Partie 1 : un rebond
exercice : reprenez le cours. Comment formuler un rebond
indirect ? ie les objets visibles autour d'un point p
réfléchissent aussi de la lumière en direction du point p...
Ecrivez la substitution dans l'équation de rendu.
exercice : écrivez l'estimateur Monte Carlo associé et
calculez une première image.
exercice : séparez le domaine d'intégration en 2 : une
partie pour les sources de lumière qui éclairent directement le
point p et une autre pour les objets qui peuvent réfléchir de la
lumière vers p.
exercice : reformulez l'éclairage direct sur les aires
des sources au lieu d'utiliser l'intégration sur les directions.
écrivez l'estimateur Monte Carlo associé et vérifiez que cette
transformation réduit considérablement la variance du résultat.
exercice : utilisez "multiple importance sampling" pour
réduire la variance dans tous les cas. l'estimateur
"multi-sample" est bien adapté pour intégrer l'éclairage direct.
Vous pouvez remplacer le petit cube de la Cornell Box par une
sphère réfléchissante pour vérifier... utilisez Blender pour
modifier la scène.
Partie 2 : plusieurs rebonds
cette version modifiée de la Cornell Box
se trouve dans la même archive que la version classique.
cf
scenes en
ligne.
exercice : substituez un terme supplémentaire dans
l'équation de rendu.
exercice : et pour les substitutions suivantes ?
comment formuler tout ça ?
exercice : écrivez l'estimateur et vérifiez que vous
arrivez à calculer une image cohérente.
exercice : et avec des vraies matières ? qu'est ce
qui change ? Faut-il modifier les estimateurs ? utilisez une
description de matière avec les 2 parties : diffuse et
spéculaire.
pour les curieux : combiner 2 stratégies
d'échantillonnage pour évaluer l'éclairage direct comme
proposé dans la partie 1 nécessite de calculer les
intersections avec 2 rayons. Prolonger le chemin demande
aussi de calculer les intersections avec un rayon
supplémentaire, soit 3 rayons au total. Pour le direct, on
génère une direction que l'on rejette si un objet est
visible, pour prolonger le chemin, on génère une direction
que l'on rejette si une source est visible... Comment se
limiter à 2 rayons ? ie on génère une direction que l'on
utilise dans le "bon" estimateur en fonction du type de
l'objet visible dans cette direction (source ou pas).
Comment modifier votre code de calcul ? Que faut-il changer
dans l'estimateur de l'éclairage direct ? Même question pour
l'éclairage indirect ?
Partie 3 : efficacité et réduction de variance
Quelle est la dimension de l'équation de rendu ? Combien de
nombres aléatoires utilisez-vous pour construire un chemin ?
Est-ce cohérent ? Combien d'échantillons par rebond ?
Quelle est la contribution de chaque rebond dans l'image ?
Comment appliquer le principe de réduction de variance dans
ce cas ? Comment construire le bon nombre de chemins pour
chaque rebond ?
question : comment limiter la longueur des chemins sans
biaiser systématiquement le résultat ? Pourrait-on choisir de
prolonger, d'évaluer, ou pas, un rebond ?
indication : par exemple, on intégre \( f \), une
fonction complexe et couteuse à évaluer. Pour réduire le temps
d'exécution du programme, on ne souhaite l'évaluer complètement
qu'une fois sur deux... Comment construire un estimateur de
l'espérance de \( f \) dans ces conditions ? ie Obtenir la même
espérance (même si la variance augmente) que si on évaluait la
fonction systématiquement ?
On peut construire une variable aléatoire discrète avec 2 états
/ 2 valeurs. Dans un cas, avec une fréquence q, on n'évalue pas
la fonction \( f \), et dans l'autre cas, avec une fréquence
(1-q), on évalue complètement la fonction. Quelle est
l'espérance de cette variable : \( rr = (1-q) \times f + q
\times 0 \) ? Comment reformuler \( rr \) pour que son
espérance soit égale à l'espérance de \( f \) ?
question : comment utiliser (la version corrigée... de)
rr pour décider d'évaluer ou pas un deuxième rebond ? un
troisième ?
rappel : pour estimer la couleur d'un pixel de l'image,
on somme plusieurs fonctions, chaque fonction correspond à la
simulation de un ou plusieurs rebonds de lumière sur la surface
des objets de la scène. Cette somme est infinie... la
construction précédente permet de tronquer l'évaluation de cette
somme sans introduire de biais systématique, mais en
introduisant de la variance dans l'estimateur. Comment choisir q
pour calculer en moyenne 3 à 5 rebonds / termes de cette somme ?
Pourrait-on estimer ce nombre moyen de rebonds à partir de
l'albedo moyen des matières des objets de la scène ? Comment
choisir q pour arréter un chemin lorsqu'il ne peut plus faire de
contribution importante au pixel ? Peut-on borner cette
contribution ?