A series about building a raytracer for curved spacetimes: how photon paths are governed by the geodesic equation, how Christoffel symbols and parallel transport make “straight lines” work in arbitrary coordinates, and how to set up a camera with tetrads to render black holes like Schwarzschild and Kerr.

The implementation described in the series is gr_raytracer.

  1. How to Render a Black Hole: Raytracing in Curved Spacetime
  2. Christoffel Symbols and Parallel Transport: The Geodesic Equation in Polar Coordinates
  3. Tetrads and Null Geodesic Initial Conditions: Setting Up a Camera in Curved Spacetime