About This Title

Pages: 290
Published: February 2019
ISBN: 9781680502718
In Print

Skill Level Meter

The Ray Tracer Challenge

A Test-Driven Guide to Your First 3D Renderer

by Jamis Buck

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.

Printed in full color.

eBook Formats:

  • PDF for desktop/tablets

  • epub for Apple Books, e-readers

  • mobi for Kindle readers

Get all eBook formats here for $27.95 (USD)

Add to Cart we accept visa, mastercard, amex, discover, paypal


Paperback Formats:

Please support indie bookstores!
Find indie bookstores in the U.S. Find indie bookstores around the world.


The renderer is a ray tracer, which means it simulates the physics of light by tracing the path of light rays around your scene. Each exciting chapter presents a bite-sized piece of the puzzle, building on earlier chapters and setting the stage for later ones. Requirements are given language-agnostically; it’s up to you to translate them into tests and code using whatever language you prefer. When the project is complete, you’ll look back and realize you’ve built an entire system test-first!

There’s no research necessary — all the necessary formulas and algorithms are presented and illustrated right here. Dive into intriguing topics from fundamental concepts such as vectors and matrices; to the algorithms that simulate the intersection of light rays with spheres, planes, cubes, cylinders, and triangles; to geometric patterns such as checkers and rings. Lighting and shading effects, such as shadows and reflections, make your scenes come to life, and constructive solid geometry (CSG) enables you to combine your graphics primitives in simple ways to produce complex shapes.

Play and experiment as you discover the fun of writing a ray tracer. Accept the challenge today!

What You Need

Aside from a computer, operating system, and programming environment, you’ll need a way to display PPM image files. On Windows, programs like Photoshop will work, or free programs like IrfanView. On Mac, no special software is needed, as Preview can open PPM files.

Resources

Releases:

  • P1.0 2019/02/26
  • B6.0 2019/02/13
  • B5.0 2018/12/11
  • B4.0 2018/11/14

Contents & Extracts

  • Getting Started
    • Who This Book Is For
    • How to Read This Book
    • Things to Watch Out For
  • Tuples, Points, and Vectors
    • Tuples
    • Operations
    • Putting It Together
  • Drawing on a Canvas
    • Representing Colors
    • Implementing Color Operations
    • Creating a Canvas
    • Saving a Canvas
    • Putting It Together
  • Matrices excerpt
    • Creating a Matrix
    • Multiplying Matrices
    • The Identity Matrix
    • Transposing Matrices
    • Inverting Matrices
    • Putting It Together
  • Matrix Transformations
    • Translation
    • Scaling
    • Rotation
    • Shearing
    • Chaining Transformations
    • Putting It Together
  • Ray-Sphere Intersections
    • Creating Rays
    • Intersecting Rays with Spheres
    • Tracking Intersections
    • Identifying Hits
    • Transforming Rays and Spheres
    • Putting It Together
  • Light and Shading excerpt
    • Surface Normals
    • Reflecting Vectors
    • The Phong Reflection Model
    • Putting It Together
  • Making a Scene
    • Building a World
    • Defining a View Transformation
    • Implementing a Camera
    • Putting It Together
  • Shadows excerpt
    • Lighting in Shadows
    • Testing for Shadows
    • Rendering Shadows
    • Putting It Together
  • Planes
    • Refactoring Shapes
    • Implementing a Plane
    • Putting It Together
  • Patterns
    • Making a Striped Pattern
    • Transforming Patterns
    • Generalizing Patterns
    • Making a Gradient Pattern
    • Making a Ring Pattern
    • Making a 3D Checker Pattern
    • Putting It Together
  • Reflection and Refraction
    • Reflection
    • Transparency and Refraction
    • Fresnel Effect
    • Putting It Together
  • Cubes
    • Intersecting a Ray with a Cube
    • Finding the Normal on a Cube
    • Putting It Together
  • Cylinders
    • Intersecting a Ray with a Cylinder
    • Finding the Normal on a Cylinder
    • Truncating Cylinders
    • Capped Cylinders
    • Cones
    • Putting It Together
  • Groups
    • Implementing Groups
    • Finding the Normal on a Child Object
    • Using Bounding Boxes to Optimize Large Scenes
    • Putting It Together
  • Triangles
    • Triangles
    • Wavefront OBJ Files
    • Smooth Triangles
    • Smooth Triangles in OBJ Files
    • Putting It Together
  • Constructive Solid Geometry (CSG)
    • Implementing CSG
    • Coloring CSG Shapes
    • Putting It Together
  • Next Steps
    • Area Lights and Soft Shadows
    • Spotlights
    • Focal Blur
    • Motion Blur
    • Anti-aliasing
    • Texture Maps
    • Normal Perturbation
    • Torus Primitive
    • Wrapping It Up
  • Rendering the Cover Image

Author

Jamis Buck has been active in open source for years, and has a deep passion for learning. He loves programming puzzles and trying new things, and especially enjoys finding ways to make programming fun again.

eBook Formats:

  • PDF for desktop/tablets

  • epub for Apple Books, e-readers

  • mobi for Kindle readers

Get all eBook formats here for $27.95 (USD)

Add to Cart we accept visa, mastercard, amex, discover, paypal


Paperback Formats:

Please support indie bookstores!
Find indie bookstores in the U.S. Find indie bookstores around the world.

Related Titles:

Skill Level Meter

About This Title

Pages: 290
Published: February 2019
ISBN: 9781680502718
Edition: 1
In Print