An OpenGL based C++ graphics engine, implements Phong lighting, texture mapping and interactive scene. Supports multi-shader rendering pipeline, cubemap skybox, post-processing effects in framebuffer, and light positioning and object transformation tool system.

Move Light Tool

Transform Tool

Water Scene

Space Scene
OpenGL
GPU Programming
Phong
Lighting Model
VAO/VBO
Buffer Objects
Framebuffer
Post-Processing
Phong shading per-pixel with ambient, diffuse, and specular values computed in fragment shaders. Light position, color and material specular strength can be configured and adjusted with interactive controls.
OpenGL pipeline with Vertex Array Objects (VAOs) and Vertex Buffer Objects (VBOs) to manage efficiently the graphics memory of the GPUs. Optimised draw calls with state management and resource cleanup.
Multi-channel texture support with diffuse and specular map sampling, proper texture unit allocation, and image loading integration for material rendering.
Framebuffer rendering with wave distortion effects and color tinting through fragment shader calculations.
Custom vertex and fragment shader compilation and linking with uniform variable management for dynamic parameter updates and mathematical lighting calculations.
OBJ file format support with vertex data parsing such as positions, normals and texture coordinate. Combines with material loading to make full mesh render pipeline.
Optimizing rendering performance with multiple models and textures
Organized VAO creation and binding to minimize state changes, implemented proper texture unit management, and optimized draw calls to maintain smooth frame rates across different scenes.
Managing complex scene rendering with multiple tool modes
Designed modular scene rendering system supporting different tool modes (Move Light, Transform, Water Scene, Space Scene) with proper state management and resource sharing between modes.
Implementing framebuffer post-processing pipeline
Created framebuffer objects with color and depth attachments, implemented vertex buffer for screen quad rendering, and integrated wave distortion effects with configurable frequency and amplitude parameters.
Learned OpenGL graphics pipeline including vertex array objects, buffer management, and shader programming with GLSL compilation and linking
Gained expertise in Phong lighting model implementation with per-pixel ambient, diffuse, and specular component calculations in fragment shaders
Developed knowledge of texture mapping techniques including multi-channel sampling, proper texture unit binding, and UV coordinate processing
Learned framebuffer operations for post-processing effects including framebuffer object setup and quad rendering for visual effects
Acquired knowledge of 3D mathematics including matrix transformations, vector operations, and lighting equation implementations for realistic rendering
Gained experience with graphics optimization techniques including VAO/VBO state management, draw call efficiency, and GPU memory resource utilization
Add shadow mapping with depth buffer techniques for realistic shadow casting from dynamic light sources
Implement deferred rendering for efficient multi-light scenarios with G-buffer optimization
Add HDR rendering with tone mapping operators and bloom effects for realistic lighting ranges
Explore more projects