Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
resources
Graphics Programming Resources List
https://github.com/Graphics-Programming-Virtual-Meetup/resources
Last synced: 1 day ago
JSON representation
-
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.
-
-
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 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.
- 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.
-
Meta-links
- GPU Optimization for GameDev
- Volumetric Clouds Resources List
- Awesome Computer Vision
- Awesome Gamedev - Lots of graphics-related stuff.
- Physics-Based 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): 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
-
-
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 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
- Lecture 18: Monte Carlo Rendering (CMU 15-462/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 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.
-
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
- Lecture 19: Variance Reduction (CMU 15-462/662)
- Distributing Monte Carlo Errors as a Blue Noise in Screen Space by Permuting Pixel Seeds Between Frames
-
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
-
-
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
-
-
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 alpha-blending 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 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
-
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 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.
-
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
-
-
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
-
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)
-
-
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
-
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 post-4.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.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
-
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
-
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.
-
-
General Programming
-
Meta-links
-
Engine Development
-
Performance Optimization
- Algorithms for Modern Hardware - This book contains great info on getting the best performance by looking at the actual hardware.
-
High-level Programming
-
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
-
-
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 pbrt-v3 formats.
- Three Dimensional Scans - some three-dimensional 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 high-resolution 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<!-- markdown-link-check-disable-next-line -->
-
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
Meta-links
14
Rasterization
13
PBR
8
Geometry
7
Overview
6
Sampling and anti-aliasing
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
Iso-surface methods
4
Introduction to compute shader
4
Debuggers
3
Denoising
3
Ray Tracing Books
3
Implementing Math Library
3
Physics-Based Animation
3
Meta-links
3
Engine Development
3
Shading Techniques
2
GPU-driven rendering
2
Curves and Surfaces
2
Materials
2
Floating-point 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
High-level 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
awesome-list
2
game-engine
2
art
1
board-games
1
curated
1
design
1
frameworks
1
game-design
1
game-development
1
game-jam
1
game-programming
1
gamedev
1
games
1
list
1
amd
1
arm
1
khronos
1
nvidia
1
opengl
1
qualcomm
1
vulkan
1
vulkan-api
1
vulkan-libraries
1
rust
1
computer-graphics
1
3d-game-engine
1
3d-graphics
1
graphics-engine
1
graphics-libraries
1
graphics-library
1