Académique / InfographieProjet académique2024–2025
Rendu 3D OpenGL
Moteur de rendu 3D en C++ et OpenGL intégrant chargement OBJ/MTL, éclairage Phong, environnement cubemap, rendu HDR et tone mapping.

Scène OpenGL montrant un cube texturé, un tore et un modèle d’avion dans un environnement cubemap enneigé.
Technologies
- C++
- OpenGL 3.3
- GLSL
- GLFW
- GLEW
- TinyOBJLoader
- OBJ / MTL
- HDR FBO
- Cubemap
Ce que j’ai développé
- Chargement OBJ et MTL
- Rendu VAO / VBO / IBO
- Textures diffuses en sRGB
- Éclairage Phong
- Ambiante hémisphérique
- Fresnel-Schlick
- Éclairage de contour et arrière
- Environment mapping et skybox cubemap
- UBO ViewProj et caméra orbitale
- Framebuffer HDR GL_RGBA16F
- Tone mapping Reinhard et correction gamma
Contexte
Projet académique en C++ construit autour d’OpenGL 3.3 Core Profile et d’une scène 3D navigable.
Problème
Le moteur doit charger la géométrie OBJ et les matériaux MTL, conserver un flux d’éclairage linéaire, rendre un environnement puis convertir la sortie HDR pour l’affichage.
Implémentation
TinyOBJLoader lit les ressources OBJ et MTL avant le transfert de la géométrie vers des buffers VAO, VBO et IBO. Les textures diffuses, les coefficients de matériaux et une caméra orbitale alimentent le pipeline de rendu.
Les shaders combinent éclairage Phong, contribution ambiante hémisphérique, Fresnel-Schlick, éclairage de contour et arrière, environment mapping et skybox cubemap.
Architecture technique
Les matrices de vue et de projection sont partagées via un UBO ViewProj. La passe 3D dessine dans un framebuffer GL_RGBA16F avant une passe de post-traitement plein écran.
Décisions d’ingénierie
Les textures de couleur diffuse utilisent des formats sRGB afin que les calculs des shaders restent en espace linéaire. Le tone mapping Reinhard et la correction gamma sont appliqués après le rendu HDR.
Difficultés
Le pipeline de couleur doit conserver les calculs d’éclairage en espace linéaire alors que les textures arrivent en sRGB et que la sortie finale revient vers l’espace d’affichage. L’environment mapping et le post-traitement demandent aussi une gestion claire des unités de texture et des passes de rendu.
Ce que j’ai appris
Le projet relie le chargement des ressources, l’organisation des buffers GPU, les shaders d’éclairage, l’état de la caméra et le post-traitement dans un même pipeline de rendu inspectable.
Preuve visuelle
