Raytracer
Un ray tracer sur CPU écrit en C++23, en équipe et en deux semaines, dont j'ai porté l'essentiel du développement : il simule les rebonds de la lumière dans une scène 3D décrite en JSON, et rend une image en quelques secondes.

Contexte
Premier projet de deuxième année du Master CTO & Tech Lead de HETIC (2025-2026), mené en équipe sur deux semaines ; j'en ai porté l'essentiel du développement. Le sujet imagine un studio de cinéma qui a besoin d'un nouveau moteur de rendu, écrit en C++ à partir des principes physiques de la lumière.
Problème
Traduire des modèles mathématiques en logiciel : trouver où chaque rayon touche la scène, calculer l'éclairage et les reflets sur plusieurs rebonds, et garder un rendu rapide, car un film demande des centaines de milliers d'images.
Solution et architecture
Chaque pixel lance un rayon depuis la caméra. Pour une sphère, le point d'impact est la plus petite solution positive d'une équation du second degré ; la normale et le matériau donnent ensuite la couleur, et le calcul se répète à chaque rebond. Un arbre BSP partitionne l'espace pour ne tester que les objets qu'un rayon peut toucher. Le code est découpé en modules (mathématiques, géométrie, matériaux, rendu), et toute la scène, de la caméra aux matériaux, se décrit dans un fichier JSON converti en objets C++ par un chargeur dédié.
Stack
Résultats
- Rendu en quelques secondes après optimisation, une vingtaine au plus selon la résolution.
- Images en 4K et en 8K, avec un nombre de rebonds réglable.
- Une sphère métallique qui reflète son environnement, comme l'exigeait le sujet.
- Trois matériaux : diffus (loi de Lambert), métal au flou réglable, et physique, piloté par la métallicité et la rugosité.
- Scène entièrement paramétrable en JSON : résolution, échantillons par pixel, nombre de rebonds, caméra, lumières et objets.