Raytracer C++

Durant ma 1ère année de Master 3D&JV à l'ESGI, j'ai réalisé un moteur de rendu de raytracing en C++ from scratch. Ce moteur est paramétrable, permet de charger différentes scènes, de rendre différentes primitives tel qu'un cube, une sphère, un cylindre, un plan et un cone, et est partiellement optimisé avec l'implémentation d'instructions SIMD (SSE1).

  • Eclairage multiple
  • Shadow casting
  • Profondeur de champs réaliste
  • Texturing
  • Support de double matériaux
  • Simulation du capteur de l'appareil
Un moteur de raytracing 100% "from scratch"

Ce moteur de rendu, a été réalisé entièrement sans librairie mathématiques. De la profondeur de champ au lancé de rayon en passant par l'anti aliasing, tout a été réalisé à la main. Seul la création du fichier png final a été réalisée à l'aide d'OpenCV (pour la structure) et stb-image (pour l'export). Le moteur est entièrement paramétrable et peut charger une scène 3D sous la forme d'un fichier json.

  • LangageC++ 20
  • IDECLion (CMake)
  • PerformancesSIMD SSE1
  • Librairies mathématiquesEntièrement recodée à la main
  • Librairie de renduSTB Image pour la génération du fichier

Sans ombres

Avec ombres

Sans profondeur de champ

Avec profondeur de champ à 1.8

Sans anti-aliasing SSAA

Avec anti-aliasing SSAA