Le but de ce projet est de réaliser une application permettant de générer des images en utilisant la technique du lancer de rayons et ses extensions. Cette méthode permet de synthétiser des images d'une grande qualité, en prenant en compte des effets de lumière complexes.
Un affichage en 3D comme celui proposé par OpenGL n'est absolument pas nécessaire pour créer un tel programme. L'un des buts de ce projet est néanmoins de vous persuader de l'utilité d'une telle visualisation pour la mise au point de l'algorithme, et de vous faire réviser certaines notions d'OpenGL acquises dans l'UE PGHP. Ce raytracer sera implémenté en C++.
Pour chacune des différentes séances, je pourrais vous demander de m'envoyer votre code source complet – SANS les binaires – dans une archive (zip ou tar.gz) suivant le format
sire_td{X}_nom_prenom.{ext}. Cette archive devra également contenir le répertoire
data qui inclura les images au format OpenEXR des scènes de test rendues avec votre
raytracer. Vous êtes libre d'ajouter autant de nouvelles scènes que vous le jugez nécessaire pour tester votre implémentation (ou juste pour le plaisir de créer des images inédites).
Vous devrez également m'envoyer un mini-rapport sous la forme de votre choix. Les dates seront indiquées durant les séances . Suivez ces consignes pour le rédiger :
- Structurez votre rapport en suivant la même numérotation que les TD et leurs sections.
- Pour chaque tâche, l'objectif n'est pas de répétez le sujet, mais de me convaincre que vous avez compris ce qui vous est demandé et que votre implémentation est correcte. Pour cela, des images de résultats valent souvent mieux qu'un long discours. Les fichiers OpenEXR n'étant pas directement affichables par un navigateur Web, créez en une version tone-mappée soit avec l'utilitaire de visualisation intégré au raytracer, soit avec un logiciel tierce comme, par exemple, Luminance HDR.
- Décrivez les problèmes et difficultés que vous avez rencontrés durant l'implémentation. Incluez des images de bugs (ou de debug) lorsque vous les jugez pertinentes.
Vous êtes libres – et même encouragés – à consulter d'autres sources d'informations que le cours (livres, articles de recherche, sites web, etc.), mais n'oubliez pas de citer ces références sur votre rapport.
Par contre, lorsqu'il vous devez implémenter une fonctionnalité donnée, je vous demande de ne pas consulter (et recopier) son implémentation depuis le code source d'un autre moteur de rendu. La seule exception à cette règle est le livre PBRT – référencé sur la page du cours – qui contient des éléments d'implémentation qui peuvent vous servir de référence.
Ces TD sont à réaliser individuellement. Vous êtes évidemment libres de discuter entre-vous et d'échanger des conseils, il vous est formellement interdit de partager du code source ou des images de résultat.
Ce projet est basé sur celui de
Pierre Bénard.