resources
Graphics Programming Resources List
https://github.com/Graphics-Programming-Virtual-Meetup/resources
Last synced: about 6 hours ago
JSON representation
-
General Programming
-
Meta-links
-
High-level Programming
-
Engine Development
-
Performance Optimization
- Algorithms for Modern Hardware - This book contains great info on getting the best performance by looking at the actual hardware.
-
Game loop
-
Floating-point numbers
- Floating-point in mobile shaders
- Onboarding floating-point - A series about floating-point numbers by Mike Acton
-
Memory Allocation & Management
-
-
Meta-links
- Awesome Computer Vision
- Awesome Gamedev - Lots of graphics-related stuff.
- Computer Graphics Resources Materials for Self Study
- Graphics Studies Compilation - Adrian Courrèges - Handy compilation of frame breakdown articles
- GPU Optimization for GameDev
- Volumetric Clouds Resources List
- Physics-Based Animation - Contains learning resources and papers.
- Graphics Programming Weekly - Article Database
- Readings on Physically Based Rendering - A collection of resources related to PBR rendering
- Resources for Beginning Graphics Programming
- Digital Morphogenesis Resources - Info About Some Different Simulation Techniques
- graphics resources
- Awesome Graphics Libraries - engines & frameworks
- Fun with Computer Graphics
- Awesome Computer Graphics (waitin2010)
- Awesome Computer Graphics (luisnts)
- Physics-Based Animation - Contains learning resources and papers.
-
APIs
-
Vulkan
- Awesome Vulkan
- Vulkan Guide - The best "Vulkan Tutorial" available.
- 3D Graphics Rendering Cookbook
- Great Resources - Vulkan Guide
- VK_KHR_dynamic_rendering tutorial - A tutorial to Vulkan's dynamic rendering extension
- Khronos: Streamlining Render Passes - Introduces the [VK_KHR_dynamic_rendering](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_dynamic_rendering.html) extension.
- Khronos Talk on Descriptor Indexing
- Vulkan Descriptor Indexing for Mobile
- OurMachinery's Moving The Machinery to Bindless
- DethRaid's Vulkan Descriptor Indexing
- A note on Descriptor Indexing
- Vulkan Pills 1: Bindless Textures
- TheMaister's Yet another blog explaining Vulkan synchronization
- Understanding Vulkan Synchronization
- Vulkan Timeline Semaphores
- A simple Vulkan Compute example
- Vulkan Subgroup tutorial. AKA wavefronts
- Writing an efficient Vulkan renderer
- volk - Meta-loader for Vulkan that allows you to dynamically load entry points required to use Vulkan. It also simplifies the use of Vulkan extensions.
- SPIRV-Reflect - Can be used to extract descriptors and push constant information from SPIRV.
- VulkanMemoryAllocator - Memory allocation library that simplifies Vulkan memory allocation and provides decent performance.
- vk_mini_path_tracer tutorial - A relatively small tutorial that focuses on path tracing using Vulkan's ray tracing API.
- vk-bootstrap - Library that simplifies the Vulkan initialization boilerplate.
- TU Wien: Vulkan Lecture Series
- Spec - It is a good idea to keep it open while doing Vulkan Programming.
- API without Secrets: The Practical Approach to Vulkan* - Part 1
- Vulkan Descriptor Indexing for Mobile
- Wicked Engine: Bindless Descriptors
- A simple Vulkan Compute example
- Vulkan Diagram
-
Ray Tracing API
- Ray Tracing Gems II - An extension for the above article
- The RTX Shader Binding Table Three Ways - Talks about shader binding table with RX12, Vulkan, and Optix
- The RTX Shader Binding Table Three Ways - Talks about shader binding table with RX12, Vulkan, and Optix
-
OpenGL
- GLConstantsTranslator - This page has the names of most OpenGL constants with their respective decimal and hex values. It is useful when certain functions return GL constants.
- Awesome OpenGL - Curated List for OpenGL.
- Using Modern OpenGL to Avoid Common Errors - Talks about using features of post-4.2 OpenGL
- docs.gl - OpenGL API Documentation.
-
DirectX 12
- Wicked Engine: Bindless Descriptors
- Reader Question Answered 1 - Learning D3D12 - A roadmap for learning DirectX 12
- Raw DirectX 12 - An introduction to writing a simple Hello Triangle DirectX 12 application.
- Learning DirectX 12
- Direct3D 12 programming guide
- Resource Binding - Direct3D 12 Programming Guide
- Bindless Texturing for Deferred Rendering and Decals
- Binding Bindlessly
- Direct3D 12 programming guide
- Resource Binding - Direct3D 12 Programming Guide
-
WebGL
-
WebGPU
- Learn wgpu - Tutorial of WebGPU API using Rust and the wgpu library.
- Spec
-
-
Rasterization
-
Graphics Pipeline
-
Shading Techniques
- Graphics Pipelines for Young Bloods - Discuss various tradeoffs between different graphics pipeline techniques
- A Primer On Efficient Rendering Algorithms & Clustered Shading - Same as the above article but delves deeper with clustered shading
-
Culling
-
Depth Buffer
-
Software Rasterization
- A Parallel Algorithm for Polygon Rasterization
- Scratchapixel: Rasterization Stage
- Triangle rasterization in practice
- Optimizing the basic rasterizer
- High-Performance Software Rasterization on GPUs
- Line Rasterization slides, MIT EECS 6.837, Teller and Durand
- A Parallel Algorithm for Polygon Rasterization
- ssloy/tinyrenderer - A short tutorial on writing a software rasterizer. Be careful that the tutorial has some rough edges.
- Scratchapixel: Rasterization Stage
- Line Rasterization slides, MIT EECS 6.837, Teller and Durand
-
-
Beginner friendly
- 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.
- 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.
- ShaderToy - Huge collection of open source techniques to refer to, ranging from very basic to more advanced topics.
- Ray Tracing in One Weekend series - Those three short books explain basic concepts of path tracing and implement a software renderer from scratch.
- Catlike Coding - Focuses on C# and shaders in Unity.
-
Assets
-
Polygonal Model & Scene
- PolyHaven - Public 3d asset library, also CC0
- The Base Mesh - CC0 mesh collection
- Three Dimensional Scans - some three-dimensional scans of animals and statues.
- McGuire Computer Graphics Archive - OBJ format scenes.
- ORCA: Open Research Content Archive - Free large graphics scene samples.
- Rendering Resources - Benedikt Bitterli - Scenes in Tungsten, Mitsuba, and pbrt-v3 formats.
- Stanford 3D Scanning Repository - a bunch of scanned reconstructions
- MIT CSAIL Sample OBJ Models - A couple of models provided by MIT<!-- markdown-link-check-disable-next-line -->
- Intel Sponza and Graphics Research Samples Library - Intel's revamped high-resolution Sponza model and a couple of related pieces
- Quaternius Free Game Assets - Low poly models, CC0
- KhronosGroup glTF Sample Models
- McGuire Computer Graphics Archive - OBJ format scenes.
- NASA 3D Resources - Some assets of satellites, celestial bodies, etc. Various formats.
- The Base Mesh - CC0 mesh collection
-
Materials
- Physically Based - A database of physically based values for CG artists
- ambientCG - Public Domain materials for Physically Based Rendering.
-
Voxel Data
- TU Wien Volume Data - Listed in their collection of publications.
- Open Scientific Visualization Datasets - Large collection of CT scans of various objects.
- Stanford Volume Archive - Several volume datasets (CT/MRI).
- NIH Visible Human Dataset - Cryosection and MRI/CT data of a male and female cadaver.
- MorphoSource - Enormous library of 2D and 3D data, mesh and voxel, of biological samples and cultural objects.
- Osirix MANIX and other test DICOMs
-
-
Math
-
Books
- immersive linear algebra - Free online book with interactive figures.
- Mathematics for Computer Graphics
- Mathematics for 3D Game Programming and Computer Graphics, 3rd Edition
- Foundations of Game Engine Development, Volume 1: Mathematics - Introduces math routines with implementations. It also touches Grassman algebra.
-
Tutorials
- Math For Game Devs - Video Series from Freya Holmér
- Math For Game Devs - Video Series from Freya Holmér
-
Homogeneous Coordinate
-
Rotation
-
Quaternions
- Visualizing quaternions - A great intereactive introduction/refresher for quaternions. It focuses on intuition rather than mathematical definitions.
-
Linear Algebra / Matrices
- GPUOpen Matrix Compendium
- 3Blue1Brown Youtube Channel - general math topics, good for linear algebra and calculus.
-
Geometric Algebra
- Let's remove Quaternions from every 3D Engine - Introduces *Rotors* in Geometric Algebra.
-
Curves and Surfaces
- The Beauty of Bézier Curves
- Bézier Curves - An interactive explanation and exploration of Bezier curves
-
Implementing Math Library
- On Vector Math Libraries
- GDC18 - Linear Algebra Upgraded - Designs an affine space type library with distinct vector and point types, and also uses template and union hacks to implement vector swizzling in C++.
- CppCon 2018: Valentin Galea “Rapid Prototyping of Graphics Shaders in Modern C++” - Also implemented swizzling with similar techniques.
- GDC18 - Linear Algebra Upgraded - Designs an affine space type library with distinct vector and point types, and also uses template and union hacks to implement vector swizzling in C++.
-
Circular/Spherical harmonics
- Circular Harmonics: Digging in circles
- Spherical Harmonics for Beginners - Cover the fundamentals of using Spherical Harmonics without delving into the math deeply
- Spherical Harmonics in Graphics: A Brief Overview
- Spherical Harmonics - Insights And Fundamentals
- Spherical Harmonic Lighting
- Stupid Spherical Harmonics (SH) Tricks
-
Geometry
-
Barycentric Coordinates
- Barycentric Coordinates - An interactive introduction to Barycentric Coordinates
-
-
Tools/libraries
-
Debuggers
- RenderDoc
- Nvidia Nsight Graphics
- SpectorJS (WebGL)
- Radeon™ GPU Profiler (AMD) - - markdown-link-check-disable-next-line -->
-
Denoiser
-
Profilers
-
-
Overview
-
Courses
-
Books
- Graphics Codex - Free book that contains chapters on physically-based shading and rendering, coding projects, and reference pages.
- Real-Time Rendering, Fourth Edition
- Fundamentals of Computer Graphics 5th Edition
- Graphics Codex - Free book that contains chapters on physically-based shading and rendering, coding projects, and reference pages.
-
-
Advice
-
Courses
- How to learn graphics programming (but not in a hurry): self-study edition - A Twitter thread on how to learn graphics programming
- Finding Your Home in Game Graphics Programming - Presents a high-level overview of the rendering world and resources for getting started in the different specializations
- Insider guide to tech interviews - An in-depth analysis of the interview process for experienced developers
- Graphics Programming – Where To Start? - Advices and resource recommendation for beginning learner
-
-
Ray Tracing
-
Intro to Ray Tracing
- An Improved Illumination Model for Shaded Display - Turner Whitted's original Ray Tracing paper.
- Lecture 18: Monte Carlo Rendering (CMU 15-462/662) - Including a very good introduction to importance sampling.
- Global Illumination Compendium - overview of ray tracing/path tracing techniques.
- Creating a physically-based path tracer
- An Improved Illumination Model for Shaded Display - Turner Whitted's original Ray Tracing paper.
- Lecture 18: Monte Carlo Rendering (CMU 15-462/662) - Including a very good introduction to importance sampling.
- Global Illumination Compendium - overview of ray tracing/path tracing techniques.
- Creating a physically-based path tracer
-
Ray Tracing Books
- Physically Based Rendering: From Theory To Implementation Third Edition - The definitive book for offline rendering.
- Ray Tracing Gems - Like other "gems" books, it contains standalone chapters on various ray tracing topics.
- Advanced Global Illumination - An advanced book that focuses on light transport theory.
-
Algorithms
- Bidirectional Estimators for Light Transport - Introduces *bidirectional path tracing*.
- 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*
-
BVH
- A Survey on Bounding Volume Hierarchies for Ray Tracing - Excellent overview paper on BVH.
- bvh - A modern C++ BVH construction and traversal library - Implements various algorithms for BVH traversal and construction.
-
Sampling & Variance Reduction
- Lecture 19: Variance Reduction (CMU 15-462/662)
- Flavors of Sampling in Ray Tracing
- Stratified Sampling of Spherical Triangles
- Distributing Monte Carlo Errors as a Blue Noise in Screen Space by Permuting Pixel Seeds Between Frames
- A Low-Discrepancy Sampler that Distributes Monte Carlo Errors as a Blue Noise in Screen Space
- Rendering in Real Time with Spatiotemporal Blue Noise Textures
- What is direct lighting (next event estimation) in a ray tracer?
- Much Ado About Sampling
- Spatiotemporal reservoir resampling for real-time ray tracing with dynamic direct lighting - combines RIS+MIS with reservoir sampling and demonstrates the reservoir merging capability to perform resampling across space and time
- Flavors of Sampling in Ray Tracing
- Lecture 19: Variance Reduction (CMU 15-462/662)
- Stratified Sampling of Spherical Triangles
- Distributing Monte Carlo Errors as a Blue Noise in Screen Space by Permuting Pixel Seeds Between Frames
- Rendering in Real Time with Spatiotemporal Blue Noise Textures
-
Intersection
- Static Object Intersections - Real-Time Rendering Resource Page - A collection of intersection algorithms.
-
Denoising
- Ray Tracing Denoising - Alain.xyz
- Ray Tracing Filtering - Alain.xyz
- Edge-Avoiding À-Trous Wavelet Transform for fast Global Illumination Filtering - Classic paper that introduces a fast and simple filter for real-time ray tracing denoising
-
GPU Ray Tracing
-
Ray Tracing Courses
- Dartmouth Rendering Algorithms (Fall21) - The course nicely fills the gap between a Ray Tracing in One Weekend style toy renderer to a more general and fully-fledged renderer that PBRT describes.
-
-
Graphics Effects
-
Normal Mapping
-
Shadow
-
Ambient Occlusion
-
Reflection
-
Transparency
-
Ray Marching and SDF
- Graphics Codex: Ray Marching
- soft shadows in raymarched SDFs - 2010
- Distant functions for primitives - Inigo Quilez
- Distant functions for primitives - Inigo Quilez
- soft shadows in raymarched SDFs - 2010
- Graphics Codex: Ray Marching
- Distant functions for primitives - Inigo Quilez
- soft shadows in raymarched SDFs - 2010
-
Line, Edge, and Outline Drawing
- Drawing Lines is Hard - Summarizes the problem of GPU line primitives and introduces techniques for drawing triangulated lines.
- Instanced Line Rendering Part I - Builds on the foundation from "Drawing Lines is Hard" and uses instance rendering to draw lines.
- Instanced Line Rendering Part II: Alpha blending - Continue of the above article, and introduces a way to do alpha-blending with triangulated lines.
- The Quest for Very Wide Outlines
- 5 ways to draw an outline
-
Text Rendering
-
Tessellation
-
Dithering
- Dithering on the GPU - describe a novel algorithm for ordered dithering based on an arbitrary palette
- Anisoptera Games - How to Fix Color Banding with Dithering - Dithering for functional purposes (fixing color banding on gradients).
-
Sprite Rendering
-
Atmosphere Scattering
-
Grass Rendering
- Responsive Real-Time Grass Rendering for General 3D Scenes
- Procedural grass rendering - Outerra - Is an inspiration of the following talk
- Procedural Grass in 'Ghost of Tsushima'
-
Hash Functions
-
Voxel Rendering
-
Volume Rendering
- Structured Volume Sampling - MIT-licensed implementation of the Structured Volume Sampling technique, along with a simple framework for comparing other techniques.
-
-
PBR
-
Grass Rendering
- Physically Based Rendering in Filament
- PBR - Learn OpenGL
- 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
- Basics of physically-based rendering
- Real Shading in Unreal Engine 4 - discusses the PBR model adopted by Epic Games in their 4th Unreal Engine installment. A large part of Learn OpenGL PBR chapter is adapted from this source
-
-
Textures
-
Mipmapping
- Pyramidal Parametrics - The original Mipmap paper.
- Pyramidal Parametrics - The original Mipmap paper.
-
Texture Compression
- Understanding BCn Texture Compression Formats - describes a family of lossy hardware-based texture compression formats called BCn
-
Texture Bombing
- GPU Gems Chapter 20. Texture Bombing
- Texture bombing 3 samples - a shader from Inigo Quilez (modified by huwb) that shows how to perform the GPU Gems technique using 3 texture samples instead of 4!
- On Histogram-Preserving Blending for Randomized Texture Tiling - attempts to resolve artifacts you get when blending two textures together (also only using 3 texture samples, plus a lookup table per texture
-
-
Shader Programming
-
Texture Bombing
- shadertoy smoothstep demo
- Shader Derivative Functions - Useful for normals.
- How to read shader assembly
- ShaderToy Advanced Tricks
- Shader Derivative Functions - Useful for normals.
-
-
Compute
-
Introduction to compute shader
-
GPU Architecture
- CIS 565 GPU Programming and Architecture - A course that introduce parallel programming with a Computer Graphics flavor.
- Gentle introduction to GPUs inner workings - This article summarizes some lower-level aspects of how GPU executes. It uses the Vulkan API terminology, but the concept is largely platform-independent.
- 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
- RDNA Architecture Whitepaper
- AMU RDNA2 Performance guide
- The Peak-Performance-Percentage Analysis Method for Optimizing Any GPU Workload
- [video
- AMU RDNA2 Performance guide
- The Peak-Performance-Percentage Analysis Method for Optimizing Any GPU Workload
-
Parallel Algorithms
-
Atomics
-
-
Color, HDR, and Tone Mapping
-
Atomics
- Supporting Native HDR Monitors - OurMachinery
- Introduction to Color Theory for Games, Art and Tech - Shahriar Shahrabi
- Tone Mapping - Introduces the theory of Tone Mapping and talks about some commonly used Tone Mapping Operators
-
-
Sampling and anti-aliasing
-
Atomics
- A Pixel is not a Little Square! - Classic paper on misconception of "a pixel is a little square." It also serves as an introduction to sampling.
- Basics of Image Resampling
- Computing the Discrepancy with Applications to Supersampling Patterns
- Generating Antialiased Images at Low Sampling Densities
- Temporal Anti Aliasing – Step by Step
- The Accumulation Buffer: Hardware Support for High-Quality Rendering (SIGGRAPH 1990)
- A Pixel is not a Little Square! - Classic paper on misconception of "a pixel is a little square." It also serves as an introduction to sampling.
- Computing the Discrepancy with Applications to Supersampling Patterns
- Generating Antialiased Images at Low Sampling Densities
-
-
Animation
-
Geometry
-
Geometry representations
- Lecture 10: Meshes and Manifolds (CMU 15-462/662) - Great overview, and also spend significant time on the half-edge data structure
- Lecture 10: Meshes and Manifolds (CMU 15-462/662) - Great overview, and also spend significant time on the half-edge data structure
-
Iso-surface methods
-
Libraries
- Geometry Central - A modern C++ library of data structures and algorithms for geometry processing, with a particular focus on surface meshes.
-
-
Physics and Simulation
-
Physics-Based Animation
- SIGGRAPH University 2019 Course - An Introduction to Physics-Based Animation - A three-hour fast-paced introduction to Physics-Based Animation
- CSC417/CSC2549-Physics-based Animation Fall 2021 - Introductory lecture for a course in physics-based animation.
- SIGGRAPH University 2019 Course - An Introduction to Physics-Based Animation - A three-hour fast-paced introduction to Physics-Based Animation
- CSC417/CSC2549-Physics-based Animation Fall 2021 - Introductory lecture for a course in physics-based animation.
-
Attractors
-
Optics
-
-
System Design
-
Renderer Architecture
- SIGGRAPH 2021 REAC: Unity Rendering Architecture
- Efficiently rendering glTF models - A case study on how to design a renderer under modern graphics APIs that can take diverse input
-
GPU-driven rendering
-
-
Scene Description
-
GPU-driven rendering
- Siggraph 2019 Hydra - Presentation slides for Hydra, which is an open-source framework to transport live scene graph data to renderers.
- Siggraph 2019 Hydra - Presentation slides for Hydra, which is an open-source framework to transport live scene graph data to renderers.
-
Programming Languages
Categories
Graphics Effects
51
APIs
50
Ray Tracing
35
Math
27
Compute
23
Assets
22
General Programming
20
Meta-links
17
Rasterization
17
Tools/libraries
10
Sampling and anti-aliasing
9
Overview
8
Geometry
8
PBR
8
Physics and Simulation
7
Textures
6
Animation
6
Beginner friendly
5
Shader Programming
5
System Design
4
Advice
4
Color, HDR, and Tone Mapping
3
Scene Description
2
Sub Categories
Vulkan
30
Atomics
20
Sampling & Variance Reduction
14
Polygonal Model & Scene
14
GPU Architecture
12
Grass Rendering
11
Software Rasterization
10
DirectX 12
10
Texture Bombing
8
Courses
8
Memory Allocation & Management
8
Intro to Ray Tracing
8
Books
8
Ray Marching and SDF
8
Shadow
7
Ambient Occlusion
7
Voxel Data
6
Circular/Spherical harmonics
6
Transparency
6
Iso-surface methods
5
Line, Edge, and Outline Drawing
5
Parallel Algorithms
5
Physics-Based Animation
4
Implementing Math Library
4
GPU-driven rendering
4
Introduction to compute shader
4
Debuggers
4
OpenGL
4
Atmosphere Scattering
3
Denoiser
3
Meta-links
3
Profilers
3
Ray Tracing Books
3
Ray Tracing API
3
Engine Development
3
Denoising
3
Attractors
2
Renderer Architecture
2
Dithering
2
Linear Algebra / Matrices
2
Mipmapping
2
Geometry
2
Game loop
2
Algorithms
2
Curves and Surfaces
2
Culling
2
Graphics Pipeline
2
Materials
2
Floating-point numbers
2
Geometry representations
2
WebGPU
2
Normal Mapping
2
BVH
2
Text Rendering
2
Shading Techniques
2
Tutorials
2
Volume Rendering
1
Optics
1
Rotation
1
Hash Functions
1
Ray Tracing Courses
1
Reflection
1
Quaternions
1
Homogeneous Coordinate
1
Tessellation
1
Intersection
1
Depth Buffer
1
Voxel Rendering
1
Performance Optimization
1
Barycentric Coordinates
1
Texture Compression
1
GPU Ray Tracing
1
High-level Programming
1
WebGL
1
Sprite Rendering
1
Libraries
1
Geometric Algebra
1
Keywords
vulkan
5
opengl
3
rendering-engine
2
c-plus-plus
2
performance
2
profiler
2
games
2
gamedev
2
game-engine
2
awesome
2
awesome-list
2
cpp
2
computer-graphics
2
3d-graphics
2
3d
2
raytracing
2
pattern-formation
1
morphogenesis
1
growth-algorithms
1
computational-geometry
1
procedural-generation
1
simulation
1
research
1
engine
1
voxel-space-engine
1
fun
1
voxel-engine
1
voxel
1
rendering-algorithms
1
rust
1
art
1
board-games
1
curated
1
design
1
frameworks
1
game-design
1
game-development
1
game-jam
1
game-programming
1
list
1
amd
1
arm
1
khronos
1
nvidia
1
qualcomm
1
vulkan-api
1
vulkan-libraries
1
3d-engine
1
comanche
1
game-comanche
1