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
- What is computer graphics?
- How to get started?
- I want to learn more advanced stuff
- Books
- Libraries
- Courses
- Sites
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.
-
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 mininum to create a ray tracer to generate amazing images in a very short ammount of time!
-
Ray Tracing: The Next Week, by Peter Shirley, builds on top of the first books's 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 conpect 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++ inplementation of the technique!
- OpenGL, one of the most, if not the most popular graphics API.
-
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](https://cs184.eecs.berkeley.edu/, by Ren Ng (Spring 2018.)
- ScratchAPixel, teaches image redering from basic to advanced.
- Learn OpenGL, resource site, contains tutorials by topic, code examples and even has a pdf version of its contents.
- OpenGL tutorial, tutorial for learning OpenGL 3.3 or higher.
- Learn Vulkan, teaches the modern API, created by the same team that created OpenGL.
To the extent possible under law, Luís Santos has waived all copyright and related or neighboring rights to this work.