A render with parallel rays going into three Luneburg lenses with different profiles then into three circles with different indices of refraction.

2D Ray Tracing in Python with Continuous Refraction

This was the final project for a Computational Optics seminar completed in collaboration with Claire Paré. Made in a jupyter notebook with numpy and matplotlib, the first aim of this project was to create a simplified version of this 2D ray-optics simulator. The initial goal was to show the paths of light rays through transparent spheres with various indices of refraction and accurately model Fresnel effects to showcase how the amount of reflected and refracted light depends on the index of refraction and incoming ray angle....

June 7, 2023 · 2 min

Ray Tracing Realistic Cameras

This project was part of an independent study where I, along with a few other students, were extending a pre-existing ray tracer made by a PhD student, Kelly Jiang. What follows is the report I submitted for the project that runs through the different camera systems I implemented with a brief explainer and example results of each. Introduction Ray tracing has the unique advantage of easily simulating many different types of cameras....

June 7, 2023 · 14 min
The result of ray tracing the 'Complex' scene. This scene showcases all the aspects of this ray tracer with several shapes that have been scaled, rotated, and translated to various positions,  different types of materials including a transparent glass sphere, recursive reflections, and soft shadows from multiple light sources.

Ray Tracing With WebGL

This was the second project I completed for my intermediate graphics class and my introduction to ray tracing. The goal of this project was to create a simple ray tracer with implicitly defined shapes such as spheres, cubes, and cylinders with various types of materials that are illuminated using the Phong reflection model. The ray tracer also features recursive reflections, soft shadows, transparency, and shape tranformations such translation, rotation, and scaling along any given axis....

March 13, 2023 · 2 min
From left to right: cloth simulation, a 'fire' simulation, boids, a tornado.

Particle Systems With WebGL

The first of two projects completed for my intermediate computer graphics class. The goal of this project was to simulate and render multiple different kinds of particle systems simultaneously in a navigable 3D environment. The project consists of a cloth simulation, a Reeve’s particle fire, a boids simulation, and a position-dependent force vector field tornado. Almost all input parameters for the different particle systems are adjustable by the user allowing them to play with different combinations of settings and see how they effect the simulations....

February 14, 2023 · 2 min

Lighting and Materials in WebGL

The goal of this project was to experiment with different lighting styles and materials by hand-coding shaders that implement different lighting calculation techniques with adjustable material properties. The scene consists of a number of different objects. In the foreground are a hand-coded cube and sphere along with a teapot and bunny which all slowly rotate. In the background are a series of animated connected assemblies featuring: a set of square pyramids rotating about each other and a rotating together along the red track, a recursively drawn tree, and a “wagging” tail....

June 7, 2022 · 1 min