Curated collection of lists of useful resources to master computer graphics together.
⬇️ Tags legend at the end of the page.
( introductory )
- ⭐ Introduction to Computer Graphics by Cem Yuksel 🎓 🎥 ( introductory ) : very good introductory course on graphics
- ⭐ Interactive Computer Graphics by Cem Yuksel 🎓 🎥 ( introductory ) : very good advanced course on graphics
- ⭐ OpenGL by Brian Will 🎓 🎥 ( introductory ) ( opengl ) : very good video course on graphics and OpenGL
- Computer Graphics by Keenan Crane 🎓 🎥 ( introductory ) ( opengl ) : more theoretical and quite broad introduction to CG
- GPU Programming for Video Games by Aaron Lanterman 🎓 🎥 ( introductory ) ( unity ) : Unity-based introduction to graphics
- Learn OpenGL by learnopengl.com 🎓 📄 : good textual curse on graphics
- OpenGL Tutorials by opengl-tutorial.org 🎓 📄 : good textual curse on graphics
( shader )
- ⭐ Shaders by Simon Dev 🎓 🎥 ( shader ) : very good introduction to shaders
- Shader Coding by Art of Code 🎓 🎥 ( shader ) : collection of lectures on writing shaders
- The Book of Shaders by Patricio Gonzalez Viv 🎓 📄 ( shader ) : open sourced interactive book on shaders
- Godot Shading Language Reference by Godot 🗃️ 📄 : Godot shading language reference, very similar to GLSL
- Reference on 3D SDFs by Inigo Quilez 🗃️ 📄 ( shader ) ( sdf ) : reference on many 3D signed distance functions
- Reference on 2D SDFs by Inigo Quilez 🗃️ 📄 ( shader ) ( sdf ) : reference on many 2D signed distance functions
- 3D Game Shaders For Beginners by lettier 📄 ( shader ) : learn to write shaders for 3D shading
- Noise Shaders by Suboptimal Engineer 🎓 🎥 ( shader ) : collection of tutorial on noise, but not only
( math )
- Flight Mechanics by Christopher Lum 🎓 🎥 ( math ) : math for 3D space, flight-tailored
- Math for Game Developers by Jorge Rodriguez 🎥 ( math ) : very wide series of lectures
- Essence of linear algebra by Brian Will 🎓 🎥 ( math ) : linear algebra
( math ) ( transformation )
- Learn OpenGL by learnopengl.com 📄 ( article ) : good textual curse on graphics
- Matrices by opengl-tutorial.org 📄 ( article ) : tranformation and spaces
- How to translate, rotate, and scale points in 2D space by Brian Will 🎥 ( 2d )
- 3D coordinate systems, translation, rotation and scaling in 3D by Brian Will 🎥 ( 3d )
- Rotations by Brian Will 🎥 ( rotation )
- Three-dimensional linear transformations by Grant Sanderson 🎥
- Visualizing quaternions by Grant Sanderson & Ben Eater 📄 ( interactive ) 🎥 ( quaternions )
- Quaternions and 3d rotation, explained interactively by Grant Sanderson ( interactive ) 🎥 ( quaternions )
- Quaternion Rotation by Sutrabla 🎥 ( quaternions )
- Gimbal lock by GuerrillaCG 🎥 ( euler ) : gimbal lock explained
- Euler Angles and the Euler Rotation Sequence by Christopher Lum 🎥 ( euler )
- 3d Projection by Brian Will 🎥 ( projection )
- Viewing and Projection by University Of Auckland 📄 ( projection )
- Rotations by opengl-tutorial.org 📄 ( article )
- OpenGL Projection Matrix by Song Ho 📄 ( article )
- World,View and Projection Matrices by duriansoftware.com 📄 ( article ) ( shader ) 📄
( math ) ( curves )
- A Primer on Bézier Curves by Pomax 🎓 📄 : good reading on bezier and other curves
- Splines in Euclidean Space and Beyond by Matthias Geier 🎓 📄 : advanced book with code snipets on curves
- Conic Sections by Michel van Biezen 🎓 🎥 : conic sections
- Curves I and Curves II by Cem Yuksel 🎥 : good introduction to curves
- Continuity of Splines by Freya Holmér 🎥 : visualization of bezier and other curves
- Easing Functions by Andrey Sitnik : 📈 list and describe basic easing functions
( vr )
- Virtual Reality by Stanford University 🎓 📄 ( introductory ) ( vr )
( cv )
- Computer Vision and OpenCV Tutorial in C++ by The Coding Lib 🎓 🎥 ( opencv )
- OpenCV Object Detection in Games by Learn Code By Gaming 🎓 🎥 ( opencv )
- OpenGL online book by learnopengl.com 🎓 📄
- OpenGL tutorials by opengl-tutorial.org 🎓 📄
- OpenGL fundamentals by songho.ca 🎓 📄
- OpenGL tutorials by open.gl 🎓 📄
- OpenGL® Programming Guide: The Official Guide to Learning OpenGL®, Version 4.3 🎓 📄
- 3D Graphics with OpenGL Basic Theory by Nanyang Technological University 📄 ( article )
- OpenGL introduction by learnopengl.com 📄 ( article )
- An intro to modern OpenGL by duriansoftware.com 📄 ( article )
- An overview on how to write a WebGPU application by Alain Galvan 📄 ( article )
( webgl )
- WebGL 1.0 API Quick Reference Card by Khronos Group 📈 ( webgl )
- WebGL 2.0 API Quick Reference Guide by Khronos Group 📈 ( webgl )
( vulkan )
- Vulkan Game Engine by Brendan Galea 🎓 🎥 ( introductory ) ( vulkan ) ( cpp ) : Vulkan-based introductory course
- OpenGL by Brian Will 🎓 🎥 ( introductory ) ( opengl ) : very good video course on graphics and OpenGL
- OpenGL Tutorials by Victor Gordan 🎓 🎥 ( introductory ) ( opengl ) ( cpp ) : OpenGL-based introductory course
- OpenGL for Beginners by Etay Meiri 🎓 🎥 ( introductory ) ( opengl ) ( cpp ) : OpenGL-based introductory course
- Intermediate OpenGL by Etay Meiri 🎓 🎥 ( introductory ) ( opengl ) ( cpp ) : OpenGL-based intermediate course
( line )
- 2D Graphics Algorithms (part 1) by Brian Will 🎥 ( 2d )
- 2D Graphics Algorithms (part 2) by Brian Will 🎥 ( 2d )
- 2D lines with round joints using WebGL shaders by ColaColin 📄 ( article )
- Shader-Based Antialiased, Dashed, Stroked Polylines by Nicolas P. Rougier 📄 ( article )
( aa )
- A Quick Overview of MSAA by MJP 📄 ( article )
- Alpha to coverage with MSAA tricks by Humus ( oit )
- Alpha test and alpha blend combined to get smooth edges by Wolfire
- Superior Alpha to coverage technique by Ben Golus
( oit )
- Depth peeling example using Three.js by pailhead ( example )
- Depth peeling paper #1 by Cass Everitt ( official ) 📄 ( article )
- Depth peeling paper #2 by Cass Everitt ( official ) 📄 ( article )
- Dual depth peeling paper by Louis Bavoil ( official ) 📄 ( article )
- Layered weighted blended method paper #1 Morgan McGuire ( official ) 📄 ( article )
- Layered weighted blended method paper #2 by Fabian Friederichs ( official ) 📄 ( article )
- Layered weighted blended method acticle by Morgan McGuire 📄 ( article )
- Depth-fighting aware methods for multifragment rendering by Andreas-Alexandros Vasilakis ( official ) 📄 ( article )
- Multi-layer depth peeling via fragment sort by Baoquan Liu ( official ) 📄 ( article )
- Implementing weighted blended method by Morgan McGuire 📄 ( article )
- Weighted blended method example using Three.js ( example )
- Weighted blended method example using WebGL by Tarek Sherif ( example )
- Dual depth peeling using WebGL by Tarek Sherif ( example )
- Dual depth peeling implemenetation using WebGL by ShrekShao ( example )
- Depth peeling via bucket sort presentation by Mengcheng Huang ( official ) 📄
- Depth peeling via bucket sort by Mengcheng Huang ( official ) 📄 ( article ) <!- - [Depth peeling via bucket sort #2] (https://drive.google.com/file/d/12JYmusKSvpsdVua1emdqIPJTY7vBFKzq/view) -> <!- - [Chaper 1 of Book "GPU Pro 360 Guide to 3DEngine": Depth peeling via bucket sort] (https://drive.google.com/file/d/1199PPCQka5oFZq9_Q09htGEeriLLnPO6/view) -> <!- Chaper 1 of Book "GPU Pro 360 Guide to 3DEngine ->
- Weighted blended method example using Cesium by Dan Bagnell ( example )
- Collection of information about multifragment rendering by Computer Graphics AUEB 🏗️
- Deep G-Buffers for stable global illumination approximation by Michael Mara ( official ) 📄 ( article )
- Fast and Accurate Single-Pass A-Buffer using OpenGL 4.0+ by Cyril Crassin 📄 ( article )
- A Survey of Multifragment Rendering by Andreas-Alexandros Vasilakis ( official ) 📄
- Depth Precision Visualized by Nathan Reed 📄 ( article )
- Depth testing by learnopengl.com 📄 ( article )
- Stochastic Layered Alpha Blending by Chris Wyman ( official ) 📄
- Order-independent transparency and anti-aliasing by Jani Honkanen 📄 ( article )
- Stochastic Transparency by Eric Enderton
- A demo for order independent transparency using pixel synchronization by Christoph Neuhauser ( example )
📈
- Basic Math Cheatsheet by opengl-tutorial.org 📈 : very basic math cheat sheet
- WebGL 1.0 API Quick Reference Card by Khronos Group 📈 ( webgl )
- WebGL 2.0 API Quick Reference Guide by Khronos Group 📈 ( webgl )
- Easing Functions by Andrey Sitnik : 📈 list and describe basic easing functions
( blog )
- Nathan Reed's Blog by Nathan Reed 📄 ( article )
- Ben Golus's Blog by Ben Golus
📂
- Awesome explorables by sp4ke 📂 :
- Explorable Explanations by explorable.es 📂 :
- 🎥 - video material to watch
- 📄 - reading
- 📖 - a book
- 🎓 - online course with or without feedback
- 📈 - cheat sheets
- 🗃️ - reference or manual or a standard
- 📂 - collections of collections
- 🏴☠️ - non-english
- 📄 - either single article or single video-tutorial
- 🏗️ - ideas for inspiration of mini-projects to add to your portfolio
- ( official ) - official material
- ( interactive ) - it is possible to interact and get feedback from the system
- ( blog ) - blogs
- 🏗️ - a project
- ( example ) - code sample that can be executed
- ( math ) - related to math
- ( transformation ) - related to math transformation, projection
- ( quaternions ) - related to quaternions
- ( euler ) - related to euler angles
- ( rotation ) - related to rotation in space
- ( projection ) - related to camera projections
- ( curves ) - related to math curves
- ( introductory ) - introductory learning material
- ( line ) - related to drawing lines
- ( 2d ) - related to 2d graphics
- ( 3d ) - related to 3d graphics
- ( shader ) - related to shaders
- ( sdf ) - signed distance function
- ( cv ) - related to computer vision
- ( oit ) - related to order-independent transparency
- ( vr ) - virtual reality
- ( aa ) - anti aliasing techniques
- ( unity ) - related to Unity
- ( godot ) - related to Godot
- ( opengl ) - related to OpenGL rendering backend
- ( vulkan ) - related to Vulkan rendering backend
- ( webgl ) - related to WebGL
- ( opencv ) - related to OpenCV
- ( cpp ) - related to C++