We stand with Ukraine!
What's Next?
Keywords: ray-tracing, rasterisation, learning computer graphics, aliasing, geometry type, bézier curves and surfaces, participating media, volume rendering, smoke, fog, acceleration structure, multi-threading.Want to report bugs, errors or send feedback? Write at feedback@scratchapixel.com. We do this for free, please be kind. Thank you.

What Have We Learned?

We thought it would be nice for you to take a break and congratulate yourself for making the effort of learning already so much about computer graphics. Before moving to the next series of lessons, it is a good time to maybe go through our notes and quickly recap what we have learned so far.

A lot of people assume that Scratchapixel is only about ray-tracing. As you can see from reading this series of lessons we try to teach about a wide range of rendering techniques which are not limited to the field of ray-tracing. We learned about the very basic principle of projecting points onto an image plane, about the projection matrix and the rasterization algorithm. Of course we also learned about ray-tracing, and particular about generating camera rays and computing the intersection of these rays with different kinds of geometry: triangle meshes and simple parametric shapes such as spheres or planes. We also learned about using matrices for a wide range of techniques such as transforming objects from object to world space, as well as cameras and projection (a non-linear kind of transformation). We learned about the fundamentals of shading. We learned about simulating the look of diffuse surfaces, reflection and refraction and combining both effects using the Fresnel equation. We learned about the recursive nature of the ray-tracing algorithm when used to simulate effects such as reflection or global illumination. We also learned about illumination model such as the Phong model which can be used to simulate the appearance of glossy surface. Finally, we learned about global illumination and how this effect which contributes for a large part to the photo-realism of images, can be simulated using Monte-Carlo integration.

With such a range of techniques you can already produce images that match the results produced by professional applications. They match in terms of geometry and pixel values. In other words, if you render the same model, with the same camera and the same shading and lighting setup, your image and the image produced by a professional application will look the same. That is because basically mathematics never lie. All application follow the same rules, and if they are implemented correctly they should all produce the same results.

Knowing so much about rendering is an achievement on its own. With all the techniques studied so far, you can already produce a wide range of images and effects.


You learned quite a few different techniques in this series of lessons. Maybe now is also a good time to just have fun and experiment with these techniques! Try to create your own 3D models and experiment with things such as procedural texturing or global illumination. Creativity in computer graphics programming comes also from trying ways of combining different techniques together to create cool, fun, beautiful or unsual images.

What Shall We Learn Next?

The question is now to consider what we should be learning next?

In summary, in the next series of lessons we will learn about rendering more geometry, which we will lead us to find ways of accelerating the rendering process as well as improving the image quality overall, through essentially anti-aliasing. We will also learn about new shading and lighting techniques such as texture mapping, area and image based lighting. We will also study a very famous equation called the rendering equation and start to formalize our understanding of light as energy. Finally, we will continue exploring how we can simulate more complex shading effects such as glossy reflections using path-tracing and importance sampling which is a very important technique to reduce noise or variance in the image.