CS 148: Intro to Graphics and Imaging

Python Ray Tracing

This assignment focused on building a Python-based ray tracer integrated with Blender. I was tasked with completing key parts of the ray tracing algorithm, including constructing shadow rays, computing diffuse and specular BRDF components, handling recursion for reflection, and implementing Fresnel effects and transmission for transparent materials. The project required me to fill in missing code in Blender’s Python API and utilize advanced rendering techniques like light bouncing and material properties to generate physically accurate images. By debugging and optimizing code, I gained a deeper understanding of ray tracing principles and real-time rendering.

Lighting and Shading

This assignment focused on lighting and shading techniques using Blender’s Cycles rendering engine. My tasks included experimenting with flat and smooth shading for 3D objects, adjusting shader nodes to create realistic materials, and developing custom materials for various objects. I also explored different types of lighting—point, area, spot, and directional—and rendered scenes with natural and environmental lighting using HDRI textures and the Nishita sky model. Through this project, I gained hands-on experience with Blender’s node-based material editor and Cycles’ ray tracing engine to produce physically accurate and visually appealing scenes.