← Explorations

Advanced Computer Graphics

Tracing Light

From ray intersections to global illumination: a renderer study in sampling, reflective and transmissive materials, and the paths light takes through a scene.

PROJECT PERIODSpring 2026 · CIS-5610
Tracing Light

This study brings together the ray tracing and path tracing work from CIS-5610, Advanced Computer Graphics at Penn. Rather than separate entries for every assignment, it follows the renderer's development from geometric visibility to material response and indirect illumination.

The course supplied assignment frameworks and test scenes. I implemented the assigned rendering components and added experiments in acceleration, sampling and rough transmission. The images here are outputs from those implementations, not the course's reference renders.

The early C++ renderer covers camera rays, transformed geometry, shadows, recursive reflection and refraction. For scenes containing triangle meshes, I added a bounding-volume hierarchy with surface-area-based splitting and a linearized traversal representation.

A Cornell box rendered by the early path tracer
The first complete path-tracing and sampling stage.
A reflective sphere inside an environment-lit Cornell box
Direct-light estimation with reflective transport.

The GLSL path tracer progressively accumulates samples. Its development includes explicit light sampling, multiple importance sampling, microfacet materials and multi-bounce illumination, with environment maps supplying lighting and background content.

A Cornell box lit by two area lights using multiple importance sampling
A two-light Cornell box rendered with MIS.
A transmissive box in a Cornell scene
Transmission integrated into the sampling pipeline.

Implementing next-event estimation early made the role of light sampling tangible: instead of relying only on random paths to find a light, the integrator explicitly queries one. MIS then combines light and BSDF sampling strategies.

For an additional experiment, I implemented a microfacet transmissive material and built a scene around a frosted, jade-like dodecahedron with a light inside. It sits beside reflective and transmissive objects so their responses can be compared in the same image.

The opening image is one of these experiments. Residual sampling noise is retained as part of the original outputs, rather than presenting them as fully converged beauty renders.

Materials & SSR explores faster approximations to material response. Implicit Modeling & SSS applies ray marching to implicit geometry and thickness-aware lighting.

Built with: C++, Qt, OpenGL and GLSL. Coursework and personal extensions, Spring 2026.