“This book is a godsend.”
Danielle Keffer

Code in Three Dimensions.

Brace yourself for a fun challenge: build a photorealistic 3D renderer from scratch!

It’s easier than you think. In just a couple of weeks, build a ray tracer that renders beautiful scenes with shadows, reflections, brilliant refraction effects, and subjects composed of various graphics primitives: spheres, cubes, cylinders, triangles, and more. With each chapter, implement another piece of the puzzle and move the renderer that much further forward. Do all of this in whichever language and environment you prefer, and do it entirely test-first, so you know it’s correct.

Recharge yourself with this project’s immense potential for personal exploration, experimentation, and discovery.

This video was rendered using the ray tracer described in the book!

Available at these fine online booksellers

Peek inside: a sampling of pages from the book

Extensive tests in Gherkin
Algorithms in pseudocode
Concepts clearly explained
Hand illustrated

Purchase the paperback or get the PDF

You’ll be able to render scenes with...

Transformed surfaces
Reflection, Refraction, and Shadows
Objects composed of polygons
Constructive Solid Geometry (CSG)

The sky is the limit, with infinite directions to explore on your own!

Bonus Material

Once you’ve begun working through the book, you can come back here to find bonus material—additional features, optimizations, and tips— all presented in the same test-driven format as the book.

The following bonus material is currently available:

Here’s what everyone’s saying...

“Following in the footsteps of his book, Mazes for Programmers, Buck once again takes a challenging concept, presents it in an easy-to-understand format, and reminds us that programming can be both fun and rewarding.”
— Dr. Sebastian Raaphorst, Gemini Observatory

This book is devious. Little by little, a test here and a test there, you'll create an incredibly sophisticated ray tracing library. Because each change is so small, your ray tracer will sneak up on you. That's the devious part: By the end you'll have built an amazingly complex piece of software, but it will never feel difficult!”
— Cory Forsyth, Founding Partner, 201 Created, Inc

“In The Ray Tracer Challenge Jamis Buck tames a difficult topic using an entertaining, practical approach that even the mathematically averse will enjoy. The test driven approach challenges and rewards the reader with experiences and artifacts that remind even the grizzled software curmudgen of the joyful moments in software development that inspired us to pursue engineering in the first place.”
— Justin Ball, CTO, Atomic Jolt

“Creating a ray tracer is a rite of passage that I recommend all developers endeavor to complete. Jamis does a great job presenting complex topics simply and allowing the reader to focus on the most interesting parts of the project. Working through this book is almost guaranteed to bring your programming skills up a notch.
— Jason Pike, Director, Software Engineering, Atlas RFID Solutions

“The Ray Tracer Challenge is a delightful introduction to 3d lighting and rendering through ray tracing. Yes, there is math, but Jamis provides great examples and the exercises illustrate concepts in a way that is way more fun than any math class I took in college!
— Matthew Margolis, Director, Software Engineering

Taking the Ray Tracer Challenge was so much fun. Starting with some short tests, you'll create beautifully rendered images with just a little bit of math and code.”
— Justin Weiss, Senior Software Engineer, Aha!

“With this book, I can use what I learned at the university 13 years ago, and it is now fun! The Ray Tracer Challenge gave me back my joy for pet-projects. I recommend it to everyone!”
— Gábor László Hajba, Senior IT Consultant

“One of the tricks to avoiding programmer burnout is to find a passion project. In this book, you'll find exactly that: an awesome personal project that you can tackle regardless of your language background. Jamis' The Ray Tracer Challenge shows us that the best passion projects are shared.”
— Kevin Gisi, Senior UX Engineer

Buy The Ray Tracer Challenge today!