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.
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.
Series of online books teaching the basics of path tracing
A long-running weekly newsletter summarizing graphics-related articles from the past week
A comprehensive introduction to various topics in computer graphics
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
Comprehensive reference on physically based rendering techniques
Writing a software rasterization from scratch to demonstrate how graphics APIs work.
Free book that contains chapters on physically-based shading and rendering, coding projects, and reference pages.
A course that introduce GPU parallel programming with a Computer Graphics flavor
It is a good idea to keep it open while doing Vulkan programming
A blog post series delving into building a BVH from scratch
A guide about avoiding common programmer errors by using modern OpenGL (4.5+)
The goal of this guide is to understand Vulkan correctly, and act as a stepping stone for then working in your own projects.
PBRT book chapter on how to build a BVH
An introduction to Monte Carlo ray tracing
An improvement of the official OpenGL documentation
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.
A free online book covering design patterns commonly used in game development
A tutorial for the WebGPU API using Rust and the wgpu library
Basic tutorial on shadow mapping
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.
Lecture series on Vulkan programming from TU Wien
An introduction to 2D and 3D computer graphics using WebGL2
A series of lessons or tutorials about webgpu
This is Turner Whitted's original Ray Tracing paper
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.
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
Great overview, and also spend significant time on the half-edge data structure
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
The classic Kajiya rendering equation paper introduced the "rendering equation" and the path tracing algorithm
The official WebGPU API specification
A good introduction on the use of different types of noise for random number generation, focusing on applications in real time rendering
Scratchapixel's in-depth introduction to volumetric rendering using ray marching
In depth introduction to the "frames in flight" concept in Vulkan
Builds on the foundation from "Drawing Lines is Hard" and uses instance rendering to draw lines
Microsoft's official programming guide for DirectX 12
The book focus on cover fundamental 3D math concepts for beginners
Excellent overview paper on BVH
A glossary of terms used in compute shader programming. Provides cross-API comparisons
Chapter from Game Programming Patterns explaining different design decisions for a game loop
Continues instanced line rendering, introducing alpha-blending for triangulated lines.
Four part lecture on essential math for game developers by Freya Holmér
Blog post series on implementing a CPU rasterizer from scratch
Introduces the theory of tone mapping and discusses commonly used tone mapping operators
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
A relatively small, beginner-friendly path tracing tutorial using Vulkan's ray tracing API
Reference implementation and explanation of the marching cubes algorithm
An overview of different sampling strategies used in ray tracing.
A step by step guidebook for digital pixel pushers trying to get a firm grasp on colour
Khronos blog post explaining Vulkan synchronization concepts (with notes on Synchronization2)
An advanced book focused on light transport theory for global illumination.
Classic paper introducing a fast and simple filter for ray tracing denoising.
An interactive introduction to barycentric coordinates. It starts with linear-interpolation and generalize it to triangles and higher-dimensions.
Scenes in Tungsten, Mitsuba, and pbrt-v4 formats
Free online book focusing on high-performance computing on CPU
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
A blog post on implementing a hybrid ray tracing rendering pipeline
Public Domain materials for Physically Based Rendering
A visual explanation of floating-point depth buffer precision, and introduces nonlinear depth mapping
An explanation of direct lighting and next event estimation in ray tracers
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.
Best practices for writing a high-performance Vulkan renderer
Discussed 5 techniques for rendering an outline around an object
Classic article on implementing a fixed timestep game loop for stable physics simulation.
A stackoverflow answer on why the Gimbal lock occurs
Describes forward/defered shading techniques and various tradeoffs
A paper describing high-performance software rasterization techniques running on GPUs.
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.
Explores combining rasterization and ray tracing for shadow rendering
Free online linear algebra book with fully interactive figures
A tutorial on implementing SSAO
Learn OpenGL guest article on cascaded shadow mapping, which resolves the resolution issues of the naive shadow mapping
Introduced wavefront path tracing
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.
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
A classic reference on implementing a work-efficient parallel prefix sum algorithms
NVIDIA paper introducing Percentage-Closer Soft Shadows (PCSS), based on shadow mapping and percentage‐closer filtering (PCF)
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.
Single-header zero-dependency BVH construction and traversal library
A great intereactive introduction/refresher for quaternions. It focuses on intuition rather than mathematical definitions
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
Talks about the design and multithreaded renderer architecture for the game Destiny
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.
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.
A tutorial explaining the dual contouring algorithm
Introduces rotors in Geometric Algebra as an alternative to quaternions for 3D rotations.
Article from the "blue noise guy" talking about how to apply blue noise to raytraced soft shadows
University course lectures on physics-based animation
Techniques for efficiently rendering shadows from many light sources in real-time
A series of blog posts written about graphics pipelines as actually implemented by GPUs
Blog post series talks about theory of grass rendering, how to implement that in Godot, and adding animation, interaction, and LOD
A collection of glTF sample models from Khronos for testing glTF implementations.
This article walks through how NVIDIA GPUs process a triangle from draw call to final pixel output
A collection of 3D scenes and models in OBJ format for research and testing.
A paper on real-time grass rendering with realistic physics with the help of compute shader and the hardware-tessellation pipeline
tutorial on tessellation shaders
Another blog post trying to instill a mental model on Vulkan synchronization to readers
Three part series on parallel algorithms, covering GPU collision detection, tree traversal, and tree construction.
An exploration of techniques for rendering very wide outlines around objects.
Khronos blog post introducing Vulkan timeline semaphores for GPU synchronization
A book that covers and compares both the OpenGL and Vulkan APIs, while also covering various recipes about making a renderer.
Introduces math routines with implementations. It also touches Grassman algebra
comprehensive range of mathematical techniques and problem-solving strategies associated with computer graphics
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.
A good reference book on collision detection, collision response, and various acceleration data structures.
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