OpenGL / OpenCL Graphics Engine
February 16, 2015
This is an application I developed in OpenGL over a couple semester breaks (started in December 2013). Initially, I wanted to make a sandbox kind of app, however as I followed the tutorials on http://ogldev.atspace.co.uk/ and attended a number of presentations about modern graphics, I became more interested in the actual development of the engines, rather than just making something fun.
I modelled the Super Smash Bros. Melee stage Fountain of Dreams in Maya, UV’ed and textured it in 2 weeks, and exported everything as OBJs for my engine. This project can best be described as 3 stages; note that while I worked away at this over the course of a year, altogether it probably amounts to 9-12 weeks worth of work.
- During my Winter 2013 break, I followed the tutorials for the most part and implemented a texture library that would allow me to import scenes at a later time. This was an important step for me because it addressed inefficiencies in my Tetris Attack project that I had discovered as I neared the end of that venture. Some may call me crazy, but I love pointers in C++; they’re a lightweight tool that won’t accidentally get erased by a garbage collector.
- During Spring 2014, I built my demo scene and implemented shadow mapping. A number of new problems arose, like clipping and depth-buffer issues, but after lots of reading and experimentation, I got some very nice results.
- In the Summer of 2015, instead of introducing particle effects and reflections for the water and fountain, I became interested in the real-time raytracing systems that Pixar has been experimenting with and wanted to learn more about those. So I looked into OpenGL-OpenCL interoperability, and quickly found that while documentation exists, there is hardly any readily available. Much of my time spent here was learning and debugging with hardly anything exciting to show for it, but I managed to get it up and running! It doesn’t run very quickly since it’s an initial implementation, but while I was making it I read a lot of papers on how to improve its performance for both my scene and more complex effects down the road.
For anyone who is interested, the material for this project (OBJs + textures + code) is available for at these links: