Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
resources
Graphics Programming Resources List
https://github.com/GraphicsProgrammingVirtualMeetup/resources
Last synced: 1 day ago
JSON representation

Overview

Courses

Books
 Graphics Codex  Free book that contains chapters on physicallybased shading and rendering, coding projects, and reference pages.
 RealTime Rendering, Fourth Edition
 Fundamentals of Computer Graphics 5th Edition
 Graphics Codex  Free book that contains chapters on physicallybased shading and rendering, coding projects, and reference pages.


Beginner friendly
 Catlike Coding  Focuses on C# and shaders in Unity.
 ShaderToy  Huge collection of open source techniques to refer to, ranging from very basic to more advanced topics.
 Learn OpenGL  Learn OpenGL is the definitive resource for learning realtime 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.
 Book Of Shaders  The author introduces shaders from an artistic perspective, and the book covers many topics that more engineeringfocused resources such as "Learn OpenGL" won't cover.

Metalinks
 GPU Optimization for GameDev
 Volumetric Clouds Resources List
 Awesome Computer Vision
 Awesome Gamedev  Lots of graphicsrelated stuff.
 PhysicsBased Animation  Contains learning resources and papers.
 Graphics Programming Weekly  Article Database
 Graphics Studies Compilation  Adrian Courrèges  Handy compilation of frame breakdown articles
 Readings on Physically Based Rendering  A collection of resources related to PBR rendering
 Computer Graphics Resources Materials for Self Study
 Resources for Beginning Graphics Programming
 graphics resources
 Awesome Computer Graphics (waitin2010)
 Fun with Computer Graphics
 Awesome Graphics Libraries  engines & frameworks

Advice

Courses
 How to learn graphics programming (but not in a hurry): selfstudy edition  A Twitter thread on how to learn graphics programming
 Finding Your Home in Game Graphics Programming  Presents a highlevel overview of the rendering world and resources for getting started in the different specializations
 Insider guide to tech interviews  An indepth analysis of the interview process for experienced developers
 Graphics Programming – Where To Start?  Advices and resource recommendation for beginning learner


Math

Tutorials
 Math For Game Devs  Video Series from Freya Holmér

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.

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.

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


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 15462/662)  Including a very good introduction to importance sampling.
 Global Illumination Compendium  overview of ray tracing/path tracing techniques.
 Creating a physicallybased path tracer
 Lecture 18: Monte Carlo Rendering (CMU 15462/662)  Including a very good introduction to importance sampling.
 An Improved Illumination Model for Shaded Display  Turner Whitted's original Ray Tracing paper.

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 Awardwinning 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.

Sampling & Variance Reduction
 Lecture 19: Variance Reduction (CMU 15462/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 LowDiscrepancy 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 realtime 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
 Lecture 19: Variance Reduction (CMU 15462/662)
 Distributing Monte Carlo Errors as a Blue Noise in Screen Space by Permuting Pixel Seeds Between Frames

Intersection
 Static Object Intersections  RealTime Rendering Resource Page  A collection of intersection algorithms.

Denoising
 Ray Tracing Denoising  Alain.xyz
 Ray Tracing Filtering  Alain.xyz
 EdgeAvoiding ÀTrous Wavelet Transform for fast Global Illumination Filtering  Classic paper that introduces a fast and simple filter for realtime ray tracing denoising

GPU Ray Tracing


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
 HighPerformance Software Rasterization on GPUs
 Line Rasterization slides, MIT EECS 6.837, Teller and Durand
 A Parallel Algorithm for Polygon Rasterization


Graphics Effects

Normal Mapping

Shadow

Ambient Occlusion

Reflection

Transparency

Ray Marching and SDF

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 alphablending with triangulated lines.
 5 ways to draw an outline
 The Quest for Very Wide Outlines

Text Rendering

Tessellation

Sprite Rendering

Atmosphere Scattering

Grass Rendering
 Responsive RealTime 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

Dithering
 Anisoptera Games  How to Fix Color Banding with Dithering  Dithering for functional purposes (fixing color banding on gradients).
 Dithering on the GPU  describe a novel algorithm for ordered dithering based on an arbitrary palette


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 physicallybased 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.

Texture Compression
 Understanding BCn Texture Compression Formats  describes a family of lossy hardwarebased 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 HistogramPreserving 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


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 lowerlevel aspects of how GPU executes. It uses the Vulkan API terminology, but the concept is largely platformindependent.
 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 PeakPerformancePercentage Analysis Method for Optimizing Any GPU Workload
 [video

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 antialiasing

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 HighQuality Rendering (SIGGRAPH 1990)


Animation

Geometry

Geometry representations
 Lecture 10: Meshes and Manifolds (CMU 15462/662)  Great overview, and also spend significant time on the halfedge data structure
 Lecture 10: Meshes and Manifolds (CMU 15462/662)  Great overview, and also spend significant time on the halfedge data structure

Isosurface 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

PhysicsBased Animation
 SIGGRAPH University 2019 Course  An Introduction to PhysicsBased Animation  A threehour fastpaced introduction to PhysicsBased Animation
 CSC417/CSC2549Physicsbased Animation Fall 2021  Introductory lecture for a course in physicsbased animation.
 SIGGRAPH University 2019 Course  An Introduction to PhysicsBased Animation  A threehour fastpaced introduction to PhysicsBased Animation

Attractors

Optics


APIs

Ray Tracing API
 The RTX Shader Binding Table Three Ways  Talks about shader binding table with RX12, Vulkan, and Optix
 Ray Tracing Gems II  An extension for the above article

OpenGL
 docs.gl  OpenGL API Documentation.
 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 post4.2 OpenGL
 docs.gl  OpenGL API Documentation.

Vulkan
 Vulkan Guide  The best "Vulkan Tutorial" available.
 3D Graphics Rendering Cookbook
 Awesome Vulkan
 Great Resources  Vulkan Guide
 API without Secrets: The Practical Approach to Vulkan*  Part 1
 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.3extensions/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

DirectX 12
 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
 Wicked Engine: Bindless Descriptors

WebGL


System Design

Renderer Architecture

GPUdriven rendering


Scene Description

GPUdriven rendering
 Siggraph 2019 Hydra  Presentation slides for Hydra, which is an opensource framework to transport live scene graph data to renderers.


General Programming

Metalinks

Engine Development

Performance Optimization
 Algorithms for Modern Hardware  This book contains great info on getting the best performance by looking at the actual hardware.

Highlevel Programming

Game loop

Floatingpoint numbers
 Floatingpoint in mobile shaders
 Onboarding floatingpoint  A series about floatingpoint numbers by Mike Acton

Memory Allocation & Management


Tools/libraries

Debuggers

Denoiser


Assets

Polygonal Model & Scene
 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 pbrtv3 formats.
 Three Dimensional Scans  some threedimensional scans of animals and statues.
 Stanford 3D Scanning Repository  a bunch of scanned reconstructions
 The Base Mesh  CC0 mesh collection
 PolyHaven  Public 3d asset library, also CC0
 Intel Sponza and Graphics Research Samples Library  Intel's revamped highresolution Sponza model and a couple of related pieces
 Quaternius Free Game Assets  Low poly models, CC0
 MIT CSAIL Sample OBJ Models  A couple of models provided by MIT<! markdownlinkcheckdisablenextline >

Materials
 ambientCG  Public Domain materials for Physically Based Rendering.
 Physically Based  A database of physically based values for CG artists

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

Programming Languages
Categories
Graphics Effects
44
APIs
35
Ray Tracing
28
Math
23
Compute
19
General Programming
19
Assets
18
Metalinks
14
Rasterization
13
PBR
8
Geometry
7
Overview
6
Sampling and antialiasing
6
Animation
6
Textures
5
Beginner friendly
5
Physics and Simulation
5
Shader Programming
4
Tools/libraries
4
Advice
4
Color, HDR, and Tone Mapping
3
System Design
2
Scene Description
1
Sub Categories
Vulkan
19
Atomics
16
Sampling & Variance Reduction
11
Grass Rendering
11
Polygonal Model & Scene
10
GPU Architecture
10
Books
8
DirectX 12
8
Shadow
7
Memory Allocation & Management
7
Texture Bombing
7
Software Rasterization
7
Ray Marching and SDF
6
Voxel Data
6
Transparency
6
Courses
6
Circular/Spherical harmonics
6
Ambient Occlusion
6
Intro to Ray Tracing
6
Line, Edge, and Outline Drawing
5
OpenGL
5
Parallel Algorithms
4
Isosurface methods
4
Introduction to compute shader
4
Debuggers
3
Denoising
3
Ray Tracing Books
3
Implementing Math Library
3
PhysicsBased Animation
3
Metalinks
3
Engine Development
3
Shading Techniques
2
GPUdriven rendering
2
Curves and Surfaces
2
Materials
2
Floatingpoint numbers
2
Text Rendering
2
Graphics Pipeline
2
Normal Mapping
2
Geometry representations
2
Game loop
2
Ray Tracing API
2
Algorithms
2
Dithering
2
Linear Algebra / Matrices
2
Hash Functions
1
Rotation
1
Tutorials
1
BVH
1
Atmosphere Scattering
1
Intersection
1
Optics
1
GPU Ray Tracing
1
Homogeneous Coordinate
1
Performance Optimization
1
Denoiser
1
Quaternions
1
Highlevel Programming
1
WebGL
1
Geometry
1
Mipmapping
1
Reflection
1
Texture Compression
1
Renderer Architecture
1
Depth Buffer
1
Attractors
1
Sprite Rendering
1
Libraries
1
Culling
1
Tessellation
1
Geometric Algebra
1
Keywords
awesome
2
awesomelist
2
gameengine
2
art
1
boardgames
1
curated
1
design
1
frameworks
1
gamedesign
1
gamedevelopment
1
gamejam
1
gameprogramming
1
gamedev
1
games
1
list
1
amd
1
arm
1
khronos
1
nvidia
1
opengl
1
qualcomm
1
vulkan
1
vulkanapi
1
vulkanlibraries
1
rust
1
computergraphics
1
3dgameengine
1
3dgraphics
1
graphicsengine
1
graphicslibraries
1
graphicslibrary
1