For this assignment I created an array of different particle systems. A screenshot of each system is below as well as a video presentation of all systems with descriptions of each. One of my overarching goals for this assignment was to render the particle systems in a painterly fashion. My main strategy to this end was to use textures I created using ArtRage, a painting application, and dynamically use subsections of the texture for each glyph.
This basically serves as a wrapper around openGL calls, and provides utility classes such as Vectors and Cameras. I still wrote all the shaders for this project as well as all of the particle system code.
I used this software to create all of the textures in this program with the exception of the ground plane.
I used this nice open souce tileable ground texture.
This is a neat little program that creates normal maps from images. I used it on the ground texture to create a nice effect with phong shading.
The most surprising issue that I ran into was a problem I had with the speed of my fragment shader. Going into this I thought I would be able to use large paint themed glyphs, not use as many particles, and have a fast compelling animation. On The contrary I found when using larger particle sizes, especially when the camera had many particles in its viewport the framerate bombed. All that my fragment shader does is a texture lookup, so this surprised me. Instead of fixing the problem I ended up just using smaller particle sizes. I am still curious if there is a good way to fix this, but if I had to guess myself the best way to speed this up would be to clip the particles that are occluded by more forefront particles.
By time machine features I just mean things I would like to implement if I had infinite time.