Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 

Repository files navigation

🍇 Graphics programming resources

A searchable list of real-time graphics programming resources to help with programming.

❓ Why read this doc?

This document contains a large list of real-time graphics programming resources I found from some googling. This document is incredibly useful when conducting research before implementing a graphics technique in code as:

  • There are so many unique ways different tech demos and games tackle the same graphics problems.
  • Many techniques are also buried in the web, so having a consolidated searchable list helps immensely.

🔮 Possible future improvements

  • Combine similar headings from different repos together
  • Use git submodules and file embedding to scrape up to date information

📃 Table of contents

  1. Kosua
  2. Graphics programming virtual meetup (GPVM)
  3. Books
  4. Real-time rendering portal

🔥 Kosua

https://gist.github.com/kosua20/a337366c6fd2871f73022da8e69e8b76

Table of Contents

Render

Animation

Skinning

Antialiasing

Blending

Compression

Dithering

Dof

Geometry

Gpu

Sorting

Hdr

Lens flare

Lighting

Brdf

Gi

Ibl

Light

Shading

Lod

Motion blur

Normal mapping

Path tracing

Pipeline

Shading

Point cloud

Postprocess

Procedural

Vegetation

Rasterization

Ray tracing

Raymarching

Sampling

Screenspace

Ao

Reflection

Ssr

Sdf

Shader

2d

Shadow

Snow

Stereogram

Swapchain

Vsync

Vfx

Visibility

Volumetric

Water

Gpu

Debug

Dx12

Hardware

Maths

Performance

Pipeline

Security

Shader

Compiler

Thread

Vulkan

Webgpu

Prog

Arm

Assembly

Build

Demoscene

Font

Fun

Hardware

Kinect

Memory

Multithread

Reverse engineering

Security

Tutorial

Retro

Dreamcast

Glide

Nintendo

Sony

Techno

Vectrex

Video

🔺 Graphics programming virtual meetup list

https://github.com/Graphics-Programming-Virtual-Meetup/resources?tab=readme-ov-file

Table of contents

Beginner friendly

Here is a list of resources suitable for beginners, though intermediate or advanced folks can also benefit from them.

  • 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.
  • 🎥 CMU's introductory to Computer Graphics course - A comprehensive introduction to various topics in computer graphics.
  • Catlike Coding - Focuses on C# and shaders in Unity.
  • 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.
  • ShaderToy - Huge collection of open source techniques to refer to, ranging from very basic to more advanced topics.

Meta-links

Resources that curate other resources. Some meta links are omitted here if they are mentioned in other categories.

Overview

Books

Courses

Advice

Math

Tutorials

Books

Homogeneous Coordinate

Rotation

Quaternions

  • Visualizing quaternions - A great intereactive introduction/refresher for quaternions. It focuses on intuition rather than mathematical definitions.

Linear Algebra / Matrices

Barycentric Coordinates

Geometric Algebra

Curves and Surfaces

Implementing Math Library

Circular/Spherical harmonics

Geometry

Ray Tracing

Intro to Ray Tracing

Ray Tracing Books

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.

Algorithms

BVH

Sampling & Variance Reduction

Intersection

Denoising

GPU Ray Tracing

See also APIs

Rasterization

Graphics Pipeline

Shading Techniques

Culling

Depth Buffer

Software Rasterization

Graphics Effects

Normal Mapping

Hash Functions

-PCG Family of Hash Functions - Hash Functions for GPU Rendering

Dithering

-Dithering on the GPU - Dithering for aesthetic purposes. -Anisoptera Games - How to Fix Color Banding with Dithering - Dithering for functional purposes (fixing color banding on gradients).

Shadow

Ambient Occlusion

Reflection

Transparency

Ray Marching and SDF

Line, Edge, and Outline Drawing

Triangulated line

Outline

Text Rendering

Tessellation

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.

Dithering

  • Dithering on the GPU - describe a novel algorithm for ordered dithering based on an arbitrary palette

Sprite Rendering

Atmosphere Scattering

Grass Rendering

PBR

See also Assets/Materials for PBR materials

Textures

Mipmapping

Texture Compression

Texture Bombing

Shader Programming

Compute

Introduction to compute shader

GPU Architecture

Parallel Algorithms

Atomics

Color, HDR, and Tone Mapping

Sampling and anti-aliasing

See also Ray Tracing/Sampling & Variance Reduction

Animation

Geometry

Geometry representations

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

Attractors

Optics

APIs

Ray Tracing API

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.

Tutorials

Meta-links

Best Practices

Vulkan

  • Spec - It is a good idea to keep it open while doing Vulkan Programming.

Tutorials

Meta-links

Swapchain & frame resources

Renderpass & Dynamic Rendering

Bindless/Descriptor indexing

Synchronization

Vulkan Compute

Libraries

  • vk-bootstrap - Library that simplifies the Vulkan initialization boilerplate.
  • VulkanMemoryAllocator - Memory allocation library that simplifies Vulkan memory allocation and provides decent performance.
  • 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.

Performance Best Practice

Others

DirectX 12

Resource Binding & Bindless

WebGL

WebGPU

Tutorials

  • Learn wgpu - Tutorial of WebGPU API using Rust and the wgpu library.

System Design

Renderer Architecture

GPU-driven rendering

Scene Description

  • 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

High-level Programming

Game loop

Floating-point numbers

Memory Allocation & Management

Tools/libraries

Debuggers

Profilers

A bunch of graphics debuggers above also have profiling capabilities.

Denoiser

Assets

Polygonal Model & Scene

Materials

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

Voxel Data

📔 Books

Jendrik Illner reading list

https://www.jendrikillner.com/post/reading-list/

3D Math Primer for Graphics and Game Development - 2011

https://gamemath.com/

Foundations of game engine development - Mathematics (2016)

https://foundationsofgameenginedev.com/

Foundations of game engine development - Rendering (2019)

https://foundationsofgameenginedev.com/

Real-Time Rendering 4th Edition

https://www.realtimerendering.com/

Ray tracing in a weekend series

https://raytracing.github.io/

PBRT

https://pbrt.org/

Computer Graphics - Principles and Practice

https://www.amazon.com.au/Computer-Graphics-Principles-Practice-Practices/dp/0321399528

Fundamentals of Computer Graphics (2021)

https://www.amazon.com.au/Fundamentals-Computer-Graphics-Steve-Marschner-dp-0367505037/dp/0367505037

ShaderX/GPU Pro/GPU Zen Books

https://www.realtimerendering.com/resources/shaderx/

GPU Gems

https://developer.nvidia.com/gpugems/gpugems/contributors

Raytracing Gems

https://www.realtimerendering.com/raytracinggems/

⌛ Real-time rendering portal

https://www.realtimerendering.com/portal.html

  • Contains a list of useful courses, books, conference notes, and more.

About

A searchable list of real-time graphics programming resources to help with programming

Resources

Stars

1 star

Watchers

0 watching

Forks

Contributors