Resources
This page contains a collection of graphics programming and adjacent resources curated by our meetup attendees.
New to graphics programming and don't know where to start? Check our curated beginner friendly resources.
Want to add a resource? See guide for adding resources.
- Graphics Programming weekly newsletter
A long-running weekly newsletter summarizing graphics-related articles from the past week
- Learn OpenGL
Learn OpenGL 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
Series of online books teaching the basics of path tracing
- CMU's introductory to Computer Graphics (2020)
A comprehensive introduction to various topics in computer graphics
- Dartmouth CS87 Rendering Algorithms
The course nicely fills the gap between a Ray Tracing in One Weekend style toy renderer and a more general and fully-fledged renderer that PBRT describes
- Physically Based Rendering: From Theory to Implementation
Comprehensive reference on physically based rendering techniques
- Tinyrenderer: Software rendering in 500 lines of bare C++
Writing a software rasterization from scratch to demonstrate how graphics APIs work.
- The Graphics Codex
Free book that contains chapters on physically-based shading and rendering, coding projects, and reference pages.
- UPenn CIS 5650 GPU Programming and Architecture (2025)
A course that introduce GPU parallel programming with a Computer Graphics flavor
- Introduction to Computer Graphics - Cem Yuksel (2021)
A video lecture series introducing computer graphics fundamentals by Cem Yuksel.
- Vulkan Specification
It is a good idea to keep it open while doing Vulkan programming
- How to build a BVH Series
A blog post series delving into building a BVH from scratch
- Learn OpenGL: Shadow Mapping
Learn OpenGL's tutorial on physically based rendering
- Best Practices for Modern OpenGL
A guide about avoiding common programmer errors by using modern OpenGL (4.5+)
- VkGuide by Victor Blanco
The goal of this guide is to understand Vulkan correctly, and act as a stepping stone for then working in your own projects.
- Physically Based Rendering in Filament
Google's documentation on the PBR system on their Filament renderer on Android. Best in class documentation about high performance PBR lighting shaders
- 7.3 Bounding Volume Hierarchies | Physically Based Rendering
PBRT book chapter on how to build a BVH
- Lecture 18: Monte Carlo Rendering (CMU 15-462/662)
An introduction to Monte Carlo ray tracing
- docs.gl
An improvement of the official OpenGL documentation
- Drawing Lines is Hard
Summarizes the problem of GPU line primitives and explores a few different techniques for 2D and 3D triangulated line rendering, and accompany each with a small canvas demo.
- Game Programming Patterns
A free online book covering design patterns commonly used in game development
- Learn wgpu
A tutorial for the WebGPU API using Rust and the wgpu library
- Learn OpenGL: Shadow Mapping
Basic tutorial on shadow mapping
- Pyramidal Parametrics (1983)
The original paper introducing mipmapping
- Ray Tracing Gems Series
Like other "gems" books, this series of books contains a collection of articles focused on ray tracing techniques for serious practitioners. It focuses on subjects commonly considered too advanced for introductory texts, yet rarely addressed by research papers.
- TU Wien: Vulkan Lecture Series (2021)
Lecture series on Vulkan programming from TU Wien
- WebGL2 Fundamentals
An introduction to 2D and 3D computer graphics using WebGL2
- WebGPU Fundamentals
A series of lessons or tutorials about webgpu
- An Improved Illumination Model for Shaded Display
This is Turner Whitted's original Ray Tracing paper
- OGLdev
Another set of step-by-step video tutorials on OpenGL. The tutorial includes both text and videos, which may be preferable to people who prefer video.
- The Graphics Codex: Ray Marching
A good introduction of ray marching that progresses from naive ray marching to the sphere tracing algorithm. It then covers some common SDF primitives and operations, normal computation, and performance optimizations
- Beyond White Noise for Real-Time Rendering
A good introduction on the use of different types of noise for random number generation, focusing on applications in real time rendering
- Lecture 10: Meshes and Manifolds (CMU 15-462/662)
Great overview, and also spend significant time on the half-edge data structure
- Lecture 19: Variance Reduction (CMU 15-462/662)
An overview various variance reduction techniques for Monte Carlo rendering, covering bidirectional path tracing, Metropolis-Hastings algorithm, MIS, stratified Sampling, low-discrepancy sampling, blue noise, photon mapping, and finite element radiosity
- Sascha Willems' Vulkan Samples
A comprehensive collection of open source C++ examples for Vulkan
- Scratchapixel Volume Rendering
Scratchapixel's in-depth introduction to volumetric rendering using ray marching
- Spectral Rendering series
Blog post series describes how spectral rendering can be implemented at a relatively low overhead (as compared to RGB rendering) and why that is beneficial
- The rendering equation
The classic Kajiya rendering equation paper introduced the "rendering equation" and the path tracing algorithm
- Vulkanised 2026: Frames in Flight Demystified
In depth introduction to the "frames in flight" concept in Vulkan
- WebGPU Specification
The official WebGPU API specification
- Direct3D 12 programming guide
Microsoft's official programming guide for DirectX 12
- Instanced Line Rendering Part I
Builds on the foundation from "Drawing Lines is Hard" and uses instance rendering to draw lines
- Khronos Descriptor indexing Sample
Overview of the descriptor indexing feature, its use cases, and gives coding sample
- 3D Math Primer for Graphics and Game Development
The book focus on cover fundamental 3D math concepts for beginners
- A Survey on Bounding Volume Hierarchies for Ray Tracing
Excellent overview paper on BVH
- Flavors of Sampling in Ray Tracing
An overview of different sampling strategies used in ray tracing.
- Game Loop - Game Programming Patterns
Chapter from Game Programming Patterns explaining different design decisions for a game loop
- The Hitchhiker's Guide to Digital Colour
A step by step guidebook for digital pixel pushers trying to get a firm grasp on colour
- Instanced Line Rendering Part II: Alpha blending
Continues instanced line rendering, introducing alpha-blending for triangulated lines.
- Introduction to Spherical Harmonics for Graphics Programmers
Give readers the vocabulary and knowledge necessary to further understand spherical harmonics
- Reader Question Answered 1 - Learning D3D12
A roadmap for learning DirectX 12 with recommended resources
- Math For Game Devs (2020)
Four part lecture on essential math for game developers by Freya Holmér
- Onboarding floating-point
A series about floating-point numbers by Mike Acton, tailored for game developers
- Polygonising a scalar field (Marching Cubes) (1994)
Reference implementation and explanation of the marching cubes algorithm
- Implementing a tiny CPU rasterizer
Blog post series on implementing a CPU rasterizer from scratch
- Tone Mapping
Introduces the theory of tone mapping and discusses commonly used tone mapping operators
- Understanding Vulkan Synchronization
Khronos blog post explaining Vulkan synchronization concepts (with notes on Synchronization2)
- Robust Monte Carlo Methods for Light Transport Simulation
the Academy Award-winning Ph.D. thesis by Eric Veach. It starts from bidirectional light transport algorithms and introduces multiple importance sampling and Metropolis light transport
- vk_mini_path_tracer
A relatively small, beginner-friendly path tracing tutorial using Vulkan's ray tracing API
- Vulkan Pills 1: Bindless Textures (2021)
Introduction on how to use Vulkan bindless features
- Advanced Global Illumination
An advanced book focused on light transport theory for global illumination.
- Adventures in Hybrid Rendering (2021)
A blog post on implementing a hybrid ray tracing rendering pipeline
- The Algorithmic Beauty of Plants (1990)
Free online book on modeling plants with L-systems
- Algorithms for Modern Hardware
Free online book focusing on high-performance computing on CPU
- ambientCG
Public Domain materials for Physically Based Rendering
- Edge-Avoiding À-Trous Wavelet Transform for fast Global Illumination Filtering (2010)
Classic paper introducing a fast and simple filter for ray tracing denoising.
- Barycentric Coordinates
An interactive introduction to barycentric coordinates. It starts with linear-interpolation and generalize it to triangles and higher-dimensions.
- Basics of physically-based rendering (Siggraph 2012)
This tutorial will cover the basics of physically-based rendering such as reflection models (BRDF), volume scattering (phase functions), optical phenomena (dispersion and polarization)
- The Beauty of Bézier Curves (Freya Holmér)
Explaining Bézier curves with a lot of visualizations
- Rendering Resources | Benedikt Bitterli
Scenes in Tungsten, Mitsuba, and pbrt-v4 formats
- Better Code: Concurrency - Sean Parent
This talk uses the primitives supplied by C++14 to build a simple task system. It discussing the issues with usage of mutexes for shared data and introducing concurrent queues and thread pools
- Bézier Curves
An interactive explanation of Bezier curves, with the perspective from a web developer (CSS and SVG)
- Using Blue Noise For Raytraced Soft Shadows
Article from the "blue noise guy" talking about how to apply blue noise to raytraced soft shadows
- Compute Shader Glossary
A glossary of terms used in compute shader programming. Provides cross-API comparisons
- Crash Course in BRDF Implementation (2021)
This article helps to understand and implement BRDFs commonly used in game engines, for use in both rasterization and emerging realtime raytracing
- CSC417/CSC2549 - Physics-based Animation
University course lectures on physics-based animation
- Depth Precision Visualized
A visual explanation of floating-point depth buffer precision, and introduces nonlinear depth mapping
- Deriving Lambertian BRDF from first principles
A derivation of the Lambertian BRDF from first principles using calculus
- Destiny's Multithreaded Rendering Architecture (GDC 2015)
Talks about the design and multithreaded renderer architecture for the game Destiny
- What is direct lighting (next event estimation) in a ray tracer?
An explanation of direct lighting and next event estimation in ray tracers
- Physically Based Shading at Disney (2012)
Disney's influential SIGGRAPH paper on their principled BRDF model.
- Data-Oriented Design
This book is a fabulous read to get a deeper understanding of what data-oriented design is about. It goes beyond the often-mentioned cache misses, SOA, ECS, or anti-OOP rants.
- Dual Contouring Tutorial
A tutorial explaining the dual contouring algorithm
- Efficient Shadows from Many Lights (2015)
Techniques for efficiently rendering shadows from many light sources in real-time
- Arseny Kapoulkine: Writing an efficient Vulkan renderer (2020)
Best practices for writing a high-performance Vulkan renderer
- 5 ways to draw an outline
Discussed 5 techniques for rendering an outline around an object
- Fix Your Timestep! (2004)
Classic article on implementing a fixed timestep game loop for stable physics simulation.
- Gimbal lock confusion
A stackoverflow answer on why the Gimbal lock occurs
- A trip through the Graphics Pipeline 2011
A series of blog posts written about graphics pipelines as actually implemented by GPUs
- Graphics Pipelines for Young Bloods
Describes forward/defered shading techniques and various tradeoffs
- Grass Rendering Series
Blog post series talks about theory of grass rendering, how to implement that in Godot, and adding animation, interaction, and LOD
- Hash Functions for GPU Rendering (2020)
This paper analyze the hash functions to make recommendations on which hash functions offer the best quality/speed trade-off for the range of needs, from high-performance/low-quality to high-quality/low-performance. It also present a new class of hash tuned for multidimensional input and output that performs well at the high-quality end of this spectrum.
- High-Performance Software Rasterization on GPUs (2011)
A paper describing high-performance software rasterization techniques running on GPUs.
- Sascha Willems's How to Vulkan in 2026
A minimalist tutorial from Sascha Willems on how to use the Vulkan graphics API in 2026. The idea is to get people started with rasterization in Vulkan using commonly supported features to make the API easier to use.
- Experiments in Hybrid Raytraced Shadows
Explores combining rasterization and ray tracing for shadow rendering
- Immersive Linear Algebra
Free online linear algebra book with fully interactive figures
- John Chapman SSAO Tutorial (2013)
A tutorial on implementing SSAO
- KhronosGroup glTF Sample Assets
A collection of glTF sample models from Khronos for testing glTF implementations.
- Know your SSAO artifacts (2013)
A guide to identifying and mitigating common SSAO rendering artifacts
- Learn OpenGL guest article: Cascaded Shadow Mapping
Learn OpenGL guest article on cascaded shadow mapping, which resolves the resolution issues of the naive shadow mapping
- Learn OpenGL guest article: Skeletal Animation
Learn OpenGL guest article on skeletal animation
- Let's remove Quaternions from every 3D Engine
Introduces rotors in Geometric Algebra as an alternative to quaternions for 3D rotations.
- Life of a triangle - NVIDIA's logical pipeline (2015)
This article walks through how NVIDIA GPUs process a triangle from draw call to final pixel output
- Interactive explanation of marching cubes and dual contouring
An interactive explanation comparing marching cubes and dual contouring iso-surface algorithms
- McGuire Computer Graphics Archive
A collection of 3D scenes and models in OBJ format for research and testing.
- Megakernels Considered Harmful: Wavefront Path Tracing on GPUs (2013)
Introduced wavefront path tracing
- Memory allocation strategies article series
A series of articles talking about custom memory allocators, starting from the simple arena allocators, to more complicated ones like the stack allocators, pool allocators, free list allocators, and finally buddy allocators.
- Modern (Bindless) Sprite Batch for Vulkan (2021)
A guide to implementing bindless sprite batching in one draw call in Vulkan
- NVIDIA Vulkan Ray Tracing Tutorials
This repository provides a comprehensive learning resource for Vulkan ray tracing, featuring a progressive step-by-step tutorial that transforms a rasterization application into a fully functional ray tracing implementation
- Parallel Prefix Sum (Scan) with CUDA (2007)
A classic reference on implementing a work-efficient parallel prefix sum algorithms
- Physically based rendering from first principles
An interactive article exploring the physical phenomena that create light and the fundamental laws governing its interaction with matter, and gradually introduce models of creating physically realistic renderings
- Percentage-Closer Soft Shadows
NVIDIA paper introducing Percentage-Closer Soft Shadows (PCSS), based on shadow mapping and percentage‐closer filtering (PCF)
- Procedural Generation with Wave Function Collapse
Build an intuition for how and why the wave function collapse algorithm works
- Raw DirectX 12
An introduction to writing a simple Hello Triangle DirectX 12 application
- GPU path tracing tutorial series (2015)
Blog post series on implementing path tracer on GPU
- Raytraced Shadows in Call of Duty: Modern Warfare (2020)
The story behind how (almost) pixel perfect shadows were introduced into Modern Warfare to make it even more realistic
- Readings on Physically Based Rendering
A collection of resources related to physically based rendering (last updated in 2018)
- Responsive Real-Time Grass Rendering for General 3D Scenes (2017)
A paper on real-time grass rendering with realistic physics with the help of compute shader and the hardware-tessellation pipeline
- The RTX Shader Binding Table Three Ways (2019)
Explains the shader binding table in DX12, Vulkan, and OptiX
- Skeletal animation in glTF
A guide of skeletal animation and how to implement it with glTF
- Screen-Space Reflections Explained (2021)
A explanation of screen-space reflection with code snippet
- Object Intersections - Real-Time Rendering
Tables of intersection algorithms for various geometric primitives
- OGLDev Tutorial 30: Basic Tessellation
tutorial on tessellation shaders
- The 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.
- Yet another blog explaining Vulkan synchronization (2019)
Another blog post trying to instill a mental model on Vulkan synchronization to readers
- Thinking Parallel (2012)
Three part series on parallel algorithms, covering GPU collision detection, tree traversal, and tree construction.
- TinyBVH
Single-header zero-dependency BVH construction and traversal library
- Tracing Ray Differentials (1999)
Useful paper that goes over ray differentials and selecting proper mip level when doing raytracing
- The Transvoxel Algorithm
Eric Lengyel's voxel meshing algorithm for seamlessly stitching together neighboring triangle meshes generated from voxel data at differing resolutions so that level of detail.
- The Quest for Very Wide Outlines
An exploration of techniques for rendering very wide outlines around objects.
- Visualizing quaternions by 3blue1brown
A great intereactive introduction/refresher for quaternions. It focuses on intuition rather than mathematical definitions
- vk-bootstrap
A utility library that jump starts initialization of Vulkan
- VK_KHR_dynamic_rendering tutorial
This tutorial shows how to use the VK_KHR_dynamic_rendering extension in Vulkan. It shows the steps required to load the extension, use it, and how it affects related components such as pipeline creation
- volk
A meta-loader for Vulkan that simplifies dynamic loading of Vulkan and automatically loads extensions
- Vulkan Timeline Semaphores
Khronos blog post introducing Vulkan timeline semaphores for GPU synchronization
- 3D Graphics Rendering Cookbook
A book that covers and compares both the OpenGL and Vulkan APIs, while also covering various recipes about making a renderer.
- Foundations of Game Engine Development, Volume 1: Mathematics 1st Edition
Introduces math routines with implementations. It also touches Grassman algebra
- Fundamentals of Computer Graphics, 5th Edition
Focusing on geometric intuition, the book gives the necessary information for understanding how images get onto the screen by using the complementary approaches of ray tracing and rasterization
- Mathematics for Computer Graphics
comprehensive range of mathematical techniques and problem-solving strategies associated with computer graphics
- The Ray Tracer Challenge
This book challenges you to build a Whitted-style ray tracer from scratch. Unlike many tutorials, it doesn't provide code and follows a unique test-first approach, describing only test specifications and algorithms.
- Real-time Collision Detection (2005)
A good reference book on collision detection, collision response, and various acceleration data structures.