{"id":3571,"url":"https://github.com/Graphics-Programming-Virtual-Meetup/resources","name":"resources","description":"Graphics Programming Resources List","projects_count":299,"last_synced_at":"2026-09-14T17:00:24.061Z","repository":{"id":43509159,"uuid":"420350193","full_name":"Graphics-Programming-Virtual-Meetup/resources","owner":"Graphics-Programming-Virtual-Meetup","description":"Graphics Programming Resources List","archived":true,"fork":false,"pushed_at":"2026-03-15T03:38:05.000Z","size":391,"stargazers_count":261,"open_issues_count":1,"forks_count":18,"subscribers_count":11,"default_branch":"main","last_synced_at":"2026-08-25T22:12:41.967Z","etag":null,"topics":["computer-graphics","game-development"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Graphics-Programming-Virtual-Meetup.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":"contributing.md","funding":null,"license":"LICENSE","code_of_conduct":"code-of-conduct.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-10-23T07:58:15.000Z","updated_at":"2026-08-08T19:07:57.000Z","dependencies_parsed_at":"2024-01-27T05:43:06.935Z","dependency_job_id":"33a913e7-5e5b-4e71-89ea-00cfe83c69c4","html_url":"https://github.com/Graphics-Programming-Virtual-Meetup/resources","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Graphics-Programming-Virtual-Meetup/resources","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Graphics-Programming-Virtual-Meetup%2Fresources","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Graphics-Programming-Virtual-Meetup%2Fresources/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Graphics-Programming-Virtual-Meetup%2Fresources/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Graphics-Programming-Virtual-Meetup%2Fresources/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Graphics-Programming-Virtual-Meetup","download_url":"https://codeload.github.com/Graphics-Programming-Virtual-Meetup/resources/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Graphics-Programming-Virtual-Meetup%2Fresources/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":341189360,"owners_count":37321913,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-08-22T15:14:58.755Z","status":"online","status_checked_at":"2026-09-14T02:00:06.290Z","response_time":176,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"created_at":"2024-01-06T00:24:25.033Z","updated_at":"2026-09-14T17:00:24.061Z","primary_language":null,"list_of_lists":false,"displayable":false,"categories":["General Programming","Meta-links","APIs","Rasterization","Beginner friendly","Assets","Math","Tools/libraries","Overview","Advice","Ray Tracing","Graphics Effects","PBR","Textures","Shader Programming","Compute","Color, HDR, and Tone Mapping","Sampling and anti-aliasing","Animation","Geometry","Physics and Simulation","System Design","Scene Description"],"sub_categories":["Meta-links","Vulkan","Graphics Pipeline","Polygonal Model \u0026 Scene","Books","Materials","High-level Programming","Debuggers","Courses","Tutorials","Homogeneous Coordinate","Rotation","Quaternions","Linear Algebra / Matrices","Geometric Algebra","Curves and Surfaces","Implementing Math Library","Circular/Spherical harmonics","Geometry","Intro to Ray Tracing","Ray Tracing Books","Ray Tracing API","Algorithms","BVH","Sampling \u0026 Variance Reduction","Intersection","Denoising","GPU Ray Tracing","Shading Techniques","Culling","Depth Buffer","Software Rasterization","Normal Mapping","Shadow","Ambient Occlusion","Reflection","Transparency","Ray Marching and SDF","Line, Edge, and Outline Drawing","Text Rendering","Tessellation","Dithering","Sprite Rendering","Atmosphere Scattering","Grass Rendering","Mipmapping","Texture Compression","Texture Bombing","Introduction to compute shader","GPU Architecture","Parallel Algorithms","Atomics","Geometry representations","Iso-surface methods","Libraries","Physics-Based Animation","Attractors","OpenGL","DirectX 12","WebGL","Renderer Architecture","GPU-driven rendering","Engine Development","Performance Optimization","Game loop","Floating-point numbers","Memory Allocation \u0026 Management","Denoiser","Voxel Data","Optics","Hash Functions","Voxel Rendering","Profilers","WebGPU","Volume Rendering","Barycentric Coordinates","Ray Tracing Courses"],"readme":"# Graphics Programming Resources\n\n**Note: This repository has been archived. The resource list is now maintained on [our website](https://gpvm.org/resources/)**\n\nA hand-picked list of graphics programming resources maintained by graphics programming virtual meetup attendees.\n\n- Our Website: https://gpvm.org/\n- Meetup page: https://www.meetup.com/Graphics-Programming-Virtual-Meetup\n- Join our Discord: https://discord.gg/TsTDb4uYfR\n- Follow us on Mastodon: https://mastodon.gamedev.place/@graphicsmeetup\n- YouTube channel: https://www.youtube.com/channel/UCbX05PBAE-582PYaRXdjRnw\n\n## Contents\n\u003c!-- START doctoc generated TOC please keep comment here to allow auto update --\u003e\n\u003c!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --\u003e\n\u003cdetails\u003e\n\u003csummary\u003eTable of Contents\u003c/summary\u003e\n\n- [Beginner friendly](#beginner-friendly)\n- [Meta-links](#meta-links)\n- [Overview](#overview)\n  - [Books](#books)\n  - [Courses](#courses)\n- [Advice](#advice)\n- [Math](#math)\n  - [Tutorials](#tutorials)\n  - [Books](#books-1)\n  - [Homogeneous Coordinate](#homogeneous-coordinate)\n  - [Rotation](#rotation)\n  - [Quaternions](#quaternions)\n  - [Linear Algebra / Matrices](#linear-algebra--matrices)\n  - [Barycentric Coordinates](#barycentric-coordinates)\n  - [Geometric Algebra](#geometric-algebra)\n  - [Curves and Surfaces](#curves-and-surfaces)\n  - [Implementing Math Library](#implementing-math-library)\n  - [Circular/Spherical harmonics](#circularspherical-harmonics)\n  - [Geometry](#geometry)\n- [Ray Tracing](#ray-tracing)\n  - [Intro to Ray Tracing](#intro-to-ray-tracing)\n  - [Ray Tracing Books](#ray-tracing-books)\n  - [Ray Tracing Courses](#ray-tracing-courses)\n  - [Algorithms](#algorithms)\n  - [BVH](#bvh)\n  - [Sampling \u0026 Variance Reduction](#sampling--variance-reduction)\n  - [Intersection](#intersection)\n  - [Denoising](#denoising)\n  - [GPU Ray Tracing](#gpu-ray-tracing)\n- [Rasterization](#rasterization)\n  - [Graphics Pipeline](#graphics-pipeline)\n  - [Shading Techniques](#shading-techniques)\n  - [Culling](#culling)\n  - [Depth Buffer](#depth-buffer)\n  - [Software Rasterization](#software-rasterization)\n- [Graphics Effects](#graphics-effects)\n  - [Normal Mapping](#normal-mapping)\n  - [Hash Functions](#hash-functions)\n  - [Dithering](#dithering)\n  - [Shadow](#shadow)\n  - [Ambient Occlusion](#ambient-occlusion)\n  - [Reflection](#reflection)\n  - [Transparency](#transparency)\n  - [Ray Marching and SDF](#ray-marching-and-sdf)\n  - [Line, Edge, and Outline Drawing](#line-edge-and-outline-drawing)\n  - [Text Rendering](#text-rendering)\n  - [Tessellation](#tessellation)\n  - [Voxel Rendering](#voxel-rendering)\n  - [Volume Rendering](#volume-rendering)\n  - [Dithering](#dithering-1)\n  - [Sprite Rendering](#sprite-rendering)\n  - [Atmosphere Scattering](#atmosphere-scattering)\n  - [Grass Rendering](#grass-rendering)\n- [PBR](#pbr)\n- [Textures](#textures)\n  - [Mipmapping](#mipmapping)\n  - [Texture Compression](#texture-compression)\n  - [Texture Bombing](#texture-bombing)\n- [Shader Programming](#shader-programming)\n- [Compute](#compute)\n  - [Introduction to compute shader](#introduction-to-compute-shader)\n  - [GPU Architecture](#gpu-architecture)\n  - [Parallel Algorithms](#parallel-algorithms)\n  - [Atomics](#atomics)\n- [Color, HDR, and Tone Mapping](#color-hdr-and-tone-mapping)\n- [Sampling and anti-aliasing](#sampling-and-anti-aliasing)\n- [Animation](#animation)\n- [Geometry](#geometry-1)\n  - [Geometry representations](#geometry-representations)\n  - [Iso-surface methods](#iso-surface-methods)\n  - [Libraries](#libraries)\n- [Physics and Simulation](#physics-and-simulation)\n  - [Physics-Based Animation](#physics-based-animation)\n  - [Attractors](#attractors)\n  - [Optics](#optics)\n- [APIs](#apis)\n  - [Ray Tracing API](#ray-tracing-api)\n  - [OpenGL](#opengl)\n  - [Vulkan](#vulkan)\n  - [DirectX 12](#directx-12)\n  - [WebGL](#webgl)\n  - [WebGPU](#webgpu)\n- [System Design](#system-design)\n  - [Renderer Architecture](#renderer-architecture)\n  - [GPU-driven rendering](#gpu-driven-rendering)\n- [Scene Description](#scene-description)\n- [General Programming](#general-programming)\n  - [Meta-links](#meta-links-1)\n  - [Engine Development](#engine-development)\n  - [Performance Optimization](#performance-optimization)\n  - [High-level Programming](#high-level-programming)\n  - [Game loop](#game-loop)\n  - [Floating-point numbers](#floating-point-numbers)\n  - [Memory Allocation \u0026 Management](#memory-allocation--management)\n- [Tools/libraries](#toolslibraries)\n  - [Debuggers](#debuggers)\n  - [Profilers](#profilers)\n  - [Denoiser](#denoiser)\n- [Assets](#assets)\n  - [Polygonal Model \u0026 Scene](#polygonal-model--scene)\n  - [Materials](#materials)\n  - [Voxel Data](#voxel-data)\n\n\u003c/details\u003e\n\u003c!-- END doctoc generated TOC please keep comment here to allow auto update --\u003e\n\n## Beginner friendly\n\nHere is a list of resources suitable for beginners,\nthough intermediate or advanced folks can also benefit from them.\n\n- [Learn OpenGL](https://learnopengl.com/) - 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.\n- [Ray Tracing in One Weekend series](https://raytracing.github.io/) - Those three short books explain basic concepts of path tracing and implement a software renderer from scratch.\n- 🎥 [CMU's introductory to Computer Graphics course](https://www.youtube.com/playlist?list=PL9_jI1bdZmz2emSh0UQ5iOdT2xRHFHL7E) -\nA comprehensive introduction to various topics in computer graphics.\n- [Catlike Coding](https://catlikecoding.com/) - Focuses on C# and shaders in Unity.\n- [Book Of Shaders](https://thebookofshaders.com/) - 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.\n- [ShaderToy](https://www.shadertoy.com/) - Huge collection of open source techniques to refer to, ranging from very basic to more advanced topics. \n\n## Meta-links\nResources that curate other resources. Some meta links are omitted here if they are mentioned in other categories.\n\n- [GPU Optimization for GameDev](https://gist.github.com/silvesthu/505cf0cbf284bb4b971f6834b8fec93d)\n- [Volumetric Clouds Resources List](https://gist.github.com/pixelsnafu/e3904c49cbd8ff52cb53d95ceda3980e)\n- [graphics resources](https://github.com/mattdesl/graphics-resources)\n- [Awesome Computer Graphics (luisnts)](https://github.com/luisnts/awesome-computer-graphics)\n- [Awesome Computer Graphics (waitin2010)](https://github.com/waitin2010/awesome-computer-graphics)\n- [Fun with Computer Graphics](https://github.com/zheng95z/fun-with-computer-graphics)\n- [Awesome Graphics Libraries - engines \u0026 frameworks](https://github.com/jslee02/awesome-graphics-libraries)\n- [Awesome Computer Vision](https://github.com/jbhuang0604/awesome-computer-vision)\n- [Awesome Gamedev](https://github.com/ellisonleao/magictools) - Lots of graphics-related stuff.\n- [Physics-Based Animation](http://www.physicsbasedanimation.com/) - Contains learning resources and papers.\n- [Digital Morphogenesis Resources - Info About Some Different Simulation Techniques](https://github.com/jasonwebb/morphogenesis-resources)\n- [Graphics Programming Weekly - Article Database](https://www.jendrikillner.com/article_database/)\n- [Graphics Studies Compilation - Adrian Courrèges](https://www.adriancourreges.com/blog/2020/12/29/graphics-studies-compilation/) - Handy compilation of frame breakdown articles\n- [Readings on Physically Based Rendering](https://interplayoflight.wordpress.com/2013/12/30/readings-on-physically-based-rendering/) - A collection of resources related to PBR rendering\n- [Computer Graphics Resources Materials for Self Study](https://legends2k.github.io/note/cg_resources/)\n- [Resources for Beginning Graphics Programming](https://medium.com/vrtigo/resources-for-beginning-graphics-programming-c0da724381bc)\n\n## Overview\n### Books\n- [Graphics Codex](https://graphicscodex.com/app/app.html) - Free book that contains chapters on physically-based shading and rendering, coding projects, and reference pages.\n- [Real-Time Rendering, Fourth Edition](https://www.amazon.com/Real-Time-Rendering-Fourth-Tomas-Akenine-M%C3%B6ller/dp/1138627003)\n- [Fundamentals of Computer Graphics 5th Edition](https://www.amazon.com/Fundamentals-Computer-Graphics-Steve-Marschner/dp/0367505037)\n\n### Courses\n- [CMU's introductory to Computer Graphics course](https://www.youtube.com/playlist?list=PL9_jI1bdZmz2emSh0UQ5iOdT2xRHFHL7E)\n- [6.837: Introduction to Computer Graphics (fall 2020)](https://youtube.com/playlist?list=PLQ3UicqQtfNuBjzJ-KEWmG1yjiRMXYKhh)\n- [Introduction to Computer Graphics - Cem Yuksel](https://youtube.com/playlist?list=PLplnkTzzqsZTfYh4UbhLGpI5kGd5oW_Hh)\n\n## Advice\n- [Finding Your Home in Game Graphics Programming](http://alextardif.com/LearningGraphics.html) - Presents a high-level overview of the rendering world and resources for getting started in the different specializations\n- [Insider guide to tech interviews](https://bartwronski.com/2022/01/04/insider-guide-to-tech-interviews/) - An in-depth analysis of the interview process for experienced developers\n- [Graphics Programming – Where To Start?](https://www.stefanpijnacker.nl/article/graphics-programming-where-to-start/) - Advices and resource recommendation for beginning learner\n\n## Math\n\n### Tutorials\n- 🎥 [Math For Game Devs](https://www.youtube.com/playlist?list=PLImQaTpSAdsD88wprTConznD1OY1EfK_V) - Video Series from Freya Holmér\n\n### Books\n- [immersive linear algebra](http://immersivemath.com/ila/index.html) - Free online book with interactive figures.\n- [Mathematics for Computer Graphics](https://www.amazon.com/Mathematics-Computer-Graphics-Undergraduate-Science/dp/1447173341)\n- [Mathematics for 3D Game Programming and Computer Graphics, 3rd Edition](https://www.amazon.com/Mathematics-Programming-Computer-Graphics-Third/dp/1435458869)\n- [Foundations of Game Engine Development, Volume 1: Mathematics](https://www.amazon.com/Foundations-Game-Engine-Development-Mathematics/dp/0985811749) - Introduces math routines with implementations. It also touches Grassman algebra.\n\n### Homogeneous Coordinate\n- [A trip down the graphics pipeline: the homogeneous perspective transform](https://www.ece.uvic.ca/~bctill/20004/additional/homcoord/00210494.pdf)\n\n### Rotation\n- [Gimbal lock confusion - Computer Graphics Stack Exchange](https://computergraphics.stackexchange.com/questions/12273/gimbal-lock-confusion)\n\n### Quaternions\n- [Visualizing quaternions](https://eater.net/quaternions) - A great intereactive introduction/refresher for quaternions. It focuses on intuition rather than mathematical definitions.\n\n### Linear Algebra / Matrices\n- [GPUOpen Matrix Compendium](https://gpuopen.com/learn/matrix-compendium/matrix-compendium-intro/)\n- [3Blue1Brown Youtube Channel](https://www.youtube.com/c/3blue1brown) - general math topics, good for linear algebra and calculus.\n\n### Barycentric Coordinates\n- [Barycentric Coordinates](https://observablehq.com/@infowantstobeseen/barycentric-coordinates) - An interactive introduction to Barycentric Coordinates\n\n### Geometric Algebra\n- [Let's remove Quaternions from every 3D Engine](https://marctenbosch.com/quaternions/) - Introduces *Rotors* in Geometric Algebra.\n\n### Curves and Surfaces\n- 🎥 [The Beauty of Bézier Curves](https://www.youtube.com/watch?v=aVwxzDHniEw)\n- [Bézier Curves](https://blog.richardekwonye.com/bezier-curves) - An interactive explanation and exploration of Bezier curves\n\n### Implementing Math Library\n- [On Vector Math Libraries](https://www.reedbeta.com/blog/on-vector-math-libraries/)\n- [GDC18 - Linear Algebra Upgraded](http://www.terathon.com/gdc18_lengyel.pdf) - 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++.\n- 🎥 [CppCon 2018: Valentin Galea “Rapid Prototyping of Graphics Shaders in Modern C++”](https://www.youtube.com/watch?v=8FoAxasNssA) - Also implemented swizzling with similar techniques.\n\n### Circular/Spherical harmonics\n- [Circular Harmonics: Digging in circles](https://valdes.cc/articles/ch.html)\n- [Spherical Harmonics for Beginners](https://dickyjim.wordpress.com/2013/09/04/spherical-harmonics-for-beginners/) - Cover the fundamentals of using Spherical Harmonics without delving into the math deeply\n- [Spherical Harmonics in Graphics: A Brief Overview](https://gen-graphics.blogspot.com/2017/11/spherical-harmonics-in-graphics-brief.html)\n- [Spherical Harmonics - Insights And Fundamentals](https://github.com/AlexSabourinDev/cranberry_blog/blob/master/SphericalHarmonics_Fundamentals.md)\n- [Spherical Harmonic Lighting](https://simonstechblog.blogspot.com/2011/12/spherical-harmonic-lighting.html)\n- [Stupid Spherical Harmonics (SH) Tricks](https://www.ppsloan.org/publications/StupidSH36.pdf)\n\n### Geometry\n- [Visualizing Delaunay Triangulation](https://ianthehenry.com/posts/delaunay/)\n- [Point-Based Graphics Metalink](https://www.realtimerendering.com/kesen/PointBasedPaper.html)\n\n## Ray Tracing\n### Intro to Ray Tracing\n- [Ray Tracing in One Weekend series](https://raytracing.github.io/)\n- [An Improved Illumination Model for Shaded Display](https://www.cs.drexel.edu/~david/Classes/Papers/p343-whitted.pdf) - Turner Whitted's original Ray Tracing paper.\n- 🎥 [Lecture 18: Monte Carlo Rendering (CMU 15-462/662)](https://youtu.be/FUZJNlRqrAc) - Including a very good introduction to importance sampling.\n- [Global Illumination Compendium](https://www.ii.uni.wroc.pl/~anl/cgfiles/TotalCompendium.pdf) - overview of ray tracing/path tracing techniques.\n- [Creating a physically-based path tracer](https://alexanderameye.github.io/notes/path-tracer/)\n\n### Ray Tracing Books\n- [Physically Based Rendering: From Theory To Implementation Third Edition](https://www.pbr-book.org/) - The definitive book for offline rendering.\n- [Ray Tracing Gems](https://www.realtimerendering.com/raytracinggems/rtg/index.html) - Like other \"gems\" books, it contains standalone chapters on various ray tracing topics.\n- [Ray Tracing Gems II](https://www.realtimerendering.com/raytracinggems/rtg2/index.html)\n- [Advanced Global Illumination](https://www.amazon.com/Advanced-Global-Illumination-Philip-Dutre/dp/1568813074) - An advanced book that focuses on light transport theory.\n\n### Ray Tracing Courses\n- [Dartmouth Rendering Algorithms (Fall21)](https://cs87-dartmouth.github.io/Fall2021/) - 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.\n\n### Algorithms\n- [Bidirectional Estimators for Light Transport](https://www.cs.jhu.edu/~misha/ReadingSeminar/Papers/Veach94.pdf) - Introduces *bidirectional path tracing*.\n- [Monte Carlo Methods for Light Transport Simulation](https://graphics.stanford.edu/papers/veach_thesis/) - 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*\n\n### BVH\n- [A Survey on Bounding Volume Hierarchies for Ray Tracing](https://meistdan.github.io/publications/bvh_star/paper.pdf) - Excellent overview paper on BVH.\n- [bvh - A modern C++ BVH construction and traversal library](https://github.com/madmann91/bvh) - Implements various algorithms for BVH traversal and construction.\n\n### Sampling \u0026 Variance Reduction\n- 🎥 [Lecture 19: Variance Reduction (CMU 15-462/662)](https://youtu.be/IQhLk_XaFc8)\n- [Flavors of Sampling in Ray Tracing](http://psgraphics.blogspot.com/2018/10/flavors-of-sampling-in-ray-tracing.html)\n- [Stratified Sampling of Spherical Triangles](http://www.graphics.cornell.edu/pubs/1995/Arv95c.pdf)\n- [Distributing Monte Carlo Errors as a Blue Noise in Screen Space by Permuting Pixel Seeds Between Frames](https://hal.archives-ouvertes.fr/hal-02158423/file/blueNoiseTemporal2019_slides.pdf)\n- [A Low-Discrepancy Sampler that Distributes Monte Carlo Errors as a Blue Noise in Screen Space](https://belcour.github.io/blog/slides/2019-sampling-bluenoise/index.html)\n- [Rendering in Real Time with Spatiotemporal Blue Noise Textures](https://developer.nvidia.com/blog/rendering-in-real-time-with-spatiotemporal-blue-noise-textures-part-1/) series\n- [What is direct lighting (next event estimation) in a ray tracer?](https://psgraphics.blogspot.com/2022/01/what-is-direct-lighting-next-event.html)\n- [Much Ado About Sampling](https://www.jeremyong.com/math/monte%20carlo/2022/05/17/much-ado-about-sampling/)\n- [Spatiotemporal reservoir resampling for real-time ray tracing with dynamic direct lighting](https://cs.dartmouth.edu/wjarosz/publications/bitterli20spatiotemporal.html) - combines RIS+MIS with reservoir sampling and demonstrates the reservoir merging capability to perform resampling across space and time\n\n### Intersection\n- [Static Object Intersections - Real-Time Rendering Resource Page](https://www.realtimerendering.com/intersections.html) - A collection of intersection algorithms.\n\n### Denoising\n- [Ray Tracing Denoising - Alain.xyz](https://alain.xyz/blog/ray-tracing-denoising)\n- [Ray Tracing Filtering - Alain.xyz](https://alain.xyz/blog/ray-tracing-filtering)\n- [Edge-Avoiding À-Trous Wavelet Transform for fast Global Illumination Filtering](https://jo.dreggn.org/home/2010_atrous.pdf) - Classic paper that introduces a fast and simple filter for real-time ray tracing denoising\n\n### GPU Ray Tracing\nSee also [APIs](#apis)\n- [Megakernels Considered Harmful: Wavefront Path Tracing on GPUs](https://research.nvidia.com/sites/default/files/pubs/2013-07_Megakernels-Considered-Harmful/laine2013hpg_paper.pdf)\n\n## Rasterization\n### Graphics Pipeline\n- [A trip through the Graphics Pipeline 2011](https://fgiesen.wordpress.com/2011/07/09/a-trip-through-the-graphics-pipeline-2011-index/)\n- [Creative Use of GPU Fixed-Function Hardware](https://asawicki.info/news_1745_creative_use_of_gpu_fixed-function_hardware)\n\n### Shading Techniques\n- [Graphics Pipelines for Young Bloods](https://www.jeremyong.com/cpp/2021/05/20/graphics-pipelines-for-young-bloods/) - Discuss various tradeoffs between different graphics pipeline techniques\n- [A Primer On Efficient Rendering Algorithms \u0026 Clustered Shading](https://www.aortiz.me/2018/12/21/CG.html) - Same as the above article but delves deeper with clustered shading\n\n### Culling\n- [Optimizing Software Occlusion Culling](https://fgiesen.wordpress.com/2013/02/17/optimizing-sw-occlusion-culling-index/)\n- [Nvidia's gl_occlusion_culling example](https://github.com/nvpro-samples/gl_occlusion_culling)\n\n### Depth Buffer\n- [Depth Precision Visualized](https://developer.nvidia.com/content/depth-precision-visualized)\n\n### Software Rasterization\n- [ssloy/tinyrenderer](https://github.com/ssloy/tinyrenderer) - A short tutorial on writing a software rasterizer. Be careful that the tutorial has some rough edges.\n- [A Parallel Algorithm for Polygon Rasterization](https://www.cs.drexel.edu/~david/Classes/Papers/comp175-06-pineda.pdf)\n- [Scratchapixel: Rasterization Stage](https://www.scratchapixel.com/lessons/3d-basic-rendering/rasterization-practical-implementation/rasterization-stage)\n- [Triangle rasterization in practice](https://fgiesen.wordpress.com/2013/02/08/triangle-rasterization-in-practice/)\n- [Optimizing the basic rasterizer](https://fgiesen.wordpress.com/2013/02/10/optimizing-the-basic-rasterizer/)\n- [High-Performance Software Rasterization on GPUs](https://users.aalto.fi/~laines9/publications/laine2011hpg_paper.pdf)\n- [Line Rasterization slides, MIT EECS 6.837, Teller and Durand](http://groups.csail.mit.edu/graphics/classes/6.837/F02/lectures/6.837-7_Line.pdf)\n\n## Graphics Effects\n\n### Normal Mapping\n- [Three Normal Mapping Techniques Explained For the Mathematically Uninclined](https://www.gamedeveloper.com/programming/three-normal-mapping-techniques-explained-for-the-mathematically-uninclined)\n- [Normal Mapping - Learn OpenGL](https://learnopengl.com/Advanced-Lighting/Normal-Mapping)\n\n### Hash Functions\n-[PCG Family of Hash Functions - Hash Functions for GPU Rendering](https://www.reedbeta.com/blog/hash-functions-for-gpu-rendering/)\n\n### Dithering\n-[Dithering on the GPU](http://alex-charlton.com/posts/Dithering_on_the_GPU/) - Dithering for aesthetic purposes.\n-[Anisoptera Games - How to Fix Color Banding with Dithering](https://www.anisopteragames.com/how-to-fix-color-banding-with-dithering/) - Dithering for functional purposes (fixing color banding on gradients).\n\n### Shadow\n- [Shadow Mapping - LearnOpenGL](https://learnopengl.com/Advanced-Lighting/Shadows/Shadow-Mapping)\n- [Percentage-Closer Soft Shadows](https://developer.download.nvidia.com/shaderlibrary/docs/shadow_PCSS.pdf)\n- [Efficient Shadows from Many Lights](https://efficientshading.com/wp-content/uploads/s2015_shadows.pdf)\n- [Reflective Shadow Maps](https://ericpolman.com/2016/03/17/reflective-shadow-maps/)\n- [Experiments in Hybrid Raytraced Shadows](https://interplayoflight.wordpress.com/2021/05/15/experiments-in-hybrid-raytraced-shadows/)\n- 🎥 [Michał Olejnik - Raytraced Shadows in Call of Duty: Modern Warfare video presentation](https://www.youtube.com/watch?v=VXp-HEAw-l4)\n- [Using Blue Noise For Raytraced Soft Shadows](https://blog.demofox.org/2020/05/16/using-blue-noise-for-raytraced-soft-shadows/)\n\n### Ambient Occlusion\n- [Learn OpenGL: SSAO](https://learnopengl.com/Advanced-Lighting/SSAO)\n- [John Chapman SSAO Tutorial](http://john-chapman-graphics.blogspot.com/2013/01/ssao-tutorial.html)\n- [Screen Space Ambient Occlusion - Louis Bavoil, Miguel Sainz](https://developer.download.nvidia.com/SDK/10.5/direct3d/Source/ScreenSpaceAO/doc/ScreenSpaceAO.pdf)\n- [Know your SSAO artifacts](https://mtnphil.wordpress.com/2013/06/26/know-your-ssao-artifacts/)\n- [Practical Realtime Strategies for Accurate Indirect Occlusion](https://iryoku.com/downloads/Practical-Realtime-Strategies-for-Accurate-Indirect-Occlusion.pdf)\n\n### Reflection\n- [Screen-Space Reflections Explained](https://jhstrom.blogspot.com/2021/03/screen-space-reflections-explained.html)\n\n### Transparency\n- [Learn OpenGL: OIT](https://learnopengl.com/Guest-Articles/2020/OIT/Introduction)\n- [Compositing digital images](https://graphics.pixar.com/library/Compositing/paper.pdf)\n- [Visual glBlendFunc + glBlendEquation Tool](https://www.andersriggelsen.dk/glblendfunc.php)\n- Order independent transparency blog series\n  - [Part 1](https://interplayoflight.wordpress.com/2022/06/25/order-independent-transparency-part-1/)\n  - [Part 2](https://interplayoflight.wordpress.com/2022/07/02/order-independent-transparency-part-2/)\n  - [Endgame](https://interplayoflight.wordpress.com/2022/07/10/order-independent-transparency-endgame/)\n\n### Ray Marching and SDF\n- [Graphics Codex: Ray Marching](https://graphicscodex.com/app/app.html?page=_rn_rayMrch)\n- [Distant functions for primitives - Inigo Quilez](http://iquilezles.org/articles/distfunctions/)\n- [soft shadows in raymarched SDFs - 2010](http://iquilezles.org/articles/rmshadows/)\n\n### Line, Edge, and Outline Drawing\n#### Triangulated line\n- [Drawing Lines is Hard](https://mattdesl.svbtle.com/drawing-lines-is-hard) - Summarizes the problem of GPU line primitives and introduces techniques for drawing triangulated lines.\n- [Instanced Line Rendering Part I](https://wwwtyro.net/2019/11/18/instanced-lines.html) - Builds on the foundation from \"Drawing Lines is Hard\" and uses instance rendering to draw lines.\n- [Instanced Line Rendering Part II: Alpha blending](https://wwwtyro.net/2021/10/01/instanced-lines-part-2.html) - Continue of the above article, and introduces a way to do alpha-blending with triangulated lines.\n\n#### Outline\n- [5 ways to draw an outline](https://alexanderameye.github.io/notes/rendering-outlines/)\n- [The Quest for Very Wide Outlines](https://bgolus.medium.com/the-quest-for-very-wide-outlines-ba82ed442cd9)\n\n### Text Rendering\n- [Learn OpenGL: Text Rendering](https://learnopengl.com/In-Practice/Text-Rendering)\n- [bitmap font renderer](https://jmickle66666666.github.io/blog/techart/2019/12/18/bitmap-font-renderer.html)\n\n### Tessellation\n- [Tutorial 30: Basic Tessellation](https://ogldev.org/www/tutorial30/tutorial30.html)\n\n### Voxel Rendering\n- [VoxelSpace](https://github.com/s-macke/VoxelSpace)\n\n### Volume Rendering\n- [Structured Volume Sampling](https://github.com/huwb/volsample) - MIT-licensed implementation of the Structured Volume Sampling technique, along with a simple framework for comparing other techniques.\n\n### Dithering\n- [Dithering on the GPU](http://alex-charlton.com/posts/Dithering_on_the_GPU/) - describe a novel algorithm for ordered dithering based on an arbitrary palette\n\n### Sprite Rendering\n- [Modern (Bindless) Sprite Batch for Vulkan (and more!)](https://jorenjoestar.github.io/post/modern_sprite_batch/)\n\n### Atmosphere Scattering\n- [Precomputed Atmospheric Scattering](https://hal.inria.fr/inria-00288758/document)\n- [Precomputed Atmospheric Scattering: a New Implementation](https://ebruneton.github.io/precomputed_atmospheric_scattering/)\n\n### Grass Rendering\n- [Responsive Real-Time Grass Rendering for General 3D Scenes](https://www.cg.tuwien.ac.at/research/publications/2017/JAHRMANN-2017-RRTG/JAHRMANN-2017-RRTG-draft.pdf)\n- [Procedural grass rendering - Outerra](https://outerra.blogspot.com/2012/05/procedural-grass-rendering.html) - Is an inspiration of the following talk\n- 🎥 [Procedural Grass in 'Ghost of Tsushima'](https://www.youtube.com/watch?v=Ibe1JBF5i5Y)\n\n## PBR\nSee also [Assets/Materials](#materials) for PBR materials\n- [Physically Based Rendering in Filament](https://google.github.io/filament/Filament.html)\n- [PBR - Learn OpenGL](https://learnopengl.com/PBR/Theory)\n- [Everything (or most things) wrong with learnopengl.com/PBR/Theory](https://docs.google.com/document/d/1ZLT1-fIek2JkErN9ZPByeac02nWipMbO89oCW2jxzXo/edit)\n- [Real Shading in Unreal Engine 4](https://cdn2.unrealengine.com/Resources/files/2013SiggraphPresentationsNotes-26915738.pdf) - 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\n- [Crash Course in BRDF Implementation](https://boksajak.github.io/files/CrashCourseBRDF.pdf)\n- [Physically Based Shading at Disney](https://blog.selfshadow.com/publications/s2012-shading-course/burley/s2012_pbs_disney_brdf_notes_v3.pdf)\n- [Deriving Lambertian BRDF from first principles](https://sakibsaikia.github.io/graphics/2019/09/10/Deriving-Lambertian-BRDF-From-First-Principles.html)\n\u003c!-- markdown-link-check-disable-next-line --\u003e\n- [Basics of physically-based rendering](https://www.researchgate.net/publication/262326548_Basics_of_physically-based_rendering)\n## Textures\n### Mipmapping\n- [Pyramidal Parametrics](http://www.cs.cmu.edu/afs/cs.cmu.edu/academic/class/15869-f11/www/readings/williams83_mipmap.pdf) - The original Mipmap paper.\n\n### Texture Compression\n- [Understanding BCn Texture Compression Formats](https://www.reedbeta.com/blog/understanding-bcn-texture-compression-formats/) - describes a family of lossy hardware-based texture compression formats called BCn\n\n### Texture Bombing\n- [GPU Gems Chapter 20. Texture Bombing](https://developer.nvidia.com/gpugems/gpugems/part-iii-materials/chapter-20-texture-bombing)\n- [Texture bombing 3 samples](https://www.shadertoy.com/view/4tyGWK) - a shader from Inigo Quilez (modified by huwb) that shows how to perform the GPU Gems technique using 3 texture samples instead of 4! \n- [On Histogram-Preserving Blending for Randomized Texture Tiling](https://jcgt.org/published/0008/04/02/) - attempts to resolve artifacts you get when blending two textures together (also only using 3 texture samples, plus a lookup table per texture\n\n## Shader Programming\n- [The Book of Shaders](https://thebookofshaders.com/)\n- [shadertoy smoothstep demo](https://www.shadertoy.com/view/sdyGRW)\n- [Shader Derivative Functions](http://www.aclockworkberry.com/shader-derivative-functions/) - Useful for normals.\n- [How to read shader assembly](https://interplayoflight.wordpress.com/2021/04/18/how-to-read-shader-assembly/)\n- [ShaderToy Advanced Tricks](https://shadertoyunofficial.wordpress.com/2021/03/09/advanced-tricks/) \n\n## Compute\n### Introduction to compute shader\n- [Introduction to Compute Shaders](https://anteru.net/blog/2018/intro-to-compute-shaders/)\n- [More Compute Shaders](https://anteru.net/blog/2018/more-compute-shaders/)\n- [Even more Compute Shaders](https://anteru.net/blog/2018/even-more-compute-shaders/)\n- [Compute Shader Glossary](https://github.com/googlefonts/compute-shader-101/blob/main/docs/glossary.md)\n\n### GPU Architecture\n- 🎥 [CIS 565 GPU Programming and Architecture](http://cis565-fall-2021.github.io/) - A course that introduce parallel programming with a Computer Graphics flavor.\n- [Gentle introduction to GPUs inner workings](https://vksegfault.github.io/posts/gentle-intro-gpu-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.\n- [GCN – two ways of latency hiding and wave occupancy](https://bartwronski.com/2014/03/27/gcn-two-ways-of-latency-hiding-and-wave-occupancy/)\n- [Breaking Down Barriers](https://therealmjp.github.io/posts/breaking-down-barriers-part-1-whats-a-barrier/)\n- [How does a GPU Shader work?](https://aras-p.info/texts/files/2018Academy%20-%20GPU.pdf)\n- [Compute Shaders: Optimize your engine using compute / Lou Kramer, AMD](https://www.youtube.com/watch?v=0DLOJPSxJEg) \n\u003c!-- markdown-link-check-disable-next-line --\u003e\n- [RDNA Architecture Whitepaper](https://www.amd.com/system/files/documents/rdna-whitepaper.pdf)\n- [AMU RDNA2 Performance guide](https://gpuopen.com/performance/)\n- [The Peak-Performance-Percentage Analysis Method for Optimizing Any GPU Workload](https://developer.nvidia.com/blog/the-peak-performance-analysis-method-for-optimizing-any-gpu-workload/)\n- [[video] All the Pipelines - Journey through the GPU](https://gpuopen.com/videos/graphics-pipeline/)\n\n### Parallel Algorithms\n- [Parallel Prefix Sum (Scan) with CUDA](http://www.eecs.umich.edu/courses/eecs570/hw/parprefix.pdf)\n- [Thinking Parallel, Part I: Collision Detection on the GPU](https://developer.nvidia.com/blog/thinking-parallel-part-i-collision-detection-gpu/)\n- [Thinking Parallel, Part II: Tree Traversal on the GPU](https://developer.nvidia.com/blog/thinking-parallel-part-ii-tree-traversal-gpu/)\n- [Thinking Parallel, Part III: Tree Construction on the GPU](https://developer.nvidia.com/blog/thinking-parallel-part-iii-tree-construction-gpu/)\n\n### Atomics\n- [CUDA Pro Tip: Optimized Filtering with Warp-Aggregated Atomics](https://developer.nvidia.com/blog/cuda-pro-tip-optimized-filtering-warp-aggregated-atomics/)\n\n## Color, HDR, and Tone Mapping\n- [Supporting Native HDR Monitors - OurMachinery](https://ruby0x1.github.io/machinery_blog_archive/post/supporting-native-hdr-monitors/index.html)\n- [Introduction to Color Theory for Games, Art and Tech - Shahriar Shahrabi](https://shahriyarshahrabi.medium.com/introduction-to-color-theory-for-games-art-and-tech-67bd4c8607d7)\n- [Tone Mapping](https://64.github.io/tonemapping/) - Introduces the theory of Tone Mapping and talks about some commonly used Tone Mapping Operators\n\n## Sampling and anti-aliasing\nSee also [Ray Tracing/Sampling \u0026 Variance Reduction](#sampling--variance-reduction)\n- [A Pixel is not a Little Square!](http://alvyray.com/Memos/CG/Microsoft/6_pixel.pdf) - Classic paper on misconception of \"a pixel is a little square.\" It also serves as an introduction to sampling.\n- [Basics of Image Resampling](https://entropymine.com/imageworsener/resample/)\n- [Computing the Discrepancy with Applications to Supersampling Patterns](http://mentallandscape.com/Papers_tog96.pdf)\n- [Generating Antialiased Images at Low Sampling Densities](http://mentallandscape.com/Papers_siggraph87.pdf)\n- [Temporal Anti Aliasing – Step by Step](https://ziyadbarakat.wordpress.com/2020/07/28/temporal-anti-aliasing-step-by-step/)\n- [The Accumulation Buffer: Hardware Support for High-Quality Rendering (SIGGRAPH 1990)](https://graphics.stanford.edu/courses/cs248-02/haeberli-akeley-accumulation-buffer-sig90.pdf)\n\n## Animation\n- [Learn OpenGL: Skeletal Animation](https://learnopengl.com/Guest-Articles/2020/Skeletal-Animation)\n- 🎥 [Animation Programming Basics](https://youtu.be/Jkv0pbp0ckQ)\n- 🎥 [Animation Graphs](https://youtu.be/R-T3Mk5oDHI)\n- [Skeletal animation in glTF](https://lisyarus.github.io/blog/graphics/2023/07/03/gltf-animation.html)\n\n## Geometry\n### Geometry representations\n- 🎥 [Lecture 10: Meshes and Manifolds (CMU 15-462/662)](https://youtu.be/HePDHsp8spU) - Great overview, and also spend significant time on the half-edge data structure\n\n### Iso-surface methods\n- [Interactive explanation of marching cubes and dual contouring](https://wordsandbuttons.online/interactive_explanation_of_marching_cubes_and_dual_contouring.html)\n- [Polygonising a scalar field (Marching Cubes)](http://paulbourke.net/geometry/polygonise/)\n- [Dual Contouring Tutorial](https://www.boristhebrave.com/2018/04/15/dual-contouring-tutorial/)\n- [The Transvoxel Algorithm](https://transvoxel.org/)\n\n### Libraries\n- [Geometry Central](https://geometry-central.net/) - A modern C++ library of data structures and algorithms for geometry processing, with a particular focus on surface meshes.\n\n## Physics and Simulation\n### Physics-Based Animation\n- 🎥 [SIGGRAPH University 2019 Course - An Introduction to Physics-Based Animation](https://youtu.be/b_WJ-HwalwU) - A three-hour fast-paced introduction to Physics-Based Animation\n- 🎥 [CSC417/CSC2549-Physics-based Animation Fall 2021](https://youtube.com/playlist?list=PLTkE7n2CwG_PH09_q0Q7ttjqE2F9yGeM3) - Introductory lecture for a course in physics-based animation.\n\n### Attractors\n- [Strange Attractors on the GPU series](https://observablehq.com/@rreusser/strange-attractors-on-the-gpu-part-1?collection=@rreusser/writeups)\n\n### Optics\n- [Make Your Bokeh Fascinating + related SIGGRAPH 2015 Course](https://research.tri-ace.com/s2015.html) + [Video Recordings](https://dl.acm.org/doi/10.1145/2776880.2792715)\n\n## APIs\n### Ray Tracing API\n- [The RTX Shader Binding Table Three Ways](https://www.willusher.io/graphics/2019/11/20/the-sbt-three-ways) - Talks about shader binding table with RX12, Vulkan, and Optix\n- Chapter 15 \"The Shader Binding Table Demystified\" of [Ray Tracing Gems II](https://www.realtimerendering.com/raytracinggems/rtg2/index.html) - An extension for the above article\n\n### OpenGL\n- [docs.gl](http://docs.gl/) - OpenGL API Documentation.\n- [GLConstantsTranslator](https://javagl.github.io/GLConstantsTranslator/GLConstantsTranslator.html) - 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.\n\n#### Tutorials\n- [Learn OpenGL](https://learnopengl.com/) - The highly recommended tutorial.\n\n#### Meta-links\n- [Awesome OpenGL](https://project-awesome.org/eug/awesome-opengl) - Curated List for OpenGL.\n\n#### Best Practices\n- [Using Modern OpenGL to Avoid Common Errors](https://juandiegomontoya.github.io/modern_opengl.html) - Talks about using features of post-4.2 OpenGL\n\n### Vulkan\n- [Spec](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/index.html) - It is a good idea to keep it open while doing Vulkan Programming.\n#### Tutorials\n- [Vulkan Guide](https://vkguide.dev/) - The best \"Vulkan Tutorial\" available.\n- 🎥 [TU Wien: Vulkan Lecture Series](https://www.youtube.com/playlist?list=PLmIqTlJ6KsE1Jx5HV4sd2jOe3V1KMHHgn)\n- [vk_mini_path_tracer tutorial](https://github.com/nvpro-samples/vk_mini_path_tracer) - A relatively small tutorial that focuses on path tracing using Vulkan's ray tracing API.\n- [3D Graphics Rendering Cookbook](https://www.amazon.com/Graphics-Rendering-Cookbook-comprehensive-algorithms/dp/1838986197)\n\n#### Meta-links\n- [Awesome Vulkan](https://github.com/vinjn/awesome-vulkan)\n- [Great Resources - Vulkan Guide](https://vkguide.dev/docs/great_resources)\n\n#### Swapchain \u0026 frame resources\u003c!-- markdown-link-check-disable-next-line --\u003e\n- [API without Secrets: The Practical Approach to Vulkan* - Part 1](https://www.intel.com/content/www/us/en/developer/articles/training/practical-approach-to-vulkan-part-1.html) (there is no part 2)\n\n#### Renderpass \u0026 Dynamic Rendering\n- [VK_KHR_dynamic_rendering tutorial](https://lesleylai.info/en/vk-khr-dynamic-rendering/) - A tutorial to Vulkan's dynamic rendering extension\n- [Khronos: Streamlining Render Passes](https://www.khronos.org/blog/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.\n\n#### Bindless/Descriptor indexing\n- 🎥 [Khronos Talk on Descriptor Indexing](https://www.youtube.com/watch?v=tXipcoeuNh4)\n- [Vulkan Descriptor Indexing for Mobile](https://community.arm.com/developer/tools-software/graphics/b/blog/posts/vulkan-descriptor-indexing)\n- [OurMachinery's Moving The Machinery to Bindless](https://ruby0x1.github.io/machinery_blog_archive/post/moving-the-machinery-to-bindless/index.html)\n- [Wicked Engine: Bindless Descriptors](https://wickedengine.net/2021/04/06/bindless-descriptors/)\n- [DethRaid's Vulkan Descriptor Indexing](https://gist.github.com/DethRaid/0171f3cfcce51950ee4ef96c64f59617)\n- [A note on Descriptor Indexing](https://chunkstories.xyz/blog/a-note-on-descriptor-indexing/)\n- [Vulkan Pills 1: Bindless Textures](https://jorenjoestar.github.io/post/vulkan_bindless_texture/)\n\n#### Synchronization\n- [TheMaister's Yet another blog explaining Vulkan synchronization](https://themaister.net/blog/2019/08/14/yet-another-blog-explaining-vulkan-synchronization/)\n- [Understanding Vulkan Synchronization](https://www.khronos.org/blog/understanding-vulkan-synchronization)\n- [Vulkan Timeline Semaphores](https://www.khronos.org/blog/vulkan-timeline-semaphores)\n\n#### Vulkan Compute\n- [A simple Vulkan Compute example](https://www.duskborn.com/posts/a-simple-vulkan-compute-example/)\n- [Vulkan Subgroup tutorial. AKA wavefronts](https://www.khronos.org/blog/vulkan-subgroup-tutorial)\n\n#### Libraries\n- [vk-bootstrap](https://github.com/charles-lunarg/vk-bootstrap) - Library that simplifies the Vulkan initialization boilerplate.\n- [VulkanMemoryAllocator](https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator) - Memory allocation library that simplifies Vulkan memory allocation and provides decent performance.\n- [volk](https://github.com/zeux/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.\n- [SPIRV-Reflect](https://github.com/KhronosGroup/SPIRV-Reflect) - Can be used to extract descriptors and push constant information from SPIRV.\n\n#### Performance Best Practice\n- [Writing an efficient Vulkan renderer](https://zeux.io/2020/02/27/writing-an-efficient-vulkan-renderer/)\n\n#### Others\n- [Vulkan Diagram](https://github.com/David-DiGioia/vulkan-diagrams)\n\n### DirectX 12\n- [Reader Question Answered 1 - Learning D3D12](https://www.jendrikillner.com/post/d3d12-learning-plan/) - A roadmap for learning DirectX 12\n- [Raw DirectX 12](https://alain.xyz/blog/raw-directx12) - An introduction to writing a simple Hello Triangle DirectX 12 application.\n- [Learning DirectX 12](https://www.3dgep.com/learning-directx-12-1/)\n- [Direct3D 12 programming guide](https://docs.microsoft.com/en-us/windows/win32/direct3d12/directx-12-programming-guide)\n\n#### Resource Binding \u0026 Bindless\n- [Resource Binding - Direct3D 12 Programming Guide](https://docs.microsoft.com/en-us/windows/win32/direct3d12/resource-binding)\n- [Bindless Texturing for Deferred Rendering and Decals](https://mynameismjp.wordpress.com/2016/03/25/bindless-texturing-for-deferred-rendering-and-decals/)\n- [Binding Bindlessly](https://alextardif.com/Bindless.html)\n- [Wicked Engine: Bindless Descriptors](https://wickedengine.net/2021/04/06/bindless-descriptors/)\n\n### WebGL\n- [Awesome WebGL](https://project-awesome.org/sjfricke/awesome-webgl)\n\n### WebGPU\n- [Spec](https://gpuweb.github.io/gpuweb/)\n#### Tutorials\n- [Learn wgpu](https://sotrh.github.io/learn-wgpu/) - Tutorial of WebGPU API using Rust and the wgpu library.\n\n## System Design\n### Renderer Architecture\n- 🎥 [SIGGRAPH 2021 REAC: Unity Rendering Architecture](https://www.youtube.com/watch?v=6LzcXPIWUbc)\n- [Efficiently rendering glTF models](https://toji.github.io/webgpu-gltf-case-study/) - A case study on how to design a renderer under modern graphics APIs that can take diverse input\n\n### GPU-driven rendering\n- [GPU Driven Rendering - Siggraph 2015](http://advances.realtimerendering.com/s2015/aaltonenhaar_siggraph2015_combined_final_footer_220dpi.pdf)\n\n## Scene Description\n- [Siggraph 2019 Hydra](https://graphics.pixar.com/usd/files/Siggraph2019_Hydra.pdf) - Presentation slides for Hydra, which is an open-source framework to transport live scene graph data to renderers.\n\n## General Programming\n### Meta-links\n- [Awesome C](https://project-awesome.org/inputsh/awesome-c#game-programming)\n- [Awesome C++](https://project-awesome.org/fffaraz/awesome-cpp)\n- [Awesome Rust](https://github.com/rust-unofficial/awesome-rust)\n### Engine Development\n- [Game Engine Architecture](https://www.gameenginebook.com/) (paid book)\n- [The Shader Permutation Problem - Part 1: How Did We Get Here?](https://therealmjp.github.io/posts/shader-permutations-part1/)\n- [The Shader Permutation Problem - Part 2: How Do We Fix It?](https://therealmjp.github.io/posts/shader-permutations-part2/)\n### Performance Optimization\n- [Algorithms for Modern Hardware](https://en.algorithmica.org/hpc/) - This book contains great info on getting the best performance by looking at the actual hardware.\n### High-level Programming\n- [Game Programming Patterns](http://gameprogrammingpatterns.com/)\n### Game loop\n- [Game Loop - Game Programming Patterns](http://gameprogrammingpatterns.com/game-loop.html)\n- [Fix Your Timestep!](https://gafferongames.com/post/fix_your_timestep/)\n- Chapter 8 \"The Game Loop and Real-Time Simulation\" of Game Engine Architecture\n\n### Floating-point numbers\n- [Onboarding floating-point](https://www.altdevarts.com/p/onboarding-floating-point) - A series about floating-point numbers by Mike Acton\n- [Floating-point in mobile shaders](https://solidpixel.github.io/2021/11/23/floats_in_shaders.html)\n\n### Memory Allocation \u0026 Management\n- [Memory Allocation Strategies series](https://www.gingerbill.org/series/memory-allocation-strategies/)\n- [Memory Management section on Pbrt](https://www.pbr-book.org/3ed-2018/Utilities/Memory_Management)\n- The Memory chapter of Game Engine Architecture\n- [Object Pool](http://gameprogrammingpatterns.com/object-pool.html) chapter of Game Programming Pattern.\n- 🎥 CppCon 2017: John Lakos “Local ('Arena') Memory Allocators” [[Part1]](https://youtu.be/nZNd5FjSquk) [[Part2]](https://youtu.be/CFzuFNSpycI)\n- 🎥 [CppCon 2017: Bob Steagall “How to Write a Custom Allocator”](https://youtu.be/kSWfushlvB8)\n\n## Tools/libraries\n\n### Debuggers\n- [RenderDoc](https://renderdoc.org/)\n- [Nvidia Nsight Graphics](https://developer.nvidia.com/nsight-graphics)\n- [Radeon™ GPU Profiler (AMD)](https://github.com/GPUOpen-Tools/radeon_gpu_profiler)\u003c!-- markdown-link-check-disable-next-line --\u003e\n- [Intel® GPA](https://www.intel.com/content/www/us/en/developer/tools/graphics-performance-analyzers/overview.html)\n- [SpectorJS (WebGL)](https://github.com/BabylonJS/Spector.js)\n\n### Profilers\nA bunch of graphics debuggers above also have profiling capabilities.\n- [Optick: C++ Profiler For Games](https://github.com/bombomby/optick)\n- [Tracy Profiler](https://github.com/wolfpld/tracy)\n- [Dear Imgui profiler widget](https://github.com/Raikiri/LegitProfiler)\n\n### Denoiser\n- [Optix Denoiser](https://developer.nvidia.com/optix-denoiser)\n- [FidelityFX-Denoiser](https://github.com/GPUOpen-Effects/FidelityFX-Denoiser)\n- [Open Image AI Denoiser](https://github.com/OpenImageDenoise/oidn)\n\n## Assets\n### Polygonal Model \u0026 Scene\n- [McGuire Computer Graphics Archive](http://casual-effects.com/data/index.html) - OBJ format scenes.\n- [ORCA: Open Research Content Archive](https://developer.nvidia.com/orca) - Free large graphics scene samples.\n- [Rendering Resources - Benedikt Bitterli](https://benedikt-bitterli.me/resources/) - Scenes in Tungsten, Mitsuba, and pbrt-v3 formats.\n- [NASA 3D Resources](https://nasa3d.arc.nasa.gov/models/) - Some assets of satellites, celestial bodies, etc. Various formats.\n- [Three Dimensional Scans](https://threedscans.com/) - some three-dimensional scans of animals and statues.\n- [Stanford 3D Scanning Repository](http://graphics.stanford.edu/data/3Dscanrep/) - a bunch of scanned reconstructions\n- [The Base Mesh](https://thebasemesh.com/) - CC0 mesh collection\n- [PolyHaven](https://polyhaven.com/) - Public 3d asset library, also CC0\n- [MIT CSAIL Sample OBJ Models](https://groups.csail.mit.edu/graphics/classes/6.837/F03/models/) - A couple of models provided by MIT\u003c!-- markdown-link-check-disable-next-line --\u003e\n- [Intel Sponza and Graphics Research Samples Library](https://www.intel.com/content/www/us/en/developer/topic-technology/graphics-research/samples.html) - Intel's revamped high-resolution Sponza model and a couple of related pieces\n- [KhronosGroup glTF Sample Models](https://github.com/KhronosGroup/glTF-Sample-Models)\n- [Quaternius Free Game Assets](https://quaternius.com/tutorials.html) - Low poly models, CC0\n\n### Materials\n- [ambientCG](https://ambientcg.com/) - Public Domain materials for Physically Based Rendering.\n- [Physically Based](https://physicallybased.info/) - A database of physically based values for CG artists\n\n### Voxel Data\n- [TU Wien Volume Data](https://www.cg.tuwien.ac.at/research/publications/2005/dataset-stagbeetle/) - Listed in their collection of publications.\n- [Open Scientific Visualization Datasets](https://klacansky.com/open-scivis-datasets/) - Large collection of CT scans of various objects.\n- [Stanford Volume Archive](https://www-graphics.stanford.edu/data/voldata/) - Several volume datasets (CT/MRI).\n- [MorphoSource](https://www.morphosource.org) - Enormous library of 2D and 3D data, mesh and voxel, of biological samples and cultural objects.\n- [Osirix MANIX and other test DICOMs](https://www.osirix-viewer.com/resources/dicom-image-library/)\n","projects_url":"https://awesome.ecosyste.ms/api/v1/lists/graphics-programming-virtual-meetup%2Fresources/projects"}