Théodore Billotte
← Tous les projets

2024 · Projet académique de rendu 3DTerminé

Raytracer

Un moteur de rendu par lancer de rayons, extensible par plugins.

Développeur (projet académique Epitech, 2e année)

Raytracer

Un moteur de rendu 3D écrit en C++ qui produit des images par lancer de rayons, construit autour d’une architecture à plugins chargés à l’exécution, de sorte que le moteur peut être étendu sans toucher à son cœur.

Scène complexe rendue par le moteur Une scène multi-objets avec réflexions, ombres et éclairage coloré, rendue en PPM.

Aperçu

Le moteur lance des rayons depuis une caméra virtuelle dans la scène, trouve l’intersection la plus proche pour chaque pixel et l’ombre à partir des lumières de la scène. Tout ce qui peut varier d’une scène à l’autre est chargé sous forme de plugin :

  • Primitives : sphère, plan, cylindre, cône
  • Sources de lumière : ponctuelle, directionnelle, ambiante
  • Matériaux et filtres de post-traitement : sépia, noir & blanc, négatif

Comme ce sont des plugins, on peut ajouter de nouvelles formes, lumières ou effets sans recompiler le cœur du moteur.

Points forts

  • Cœur à plugins : primitives, lumières, matériaux et filtres chargés à l’exécution.
  • Scènes en texte clair : les scènes sont décrites dans des fichiers .cfg lisibles.
  • Rendu multithread : les pixels sont rendus en parallèle.
  • Plusieurs sorties d’affichage : un aperçu SFML en direct, une sortie fichier PPM, ou un rendu ASCII dans le terminal.

Une présentation de l’architecture et des résultats est également disponible sous forme de diaporama, intégré plus bas sur la page.

Mon rôle

Développeur sur un projet académique Epitech à deux (2ᵉ année). Conception du moteur C++, système de chargement de plugins et pipeline de rendu.

Techno

C++ pour le moteur et les plugins, SFML pour la fenêtre d’aperçu.

Équipe

Connexions

Projets

Formation