:small_red_triangle::sunglasses: A curated list of awesome stuff to learn computer graphics
The Awesome CG List! A collection of various resources to learn computer graphics, including books, tutorials, online courses, and more. Name a CG topic, chances are this list contains some stuff about it (if not, it will someday!).
If you want to contribute, please read the Contribution Guidelines
Computer graphics is a knowledge area about how to create images using computers, to put it simply. Generally this is done by processing data representing information what you want to draw, for example: objects, colors, light. Anything about visual and digital creations have used CG in some way: games, movies, etc.
Before showing a lot of books, videos, and materials, first you need to know what is bare-minimum to begin with computer graphics. It boils down to two main topics: programming and math. About programming, learn the basics, it's recommended to learn C/C++ as they are used frequently in this area. Concerning math, learn linear algebra and geometry, there are books in this list focused on math fundamentals for CG, pick one and work on it.
Assuming you know programming and math, then you can get more practical. It's a good approach to get a project about a topic like global illumination, or GPU programming to deepen your knowledge on this area. Examples of projects are: path tracers, photon mapping, shader programming. Recommended projects are the PBRT, the ray tracer from the Physically Based Rendering book, and the ray tracer with photon mapping, from the Realistic Image Synthesis Using Photon Mapping. Also, watching tutorials for Shader Toy and experimenting on it is a good idea.
Real-Time Rendering, by Tomas Akenine-Moller, one of the best on high performance graphical applications, very detailed explanations and contains many examples to illustrate its topics.
Ray Tracing in One Weekend, by Peter Shirley, a free book to get you implementing a basic ray tracer in C++, the catch is: this one is very short (about 40 pages), you'll learn the minimum to create a ray tracer to generate amazing images in a very short amount of time!
Ray Tracing: The Next Week, by Peter Shirley, builds on top of the first books' project, adding more effects, like textures and motion blur.
Ray Tracing: The Rest of Your Life, by Peter Shirley, last book of the series, exposes more mathematical themes necessary to build more complex and complete renderers.
Physically Based Rendering: From Theory to Implementation, by Matt Pharr, teaches how to create a ray tracer to render realistic images. A thorough explanation of the technique, with as much code the theory behind it, and has a free online version!
3D Math Primer for Graphics and Game Development, by Fletcher Dunn, this book gives more focus to the math necessary for game development.
Fundamentals of Computer Graphics, by Steve Marschner, introduces graphics concepts.
Ray Tracing from the Ground Up, by Kevin Suffern, guides you through the task of implement a ray tracer, starting with a bare-bones project, and every chapter introduces a new concept to add to the renderer.
Advanced Global Illumination, by Philip Dutre, its focus are fundamentals to understand realistic image synthesis, such as light transport.
Realistic Image Synthesis Using Photon Mapping, by Henrik Jensen, teaches math and algorithms to implement the photon mapping rendering process. It even has a complete C++ implementation of the technique!
The Book of Shaders, by Patricio Gonzalez and Jen Lowe, a online book focused on pratical teaching of GLSL fragment shaders, full of (editable!) code examples of how they work.
Computer Graphics - San Diego, by Ravi Ramamoorthi, this course focus on learning the necessary math to program a offline ray tracer.
SIGGRAPH University, playlist with popular courses from the annual SIGGRAPH Conference.
Computer Graphics & Imaging - Berkeley, by Ren Ng (Spring 2018.)
To the extent possible under law, Luís Santos has waived all copyright and related or neighboring rights to this work.