Une autre différence notable est que les ombres des objets ne seront plus noires.
L'algorithme de rendu est classique : cf. CM7&8 :
pour chaque pixel (x, y) de l'image
générer le rayon (o, d)
trouver le point p visible le long du rayon
calculer l'éclairage direct au point p (et
réfléchi vers l'origine du rayon), en utilisant
éclairage direct(p, o)
calculer l'éclairage indirect au point p (et
réfléchi vers l'origine du rayon), en utilisant
éclairage indirect(p, o)
calculer l'énergie totale réfléchie
vers l'origine du rayon (éclairage direct + éclairage
indirect)
stocker la couleur correspondante dans le pixel (x, y) de l'image
éclairage direct ( point p, point o )
pour chaque source de lumière de la scène
pour chaque point r à la surface de la source
choisir le point r
générer le rayon (p, r)
calculer l'énergie
incidente au point p et déterminer la visibilité de p et r
calculer et
accumuler l'énergie émise par le point r vers le point p,
puis réfléchie par le point p vers le point o
éclairage indirect ( point p, point o )
pour chaque direction d de l'hemisphere centrée sur
le point p et orientée le long de la normale du point p
choisir la direction d
génerer le rayon (p, d)
trouver le point q visible le long du rayon
calculer l'énergie incidente au point
q et réfléchie vers p, en utilisant éclairage
direct(q, p)
calculer et accumuler l'énergie
émise par le point q vers le point p, puis
réfléchie par le point p vers le point o
Lorsque la hiérachie de sphères
englobantes sera construite, il faudra l'utiliser pour
accélérer les calculs d'intersections de
l'éclairage indirect.
Q6. Quels gains apporte la hiérarchie de sphères ?
Q7. Quels gains apporte l'intersection approximative
lors du parcours de la hiérarchie ? comment déterminer
l'angle solide associé à chaque rayon dans la fonction
éclairage indirect( ) ?
intuition : quel est l'angle
solide dans le cas ou la pdf est constante (rappel : l'angle solide
d'une hemisphère est 2pi stéradians),
ou encore : si on utilisait un
découpage régulier de l'hemisphère, quel serait
l'angle solide de chaque rayon ?
Q8. Modifiez éclairage direct pour n'utiliser qu'un seul rayon (cf. CM8). que constatez-vous ?
Q9. Modifiez la fonction de rendu pour
générer plusieurs rayons par pixel, au lieu d'un seul.
que constatez vous ?
remarque : il est
très
fortement conseillé de mettre au point votre programme en
utilisant les variantes les plus simples de chaque étape. par
exemple, commencez par utiliser des densités constantes pour
choisir les points et les directions. une fois cette "première"
version fonctionnelle, modifiez-la pour tester d'autres solutions.
Annexes : maillage triangulé.
télécharger
rt + scènes de test + exemple d'utilisation
documentation