GLSL Custom Shader and FrameBuffer Pipeline
Project Features Custom C++ Engine / OpenGL / 10 Weeks Development Time
Custom GLSL Vertex and Fragment Shaders
Dynamic Lighting calculated and applied in fragment shader
Supports Global Direct Lights, Local Point Lights, Local Ambient Lights, Global Ambient Light, Local Spotlights, and Global Spotlights
Custom FrameBuffer Objects for screen effects
Supports Normal Maps, Emissives, and Specular Color and Level
Visual debugging utilities for light positions and general graphics debugging
Custom material class for meshes
Project Overview
This was my second project involving 3D rendering. The focus was to learn about and implement custom shader and framebuffer pipelines with a forward renderer. The project features a variety of dynamic lights and avoids conditional statements in the shader whenever possible. I created a material class which provides support for diffuse textures, specular color and level, emissive textures, and normal maps.
The project also provided a good opportunity to add visual debugging tools to my engine code base.
Project Post Mortem
What Went Well
- This project provided first exposure to the GLSL shading language. I learned more about the rendering pipeline with OpenGL.
- This project reinforced many of the concepts I learned in Linear Algebra.
What Went Wrong
- This was my first rendering project and many of the design decisions I made for my rendering engine pipeline were not adequate.
- My material class was often a victim of code bloat
What Was Learned
- Graphics pipelines require well thought out design and research. It is often useful to spend extra time researching which design patterns are common with the game engine system being worked on.