Ray Tracing

Ray tracing is a collection of algorithms and techniques for simulating light transport by tracing rays through a scene. It is a widely used rendering approach, alongside rasterization. Historically, ray tracing was considered too computationally expensive for real-time applications and was therefore primarily used for offline rendering. However, recent advances in GPU performance and the introduction of hardware-accelerated ray tracing have made real-time applications increasingly practical.

Related: PBR, Randomness

  • Ray Tracing in One Weekend series

    Series of online books teaching the basics of path tracing

  • Dartmouth CS87 Rendering Algorithms

    The course nicely fills the gap between a Ray Tracing in One Weekend style toy renderer and a more general and fully-fledged renderer that PBRT describes

    • Course
    • assignments
    • slides
    • c++
  • Physically Based Rendering: From Theory to Implementation

    Comprehensive reference on physically based rendering techniques

  • How to build a BVH Series

    A blog post series delving into building a BVH from scratch

    • article
    • c++
  • 7.3 Bounding Volume Hierarchies | Physically Based Rendering

    PBRT book chapter on how to build a BVH

    • article
    • c++
  • Lecture 18: Monte Carlo Rendering (CMU 15-462/662)

    An introduction to Monte Carlo ray tracing

  • Ray Tracing Gems Series

    Like other "gems" books, this series of books contains a collection of articles focused on ray tracing techniques for serious practitioners. It focuses on subjects commonly considered too advanced for introductory texts, yet rarely addressed by research papers.

    • book
  • The rendering equation

    The classic Kajiya rendering equation paper introduced the "rendering equation" and the path tracing algorithm

  • An Improved Illumination Model for Shaded Display

    This is Turner Whitted's original Ray Tracing paper

    • paper
    • classic
  • Lecture 19: Variance Reduction (CMU 15-462/662)

    An overview various variance reduction techniques for Monte Carlo rendering, covering bidirectional path tracing, Metropolis-Hastings algorithm, MIS, stratified Sampling, low-discrepancy sampling, blue noise, photon mapping, and finite element radiosity

  • A Survey on Bounding Volume Hierarchies for Ray Tracing

    Excellent overview paper on BVH

    • paper
    Book cover of Learn OpenGL, featuring a smiling textured containers in OpenGL
  • Robust Monte Carlo Methods for Light Transport Simulation

    the Academy Award-winning Ph.D. thesis by Eric Veach. It starts from bidirectional light transport algorithms and introduces multiple importance sampling and Metropolis light transport

  • vk_mini_path_tracer

    A relatively small, beginner-friendly path tracing tutorial using Vulkan's ray tracing API

  • Adventures in Hybrid Rendering (2021)

    A blog post on implementing a hybrid ray tracing rendering pipeline

    • article
  • Edge-Avoiding À-Trous Wavelet Transform for fast Global Illumination Filtering (2010)

    Classic paper introducing a fast and simple filter for ray tracing denoising.

  • What is direct lighting (next event estimation) in a ray tracer?

    An explanation of direct lighting and next event estimation in ray tracers

  • Experiments in Hybrid Raytraced Shadows

    Explores combining rasterization and ray tracing for shadow rendering

  • Megakernels Considered Harmful: Wavefront Path Tracing on GPUs (2013)

    Introduced wavefront path tracing

    • paper
    • classic
  • NVIDIA Vulkan Ray Tracing Tutorials

    This repository provides a comprehensive learning resource for Vulkan ray tracing, featuring a progressive step-by-step tutorial that transforms a rasterization application into a fully functional ray tracing implementation

  • TinyBVH

    Single-header zero-dependency BVH construction and traversal library

  • The Ray Tracer Challenge

    This book challenges you to build a Whitted-style ray tracer from scratch. Unlike many tutorials, it doesn't provide code and follows a unique test-first approach, describing only test specifications and algorithms.