Repository navigation
OpenGL Graphics Engine
This project is a C++ graphics engine built with OpenGL 4.3. It showcases advanced rendering techniques and interactive UI using ImGui.
✨ Main Features
🧱 Entity System
- Model loading via Assimp.
- Dynamic entity positioning and transformation (
glm::translate,glm::rotate, etc.). - Entity types:
Deferred_RenderingRelief_MappingEnvironment_Map
- Animation support (e.g., rotating Pikachu and relief-mapped cubes).
🔦 Lighting System
- Supports:
- Directional Lights
- Point Lights
- Real-time light creation and deletion via UI.
- Up to 400 dynamic lights per rendering mode.
- Customizable color, direction, position, and intensity.
🎮 Camera Controls
- First-person movement (
W,A,S,D,Q,E). - Mouse-driven rotation.
- "Gravitational Camera" mode (key
F) always looks at the origin. - Adjustable speed and sensitivity via UI.
🖼️ Rendering Modes
1. Deferred Rendering
- G-Buffer setup:
- Albedo
- Normals
- Position
- View Direction
- Depth
- Buffer selection viewable via UI.
- Deferred lighting with many dynamic lights.
2. Relief Mapping
- Realistic implementation using normal and height maps.
- Toggleable view modes:
MainNormalHeight
- Adjustable relief intensity (
uHeightScale) via slider.
3. Environment Mapping
- Reflection and refraction via cube maps.
- Three preloaded cube maps:
Outdoor,House,Studio. - Toggle between
ReflectionandRefractionmodes. - Adjustable diffuse ambient intensity (
diffus_amb).
🧰 Additional Features
- Switch between
Forward RenderingandDeferred Rendering. - Skybox rendering with proper depth behavior.
- Live shader reloading when GLSL files are edited.
- Real-time entity and light inspector.
- Display available OpenGL extensions.
- Real-time FPS monitor.
🧠 Included Shaders
| Shader File | Description |
|---|---|
FORWARD.glsl |
Forward rendering shader |
RENDER_GEOMETRY.glsl |
Geometry pass (deferred) |
Render_Quad.glsl |
Final composition for G-Buffers |
Relief_Mapping.glsl |
Relief mapping with view modes |
Reflection_environment.glsl |
Environment mapping (reflections/refractions) |
CubeMap.glsl |
Skybox rendering |






