Raytracer
Un moteur de rendu par lancer de rayons modulaire, écrit en C++17. Il génère des images de synthèse en projetant des rayons depuis une caméra virtuelle, en calculant leurs intersections avec des primitives géométriques et en évaluant l’éclairage direct.
Objectif du projet
Le Raytracer transforme une description de scène (fichier JSON) en une image. Pour chaque pixel, le moteur :
- génère un rayon primaire depuis la caméra ;
- cherche l’intersection valide la plus proche parmi la géométrie de la scène ;
- calcule l’ombrage à partir des lumières et de la réponse du matériau ;
- écrit la couleur finale dans le tampon image (exporté en PNG).
Le projet se distingue par une architecture à interfaces et un
système de plugins chargés à l’exécution (.so) pour le rendu et
l’interface graphique, ainsi qu’une interface interactive permettant d’éditer la scène, y
compris les sommets des maillages.
Utilisez la barre de recherche en haut (raccourci /) pour trouver rapidement une option, une classe ou une clé de scène. La documentation existe en français et en anglais (bouton 🌐 EN).
Aperçu des fonctionnalités
10 primitives
Sphère, plan, cube, cylindre, cône, triangle, tore, tanglecube, fractale, maillage .obj.
Lumières & ombres
Lumières ponctuelle et directionnelle, rayons d’ombre pour la visibilité.
Matériaux PHONG / PBR
Couleur, spéculaire, réflectivité, transparence, IOR, métallique, rugosité, textures…
Accélération BVH
Hiérarchie de volumes englobants construite avant le rendu ; BVH local par maillage.
Plugins .so
Renderers et interface chargés dynamiquement via dlopen.
Édition de sommets
Déplacement interactif des sommets d’un triangle ou d’un maillage dans le viewport.
Rendu en cluster
Infrastructure client/serveur pour répartir le rendu par tuiles sur le réseau.
Mode headless
Rendu direct vers un fichier PNG sans interface (-r sortie.png).
Démarrage rapide
# Compilation (produit ./raytracer et les plugins dans ./plugins)
make
# Rendu interactif d'une scène
./raytracer tests/configs/subject.json
# Rendu direct vers un PNG (sans interface)
./raytracer -r sortie.png tests/configs/subject.json
Voir Installation pour les prérequis et Utilisation pour le détail des options et du format de scène.
Organisation de la documentation
| Section | Contenu |
|---|---|
| Installation | Prérequis, dépendances, compilation, dépannage. |
| Utilisation | Ligne de commande, format des fichiers de scène, exemples réels. |
| Architecture | Organisation du code, modules, outils et interactions, pipeline de rendu, cluster. |
| Fonctionnalités | Primitives, lumières, matériaux, ombres, réflexions, BVH, maillages. |
| Interface graphique | Panneaux, composants, fenêtres, gizmos, édition de sommets, raccourcis. |
| Référence | Interfaces, classes principales, types mathématiques. |
| FAQ | Problèmes courants et solutions. |
Cette documentation est générée à partir du code réel du projet (Makefile,
en-têtes, parseur de scène, exemples de tests/configs/) et de la documentation
Markdown du dossier docs/.