List of freely available resources to study computer graphics programming.
- Creative Coding for Beginners [video]
- Learn C++ [book]
- Essence of Linear Algebra [video] [article]
- 3D Math Primer for Graphics and Game Development [book]
- How do Video Game Graphics Work? [video]
- Ray Tracing in One Weekend [book]
- Tiny Software Renderer [article]
- Learn OpenGL [book]
- Graphics Programming – Where To Start? [article]
- Getting Started In Computer Graphics [article]
- How Do I Become a Graphics Programmer? [article]
- How to Start Learning Computer Graphics Programming [article]
- Finding Your Home in Graphics Programming [article]
- What Is A Graphics Programmer? [video]
- Self-Starting As A 3D Graphics Programmer [video]
- Learn C++ [book]
- Hacking C++ [article]
- C++ By Example [article]
- C++ Reference [documentation]
- Modern C++ Features [article]
- C++ Programming Exercises [other]
- Project Euler [other]
- Cpp Quiz [other]
- Bit Twiddling Hacks [article]
- Trigonometry [book]
- Calculus GREEN Vol 1: Asymptotics [video]
- Calculus BLUE Vol 1 : Vectors & Matrices [video]
- Essence of Linear Algebra [article] [video]
- 3D Math Primer for Graphics and Game Development [book]
- Immersive Math [book]
- Real Time Rendering: Linear Algebra and Trigonometry [book]
- Linear Algebra Done Right [book]
- Linear Algebra Done Wrong [book]
- A Primer on Bézier Curves
- Vector Math for 3D Computer Graphics [article]
- How do Graphics Cards Work? Exploring GPU Architecture [video]
- How do Video Game Graphics Work? [video]
- What Makes Computer Generated Images Look Real? [video]
- Computer Graphics from Scratch [book]
- Scratchpixel: Learn Computer Graphics Programming [book]
- Ray Tracing in One Weekend [book]
- Rasterization in One Weekend [article]
- Tiny RayTracer [article]
- Tiny RayCaster [article]
- Tiny Renderer [article]
- Implmenting A Tiny CPU Rasterizer [article]
- A Trip Through the Graphics Pipelines for Young Bloods [article]
- A Trip Through the Graphics Pipeline [article]
- A Trip Through The Graphics Pipeline [article]
- Introduction to Computer Graphics [book]
- Learn OpenGL [book]
- OpenGL Step By Step [video]
- OpenGL Tutorials [book]
- OpenGL Introduction [article]
- Anton's OpenGL 4 Tutorials [book] [article]
- Best Practices for Modern OpenGL [article]
- A Guide to Modern OpenGL Functions [article]
- OpenGl Tutorials [video]
- Docs GL - OpenGL Documentation [documentation]
- How to write a renderer for modern graphics APIs [article]
- MBSoftworks OpenGL Tutorials [article]
- An Intro to Modern OpenGL
- 3D Game Shaders For Beginners
- The Book of Shaders
- Shaders Monthly
- Shadertoy
- GLSL 2D Tutorials
- Shader School
- OpenGL 4 Shaders
- Introduction to Shader Art Coding
- A Beginner's Guide to Coding Graphic Shaders [article]
- Vulkan Spec [documentation]
- Vulkan Hub [documentation]
- API Without Secrets [article]
- Vulkan In 30 Minutes [article]
- Vulkan Guide [book]
- Vulkan Tutorial [book]
- Vulkan Examples [source code]
- I am Graphics and So Can You [article]
- Writing an Efficient Vulkan Renderer [article]
- Vulkan Synchronization Primer - Part I [article]
- Vulkan Synchronization Primer - Part II [article]
- Vulkan Lecture Series [video]
- Keen Games' Vulkan Backend Snapshot [source code]
- DirectX 11 Documentation
- Learn DirectX 11
- DirectX 11 on Windows 10 Tutorial
- DirectX 11 - Braynzar Soft Tutorials
- Minimal D3D11, Part I
- Minimal D3D11, Part II
- Minimal D3D11, Part III
- Minimal D3D11 bonus material: extra minimal triangle
- Minimal D3D11 bonus material: pixel art antialiasing
- Minimal D3D11 sprite renderer
- Minimal D3D11 sprite renderer NEO
- DirectX 12 Documentation
- DirectX 12 Spec
- Microsoft's DirectX Samples
- A Gentle Introduction to DirectX 12
- Learn DirectX 12
- Learn DirectX 12 Samples
- Learning DirectX 12
- GPU Memory Pools in D3D12
- Nvidia's API Performance Blog
- Compute with DirectX 12
- Breaking Down Barriers
- Bindless Rendering in DirectX12 and SM6.6
- Metal Documentation
- Getting Started with Metal-cpp
- Metal Tutorial
- 30 Days of Metal
- MacOS Metal with C++
- 3D Game Engine with C++ and Metal
- Metal By Example
- Metal C++ Examples
- Learning Metal with metal-cpp
- Drawing Graphics on Apple Vision with the Metal Rendering API
- Pixar in a Box
- Introduction to Computer Graphics
- Interactive Computer Graphics
- 6.837: Introduction to Computer Graphics
- Computer Graphics (CMU 15-462/662)
- Graphics Codex
- How to Start a Career in Computer Graphics Programming [video]
- If You're Serious About Pursuing a Career in Computer Graphics [comment]
- Game Programmer Resume Tips [article]
- Applying for Entry Level Graphic Jobs in Games [article]
- Leetcode for Graphics Interviews? [comment]
- Advice on Looking for Work from a AAA Game Dev [comment]
- Interviewing for Junior Programming Positions [article]
- Junior Graphics Programmer Interview Questions [article]
- Interview Questions [article]
- Interviewing Graphics Programmers [article]
- Insider Guide to Tech Interviews [article]
- Interviewing for Game Programming [article]
- How to Get A Job in Game Design [video]
- 18 Months of Game Programming Interviews [comment]
- Graphics Interview at Meta Reality Labs [comment]
- How to Read Rendering Research Papers
- How to Present a Rendering Paper
- Journal of Computer Graphics Techniques
- Ke-Sen Huang's Home Page
- High Performance Graphics
- Rendering Engine Architecture
- Keenan Crane
- EA - Rendering and Lighting Research
- Guerilla Games - Publication
- Activision Research
- Realistic Graphics Lab Publications
- Kit Computer Graphics Group
- Utah Graphics Lab
- Valve Corporation Publications
- AMD Publications
- Nvidia Publications
- Unity Publications
- Pixar Research
- U.C. Berkeley Computer Graphics Papers
- SIGGRAPH Advances in Real-Time Rendering
- High-Performance Graphics
- Rendering Engine Architecture
- Digital Dragons