Computer Graphics from Scratch Cover

Computer Graphics from Scratch

A Programmer's Introduction to 3D Rendering
by Gabriel Gambetta
April 2021, 248 pp.

Look Inside!

Computer Graphics ScratchComputer Graphics from Scratch pg 67Computer Graphics from Scratch pg 143Computer Graphics from Scratch page 166Computer Graphics from Scratch page 177 Computer Graphics from Scratch Image

Download Chapter 3: LIGHT

Computer graphics programming books are often math-heavy and intimidating for newcomers. Not this one. Computer Graphics from Scratch takes a simpler approach by keeping the math to a minimum and focusing on only one aspect of computer graphics, 3D rendering.

You’ll build two complete, fully functional renderers: a raytracer, which simulates rays of light as they bounce off objects, and a rasterizer, which converts 3D models into 2D pixels. As you progress you’ll learn how to create realistic reflections and shadows, and how to render a scene from any point of view.

Pseudocode examples throughout make it easy to write your renderers in any language, and links to live JavaScript demos of each algorithm invite you to explore further on your own.

Learn how to:

  • • Use perspective projection to draw 3D objects on a 2D plane
  • • Simulate the way rays of light interact with surfaces
  • • Add mirror-like reflections and cast shadows to objects
  • • Render a scene from any camera position using clipping planes
  • • Use flat, Gouraud, and Phong shading to mimic real surface lighting
  • • Paint texture details onto basic shapes to create realistic-looking objects

Whether you’re an aspiring graphics engineer or a novice programmer curious about how graphics algorithms work, Gabriel Gambetta’s simple, clear explanations will quickly put computer graphics concepts and rendering techniques within your reach. All you need is basic coding knowledge and high school math. Computer Graphics from Scratch will cover the rest.

Author Bio 

Gabriel Gambetta has been coding games since the age of 5 on a ZX Spectrum. After studying CS and starting his career as a company man, he gave it all up to start a game development company, where he worked for over a decade while teaching Computer Graphics at a local university. Most recently, Gambetta has worked at Google in Zürich since 2011, except for a stint as an early engineer in London-based multiplayer game tech unicorn Improbable.

Table of contents 

Chapter 1: Introductory Concepts
Chapter 2: Basic Raytracing
Chapter 3: Light
Chapter 4: Shadows and Reflections
Chapter 5: Extending the Raytracer
Chapter 6: Lines
Chapter 7: Filled Triangles
Chapter 8: Shaded Triangles
Chapter 9: Perspective Projection
Chapter 10: Describing and Rendering a Scene
Chapter 11: Clipping
Chapter 12: Hidden Surface Removal
Chapter 13: Shading
Chapter 14: Textures
Chapter 15: Extending the Rasterizer

View the detailed Table of Contents
View the Index


"If you've ever wanted to peek behind the curtain and understand how [computer graphics] work, here you've got it in a step-by-step process. . . . A nice resource to have to learn about the basics of computer graphics. . . . If you want to jump in and learn about computer graphics or get an understanding of how ray tracing works, this is a good choice."
Game From Scratch

"There's enough information in his book for a university course. In fact, the book is based on the course Gambetta taught before he became a senior engineer at Google."
—Joy Schwabach, Arkansas Democrat Gazette's On Computers

"One of the best textbooks I have ever seen! . . . I am in awe of the simplicity of the math and science involved. It feels a lot like I am wielding magical powers that I've always thought were beyond my reach. [Gabriel Gambetta has] absolutely managed to demystify the process. I guess it's a sort of 'the power was within you the whole time' kind of moment."
/u/Grakkam, Reddit

Book announcement featured in GameDev Digest and GamaSutra

"I love it. I love fundamental and foundational books like this. It's not tied to language or platform so doesn't get dated. I learned SO MUCH going through this book."
—Dylan Bennett, Twitter

"Computer Graphics from Scratch is a great jumping-off point for those who want to learn more about raytracing and rasterization."
—Julia Roth, Geek Girl Authority

"An ideal textbook on DIY computer graphic creation, Computer Graphics from Scratch: A Programmer's Introduction to 3D Rendering is especially and unreservedly recommended for personal, professional, community, school, college, and university library Computer Programming collections and supplemental studies curriculums."
—James A. Cox, Midwest Book Review

"If you want to understand how shaders are programmed, something important not just to game developers or animators but to anyone who needs to understand what's happening with the graphics library that they are using that isn't working right, this book is for you. The math is just algebra with linear algebra included, and Gambetta builds up his renderers from scratch in a manner that appears logical and easy to follow."
—Rik Farrow, USENIX


Page 210: in the batch of three equations in the top half of the page, the second equation that currently reads:
Ry = Vx・Wz – Vz・ Wx

Should now read:

Ry = Vz・Wx – Vx・Wz