MOS8.5 - Centrale Lyon

TP5 - éclairage indirect






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


Une gallerie de l'atrium de Sponza, cf scenes en ligne.


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 ?