Cours 5 de Raytracing / Path-tracing

2,138 views · Published 21 August 2017 · 1:56:13 · Indexed 7 October 2026

Channel: Nicolas Bonneel · 2017 · Science & Technology

Watch on YouTube

Version accélérée du cours que je donne à Centrale Lyon (séance de 4h, normalement). Cours 5 (sur deux séances) : 
00:00 -- Intersection rayon-plan, rayon-triangle
35:19 -- rayon-boite englobante, gestion des maillages
1:10:11 -- bounding volume hierarchies
1:47:12 -- lissage de Phong. 

Implémentation (durée implémentation: 1 h 15 min).

Erratum 1 : le test d'intersection rayon-boite ne verifie pas si l'intersection est bien devant nous!  On peut donc optimiser un peu en verifiant si l'intersection la plus éloignée (qui vaut std::min(std::min(t_max_x, t_max_y), t_max_z) ) est bien positive.

Erratum 2 : le test d'arrêt de la construction du BVH est erroné est produit un arbre mal équilibré. Utiliser:

 if (pivot < i0 || pivot >= i1-1 || i1==i0+1) return;

 node->fg = new BVH();
 build_bvh(node->fg, i0, pivot+1);

 node->fd = new BVH();
 build_bvh(node->fd, pivot+1, i1);

Cela produit un gros speedup.

Optimisation 1: à 18:21, on peut se rendre compte que la normalisation de la normale n'est pas nécessaire à ce stade. On peut ne normaliser qu'une fois l'intersection avec le triangle trouvée pour s'économiser de nombreuses et coûteuses racines carrées.

More from this channel