Intermediate Graphics & Animation
(January - May 2020)
From January to May 2020, I took GPR-300: Intermediate Graphics & Animation Programming, which was a deep dive into both the CPU and GPU sides of graphics programming utilizing animal3D, a graphics framework that Professor Daniel Buckstein created. Throughout the course's duration, I and my teammate Cameron Schneider learned how to implement various shading algorithms and expanded upon the rendering pipeline provided by animal3D.
In addition to shading algorithms (such as Phong, Lambert, Cel, and Gooch), post-processing effects (Bloom), and pipeline techniques (framebuffers and deferred lighting), we were also asked to create projects exploring some area of graphics that we were interested in. For our midterm, Cameron and I decided to implement both screen-space ambient occlusion and a crosshatch/pencil shader. The gallery below includes our midterm presentation as well as a few screenshots.
I was responsible for the majority of the C code for the crosshatch pipeline as well as the actual crosshatch shader. I also created the additional framebuffers that were required for the multiple SSAO passes and added onto the text-based UI so it was easier to tell what was going on. Cameron implemented the SSAO shader and the C code for its rendering pipeline, including generating any uniform variables that were required. He also found a way to pack the six crosshatch textures into only two images, which saves a lot of space both on the disk and in RAM as fewer images need to be passed to the GPU.