A hand-picked list of graphics programming resources by graphics programming virtual meetup attendees
- Meetup page: https://www.meetup.com/Graphics-Programming-Virtual-Meetup
- Join our Discord: https://discord.gg/TsTDb4uYfR
- Follow use on Twitter: https://twitter.com/GraphicsMeetup
- Youtube Channel: https://www.youtube.com/channel/UCbX05PBAE-582PYaRXdjRnw
Contributions welcome! To submit a PR, please first read the contribution guidelines first. You can also join our Discord Server and make suggestions there.
Table of Contents
Here is a list of resources suitable for beginners, though intermediate or advanced folks can also benefit from them.
- Learn OpenGL - learnopengl.com is the definitive resource for learning real-time renderer techniques as beginners. Even though it is an OpenGL tutorial, it also teaches rendering techniques at the same time.
- Ray Tracing in One Weekend series - Those three short books explain basic concepts of path tracing and implement a software renderer from scratch.
- CMU's introductory to Computer Graphics course - A comprehensive introduction to various topics in computer graphics.
- Catlike Coding - Focus on C# and shaders in Unity
- Book Of Shaders - The author introduces shaders from an artistic perspective, and the book covers many topics that more engineering-focused resources such as "Learn OpenGL" won't cover.
Resources that curate other resources. Some of meta links are omitted here if they are mentioned in other categories.
- GPU Optimization for GameDev
- Volumetric Clouds Resources List
- graphics resources
- Awesome Computer Graphics
- Awesome Graphics Libraries - engines & frameworks
- Awesome Computer Vision
- Awesome Gamedev - lots of graphics related stuff
- Graphics Codex - Free
- Real-Time Rendering, Fourth Edition
- Fundamentals of Computer Graphics 5th Edition
- [video series] Math For Game Devs - Video Series from Freya Holmér
- Mathematics for Computer Graphics
- Mathematics for 3D Game Programming and Computer Graphics, 3rd Edition
- Foundations of Game Engine Development, Volume 1: Mathematics -Introduces math routings with implementations. It also touchs grassman algebra.
- An Improved Illumination Model for Shaded Display - Turner Whitted's original Ray Tracing Paper
- Ray Tracing in One Weekend series
- Physically Based Rendering: From Theory To Implementation Third Edition
- Ray Tracing Gems
- Ray Tracing Gems II
- A Survey on Bounding Volume Hierarchies for Ray Tracing - Excellent overview paper
- bvh - A modern C++ BVH construction and traversal library
- ssloy/tinyrenderer - A short tutorial on writing a software rasterizer. Be careful that the tutorial has some rough edges.
- A Parallel Algorithm for Polygon Rasterization
- Scratchapixel: Rasterization Stage
- Optimizing the basic rasterizer
- Three Normal Mapping Techniques Explained For the Mathematically Uninclined
- Normal Mapping - Learn OpenGL
- Shadow Mapping - LearnOpenGL
- Efficient Shadows from Many Lights
- Experiments in Hybrid Raytraced Shadows
- Michał Olejnik - Raytraced Shadows in Call of Duty: Modern Warfare video presentation
- Learn OpenGL: SSAO
- Screen Space Ambient Occlusion - Louis Bavoil, Miguel Sainz
- Know your SSAO artifacts
- Practical Realtime Strategies for Accurate Indirect Occlusion
- Graphics Codex: Ray Marching
- Distant functions for primitives - Inigo Quilez
- soft shadows in raymarched SDFs - 2010
- Pyramidal Parametrics - Original Mipmap paper
- A Pixel is not a Little Square! - classic paper
- Basics of Image Resampling
- PBR - Learn OpenGL
- Physically Based Rendering in Filament
- Everything (or most things) wrong with learnopengl.com/PBR/Theory
- Crash Course in BRDF Implementation
- Physically Based Shading at Disney
- Deriving Lambertian BRDF from first principles
- The Book of Shaders
- shadertoy smoothstep demo
- Shader Derivative Functions - useful for normals
- How to read shader assembly
- ShaderToy Advanced Tricks
- Introduction to Compute Shaders
- More Compute Shaders
- Even more Compute Shaders
- Compute Shader Glossary
- CIS 565 GPU Programming and Architecture
- Gentle introduction to GPUs inner workings
- GCN – two ways of latency hiding and wave occupancy
- Breaking Down Barriers
- How does a GPU Shader work?
- Compute Shaders: Optimize your engine using compute / Lou Kramer, AMD
- Parallel Prefix Sum (Scan) with CUDA
- Thinking Parallel, Part I: Collision Detection on the GPU
- Thinking Parallel, Part II: Tree Traversal on the GPU
- Thinking Parallel, Part III: Tree Construction on the GPU
- docs.gl - OpenGL API Documentation
- Learn OpenGL - The highly recommended tutorial
- Awesome OpenGL - Curated List for OpenGL
- Spec It is a good idea to keep it open while doing Vulkan Programming.
- Vulkan Guide The best "Vulkan Tutorial" available.
- vk_mini_path_tracer tutorial A relative small tutorial that focus on path tracing using Vulkan's ray tracing API.
- 3D Graphics Rendering Cookbook - Nonfree book
- vk-bootstrap Library that simplify the Vulkan initialization boilerplate.
- VulkanMemoryAllocator Memory allocation library that simplifies Vulkan memory allocation and provides decent performance.
- volk Meta-loader for Vulkan that allows you to dynamically load entrypoints required to use Vulkan. It also simplify the use of Vulkan extensions.
- SPIRV-Reflect - Can be used to extract descriptor and push constant information from SPIRV
- The Shader Permutation Problem - Part 1: How Did We Get Here?
- The Shader Permutation Problem - Part 2: How Do We Fix It?
- McGuire Computer Graphics Archive - OBJ format scenes
- ORCA: Open Research Content Archive - Free large graphics scene samples
- ambientCG - Public Domain materials for Physically Based Rendering
- Rendering Resources - Benedikt Bitterli - Scenes in Tungsten, Mitsuba and pbrt-v3 formats