FreezeRay

September 2024 — May 2025 Personal project
  • C++
  • Raytracing
  • Physically based rendering

FreezeRay is a physically based offline raytracer, built as my university capstone project. It is designed to make it easy to compare light transport integrators. It supports path tracing, bidirectional path tracing (with multiple importance sampling), and Metropolis Light Transport. Built on a flexible C++ architecture, it implements multiple physically based BSDFs, material models, and lights.

Highlights

  • Path tracing and bidirectional path tracing with multiple importance sampling; Metropolis Light Transport.
  • Optimized implementation using multithreading, AVX2 vectorized ray-triangle intersections, KD-tree acceleration, and hierarchical cache-friendly textures.
  • Multiple physically based BSDFs such as microfacet and Lambertian.

Media

A render from FreezeRay showing a scene with multiple lights.
Multiple mesh lights illuminating a scene.
A render from FreezeRay showing a complex indoor scene.
A difficult scene rendered with Metropolis Light Transport.
A render from FreezeRay showing an outdoor scene.
The popular "San Miguel" scene.