Overview
Developed HeapOverFlow, a custom 3D rendering engine built using C++ and OpenGL, focused on implementing foundational and advanced graphics techniques, including lighting, shading, and geometry processing.
Key Features
1. Toon / Cell Shading
I implemented a Toon Shading technique to give 3D models a stylized, cartoon-like appearance. This involved modifying the standard Lambert lighting model to create discrete shading bands rather than smooth gradients.
2. Fog
I implemented a fog effect to simulate atmospheric perspective and enhance depth perception in 3D environments. I experimented with linear, exponential, and exponential squared fog models, ultimately selecting the exponential model for its smooth gradient and performance benefits. The fog was applied in the fragment shader, blending seamlessly with the existing lighting and shading models.
3. Grass Generation with Tessellation and Geometry Shaders
I developed a grass rendering system using tessellation and geometry shaders to generate and render large fields of grass efficiently. The tessellation shader dynamically subdivided the terrain based on the camera distance, while the geometry shader generated individual grass blades. This approach allowed for high levels of detail close to the camera and reduced complexity in the distance, maintaining high performance.
4. Shadow Mapping
I implemented shadow mapping to provide dynamic, real-time shadows in 3D scenes. This involved rendering the scene from the light’s perspective to create a depth map, which was then used to determine shadowed areas during the final rendering pass. I employed a bias adjustment technique to address common issues like shadow acne and aliasing.
Challenges
Optimizing the performance of the engine to handle complex scenes with dynamic elements like grass and shadows while maintaining real-time rendering speeds.
Results
HeapOverFlow delivers high-quality visual effects and efficient rendering capabilities, making it a versatile engine for both stylized and realistic 3D environments. The successful integration of advanced shading and geometry processing techniques demonstrates the engine’s robustness in handling a variety of graphics challenges.