
The Project
For my final year OpenGL module, I constructed a 3D scene included an animated theme park ride. This ride required many concepts of OpenGL to be understood and implemented from the ground up, including:
The maths required to preform vertex and matrix calculations, which we implemented in our own maths library
Relationships between vertexes and polygons, and how to format this data to be sent to the shaders
Constructing vertex and fragment shaders in GLSL, taking information about models, lighting and textures and combining them using established lighting algorithms
Creating data structures to manage objects in the scene, including the ability to parent objects and have translations transfer from parent through to child objects
Generating primitive shapes algorithmically, and working with UI coordinates to correctly texture these objects
Model the complex geometry of the ride using 3DS Max, and loading that object into the scene correctly
Extended Features
Along with the given requirements of this assignment, we were also given the option to extend the base functionality of the program, by researching and adding other OpenGL features to the scene. On top of the other features, I also implemented:
Batch rendering of similar objects, such as the primitive tree meshes, so that the GPU could render these objects more efficiently
Particle systems using Batch rendering and billboarding, and applying physics to the particles to allow for very basic simulations of smoke and fire
Object transparency, For use with the smoke effects, where a secondary render with the transparent objects accounted for would be preformed

