Scratchapixel 4.0 Lessons Books
Welcome to Computer Graphics
Teaching computer graphics programming to regular folks. Original content written by professionals with years of field experience. We dive straight into code, dissect equations, avoid fancy jargon and external libraries. Explained in plain English. Free.
Section 1: Beginners
This section is tailored specifically for beginners. We've carefully selected topics and structured them as a journey, guiding you from points A to B to C and beyond, with each lesson building upon the concepts learned in the previous one. It is intended that this section be followed in chronological order. Occasionally, there may be references to lessons from the Geometry section, particularly the introductory lessons on points, vectors, normals, and matrices.
Lesson Thumbnail

3D Computer Graphics Primer: Ray-Tracing as an Example

A hands-on approach to the principles and joys of 3D computer graphics, making it an inviting starting point for curious minds.

Updated
Lesson Thumbnail

What Do I Need to Get Started?

Setting Up a Workspace for Coding and Testing.

Updated
Lesson Thumbnail

1. Your Starting Point!

A Very Gentle Introduction to Computer Graphics Programming.

Updated
Lesson Thumbnail

2. Rendering an Image of a 3D Scene

The Breadth of Techniques and Steps Involved in the Transformation of a 3D Scene into a 2D Image.

Updated
Lesson Thumbnail

3. Computing the Pixel Coordinates of a 3D Point

Mastering the Foundational Technique of Generating Images from 3D Objects.

Updated
Lesson Thumbnail

4. The Pinhole Camera Model

How To Simulate Cameras In Computer Graphics.

Updated
Lesson Thumbnail

5. Rasterization

A Practical and Comprehensive Implementation of the Rasterization Technique.

Updated
Lesson Thumbnail

6. The Perspective and Orthographic Projection Matrix

What They Are, How They Work, and Why They Matter - Demystified.

Updated
Lesson Thumbnail

7. Overview of the Ray-Tracing Rendering Technique

A Comprehensive Guide to Every Step of Image Generation with Ray-Tracing.

Lesson Thumbnail

8. Generating Camera Rays with Ray-Tracing

Pixel by Pixel: Calculating Rays for Image Rendering in Ray-Tracing.

Lesson Thumbnail

9. A Minimal Ray-Tracer

Crafting Realistic Images with Basic Geometric Shapes (Sphere, Cube, Disk, Plane, ...).

Updated
Lesson Thumbnail

10. Ray-Tracing: Rendering a Triangle

Ray-Tracing Essentials: Rendering a Triangle Through Ray Intersection.

Updated
Lesson Thumbnail

11. Introduction to Polygon Meshes

Building the Digital World: Understanding the Fundamentals of Polygon Meshes.

Lesson Thumbnail

12. Ray-Tracing a Polygon Mesh

Racing Rays Through Polygon Mesh Triangles.

Lesson Thumbnail

13. Transforming Objects using Matrices

Matrix Magic: Shaping the Digital World through Object Transformation.

Lesson Thumbnail

14. Introduction to Shading

Bringing Scenes to Life: The Art and Science of Shading Techniques.

Updated
Lesson Thumbnail

15. Introduction to Shaders and BRDFs

Explore fundamental concepts that control and define object appearance and their interactions with light in this lesson on shaders and BRDFs.

Refresh Needed
Lesson Thumbnail

16. A Creative Dive into BRDF, Linearity, and Exposure

This lesson unravels the mystery of BRDFs through a focus on diffuse surfaces, introducing foundational concepts of exposure, the grey zone system, and color mapping with linear values in computer graphics.

New
Lesson Thumbnail

17. Understanding Reflection and Refraction

Explore the mathematics and simulations behind how light reflects and refracts through different materials.

Lesson Thumbnail

18. Introduction to Lighting

Illuminate Your Scenes: Understanding and Applying Basic Light Sources: Point, Spot, Distant and Area Lights.

New
Lesson Thumbnail

19. Introduction to Texturing

Texturing uses images to modify object surfaces, changing properties like color and shininess.

New
Lesson Thumbnail

20. Introduction to Image Based Lighting and High Dynamic Range Images

Explore Image-Based Lighting, a technique using real-scene photographs to illuminate synthetic 3D scenes.

Lesson Thumbnail

21. Global Illumination and Path Tracing

Illuminating Realism: Exploring Path Tracing Techniques for Lifelike Global Illumination.

Lesson Thumbnail

22. Introduction to Acceleration Structures

The Role of Acceleration Structures in Enhancing Computational Performance.

Lesson Thumbnail

23. Volume Rendering

Volume Rendering Demystified: A Developer's Guide.

Lesson Thumbnail

24. Windowing

Displaying Images to the Screen.

Updated
Lesson Thumbnail

25. The OBJ File Format

Learn how to read 3D models data stored in files utilizing the simplest and oldest 3D file format.

Updated
Lesson Thumbnail

26. Camera Navigation Controls

Navigating a 3D Scene with Mouse and Keyboard.

Updated
Section 2: Intermediate
In this section, we proceed with our journey from Section 1, delving into topics that go beyond basic knowledge. Here, we will explore everything not covered in Section 1 that we consider fundamental to computer graphics across various fields, including not only rendering but also animation and certain programming techniques essential for working with images and similar tasks. This is aimed at laying a solid foundation for building applications.
Lesson Thumbnail

1. Bounding Volume Hierarchy (BVH) Acceleration

Fast-Track Your Rays: Boosting Scene Speed with BVH Magic.

Lesson Thumbnail

2. Multithreading in Rendering

Divide and Conquer: Speeding Up Scenes with Teamwork Threads.

Lesson Thumbnail

3. Texturing

Bring Realism to Your 3D Scenes with Textures.

Lesson Thumbnail

4. Ray Differentials

Sharper Textures, Smarter Rays: Fine-Tuning with Ray Differentials.

Lesson Thumbnail

5. Path Tracing

Simulating real-world light behavior to achieve unmatched realism in digital environments.

Lesson Thumbnail

6. Depth of Field

Achieve Photographic Realism: Bringing Objects into Focus, Just Like a Camera Lens.

Lesson Thumbnail

7. Motion Blur

A crucial technique in simulating the way moving objects appear in still photography and film.

Lesson Thumbnail

8. Sampling Techniques

Exploring various sophisticated sampling methods, like Hammersley, to achieve cleaner, more accurate renders by effectively minimizing noise.

Lesson Thumbnail

9. Rendering Equation

Dive into the core of photorealistic rendering with the Kajiya rendering equation, a formula to simulate light and material interactions in 3D scenes.

Lesson Thumbnail

10. Advanced Image Based Lighting Techniques

Explore simulating blurry reflections and diffuse shading using environment maps in a physically plausible manner.

Lesson Thumbnail

11. Importance Sampling

A strategic approach to reducing noise and enhancing quality in rendered images.

Lesson Thumbnail

12. Bidirectional Path-Tracing

A rendering strategy that intertwines paths originating from the camera with those emanating from light sources.

Lesson Thumbnail

13. Multiple Importance Sampling

A pivotal technique in the realm of rendering that masterfully balances sampling strategies for both materials and lights.

Lesson Thumbnail

14. Boosting Rendering with SIMD Acceleration

A powerful technique that leverages parallel computing to supercharge your rendering processes and beyond.

Lesson Thumbnail

15. Level of Detail in 3D Scenes

A technique for optimizing rendering performance while preserving visual quality.

Lesson Thumbnail

16. Shadow Maps

A technique for crafting realistic shadows in the dynamic worlds of video games.

Mathematics for Computer Graphics
Yes, sometimes diving into theory is necessary. This section is dedicated to understanding the mathematical theories and tools utilized in creating images and simulations with a computer. It's not intended for you to start with this section, but rather to refer to these lessons when they are mentioned in the lessons from other sections.
Computer Graphics Gems
A collection of lessons about specific topics that don't necessarily fit into any broad category but are cool to teach and study, and are useful to know. The name "Computer Graphics Gems" pays homage to the iconic Graphics Gems book collection published in the 1990s and 2000s.
Geometry
Methods to define shapes in computer graphics.
Animation and Simulation
XX.
Digital Imaging
Saving and reading images to/from disk, image file format, color spaces, color management, and simple image processing.
Procedural Generation of Virtual Worlds
Pocedural simulation of natural phenomena.