With the increase in computing speed and due to the high quality of the optical effects it achieves, ray tracing is becoming a popular choice for interactive and animated rendering. This book takes readers through the whole process of building a modern ray tracer from scratch in C++. All concepts and processes are explained in detail with the aid of hundreds of diagrams, ray-traced images, and sample code. It is suitable for undergraduate and graduate computer graphics courses and for individual programmers who would like to learn ray tracing.