Rendering

As part of my 3D Graphics and Rendering course at the University of Southern California, I built a renderer from the ground up in C++, working through the entire rendering pipeline that modern game engines utilize.

 
 
website_5.png

Rasterizing

Techniques incorporated include LEE, edge pixel exclusion, and hidden surface removal using the Z-buffer. Necessary transformations of vertex data from model space to screen space was also performed. Additionally, object transformations such as scaling, rotating, and translating are supported.

 
website_6.png

Shading

The renderer supports multiple lights, with ambient, diffuse, and specular lighting. Shading methods supported include flat, Phong and Gouraud shading.

 
website_7.png
 

Texturing

UV texture maps with appropriate transformations and bilinear interpolation, procedural texturing, bump mapping and environment mapping supported.

website_8.png

Post-Processing

Multi-sampling anti-aliasing is incorporated in the current renderer. Additionally, as part of a group project, my teammates Prateek Marathe, Handa Zhang, and I added a screen-space depth of field implementation to the current renderer with dynamic bokeh generation utilizing ray tracing. (Paper)