Computer Graphics

Moteur de rendu OpenGL 3.3 Core — C++ / GLSL — ESIEE Paris, E4FI (2026)


Computer Graphics background
📌 Description

Projet réalisé en OpenGL 3.3 Core Profile (GLSL 330) par AUBRY Mathias et TOUSSAINT Nolan. Il s'agit d'un moteur de rendu 3D temps réel mettant en œuvre un pipeline complet : chargement de modèles, éclairage direct et indirect, rendu hors écran et post-traitements, avec une interface de contrôle en temps réel.

Scène du projet Computer Graphics

Scène du projet

🖼️ Affichage
  • Chargement de modèles 3D : quatre objets affichés simultanément — Kirby, Miles Morales et Gamma chargés depuis des fichiers .obj via TinyObjLoader (matériaux .mtl et textures via stb_image), et le Dragon chargé depuis un tableau de données brutes.
  • Illumination directe (Phong / Blinn-Phong) : composantes diffuse (Lambert) et spéculaire (Phong et Blinn-Phong) combinées aux textures et matériaux OBJ.
  • Illumination indirecte : lumière ambiante hémisphérique (interpolation sol/ciel selon la normale) et approximation de Fresnel-Schlick, avec des presets de matériau (or, eau, argent, bronze).
  • Rendu hors écran (FBO) : rendu principal dans un Framebuffer Object, recopié dans le backbuffer via un quad plein écran pour permettre les post-traitements ; correction gamma via GL_FRAMEBUFFER_SRGB.
🧭 Navigation
  • Placement des objets : chaque modèle possède sa propre matrice monde (Translation × Rotation × Scale), ajustable en temps réel.
  • UBO Caméra : matrices de vue et de projection regroupées dans un Uniform Buffer Object partagé entre le shader principal et celui de la skybox.
  • Caméra orbitale : orbite en coordonnées sphériques autour de l'origine — clic gauche + glisser pour tourner, molette pour zoomer, touche R pour réinitialiser la vue.
⚙️ Options

8 post-traitements sélectionnables via ImGui (appliqués en plein écran sur la texture du FBO) : aucun (passthrough), inversion des couleurs, noir & blanc, flou (box blur 3×3), sépia, détection de contours (noyau de convolution), aberration chromatique, pixellisation.

Skybox cubemap à 6 faces (PNG), partageant l'UBO caméra et dessinée en dernier avec GL_LEQUAL.

Interface ImGui pour ajuster en temps réel les matériaux et textures de chaque objet, leur position et échelle, les paramètres de la caméra, les effets de post-traitement et le preset de réflectivité Fresnel.

🛠 Dépendances
🎮 Contrôles
  • Orbiter la caméra : Clic gauche + glisser
  • Zoom : Molette souris
  • Réinitialiser la caméra : Touche R
  • Quitter : Touche Échap
👥 Équipe
  • AUBRY Mathias
  • TOUSSAINT Nolan
📜 Licence & Crédits

Projet réalisé dans un cadre académique (ESIEE Paris, E4FI) et n'est pas destiné à une diffusion commerciale. Les bibliothèques tierces (TinyObjLoader, stb_image, Dear ImGui) sont utilisées sous leurs licences respectives.

Retrouvez mes liens GitHub et LinkedIn ainsi que mes projets dans le section ci-dessous

Unsplashed background img 3