Afterword

Congratulations! You now have a good understanding of how 3D rendering works. You’ve created a raytracer and a rasterizer and gained a good conceptual understanding of the algorithms and math that power them.

However, as I explained in the introduction, it’s impossible to cover the entirety of 3D rendering in a single book. Here’s a few topics you might want to explore on your own to expand your horizons:

Global illumination, including radiosity and path tracing

Find out how deep the “ambient light” rabbit hole goes!

Physically based rendering

Illumination and shading models that don’t just look good, but model real-life physics.

Voxel rendering

Think Minecraft, or MRI scans in hospitals.

Level-of-detail algorithms

This includes offline and dynamic mesh simplification, impostors, and billboards. These algorithms are how we efficiently render forests with billions of plants, crowds of millions of people, or extremely detailed 3D models.

Acceleration structures

This includes binary space partition trees, k-d trees, quadtrees, and octrees. These structures help efficiently render massive scenes, such as an entire city.

Terrain rendering

How to efficiently render a terrain model that might be as big as a country yet have human-scale detail.

Atmospheric effects and particle systems

Fog, rain, and smoke, but also some less intuitive materials like grass and hair.

Image-based lighting

Similar to environment mapping, but for diffuse lighting.

High dynamic range, gamma correction

The color representation rabbit hole also goes deep.

Caustics

Also known as “the moving white patterns at the bottom of the swimming pool.”

Procedural generation of textures and models

Add more variety and possibly infinitely big scenes.

Hardware acceleration

Using OpenGL, Vulkan, DirectX, and others to run graphics algorithms on GPUs.

Of course, there are many other topics, and that’s just 3D rendering! Computer graphics is an even broader subject. Here are some areas you might want to investigate:

Font rendering

This is surprisingly more complex than you might think.

Image compression

How to store images in the least amount of space.

Image processing (e.g. transforming and filtering)

Think Instagram filters.

Image recognition

Is that a dog or a cat?

Curve rendering, including Bezier curves and splines

Find out what these weird arrows on the curves of your favorite drawing program really are!

Computational photography

How does the camera on your phone take such good pictures with almost no light?

Image segmentation

Before you can “blur the background” of your video call, you need to determine which pixels are background and which aren’t.

Congratulations again on taking your first step into the world of computer graphics. Now you get to choose where to go next!

Found this interesting?
Buy the book from No Starch Press or Amazon.
<< Linear Algebra
Computer Graphics From Scratch · Dedication | Acknowledgements | Table of Contents | Introduction | Introductory Concepts
Part I: Raytracing · Basic Raytracing | Light | Shadows and Reflections | Extending the Raytracer
Part II: Rasterization · Lines | Filled Triangles | Shaded Triangles | Perspective Projection | Describing and Rendering a Scene | Clipping | Hidden Surface Removal | Shading | Textures | Extending the Rasterizer
Appendixes · Linear Algebra | Afterword