Release: 3rd May 2013
Genre: 3D Graphical Demonstration
Made with: Direct3D 11 (C++)
Compatible with: Windows
This was my Further Programming of 3D Applications assignment, the follow up to my Introduction to Programming 3D Applications assignment. The “Further” bit mainly specified the more difficult and complex aspects of 3D graphics programming, such as Programmable Shaders, Texture Mapping, Windows Programming ect. Basically, instead of the old OpenGL method of enabling what you want and having most of the features created for you, this time we had to build the 3D graphical features ourselves through setting up viewports and windows, calculating matrices and compiling our own hand-written shaders, among other things.
We were given a list of things to include as a minimum, which was practically the same as what were expected to include in our first year if we wanted to do really well, such as building simple shapes, adding texturing and adding lighting. The main marks were what we added beyond the minimum.
For which, I wrote my own OBJ model loader, partially based on my original 3D model loader from first year, but modified to handle verticies, normals and texture coordinates, as well as loading in textures directly from the file. I programmed my 3D game objects to use instancing, so multiple objects can be created and rendered from one set of model data. As an additional graphics feature, I built a shader to render bump mapping from generated UV maps (which you can see from the spheres).
While I was hoping to do more for this assignment than the actual outcome (I wanted to make a simple game or an interactive world like I did in my first year), I was especially happy with being able to pull off the advanced features. Bump mapping was the main one I focused on, and while it took a few days, seeing it fully functional for the first time felt like one of the best achievements I made in graphics programming.