Skip to content

Graphics-Programming-Virtual-Meetup/resources

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 

Repository files navigation

Graphics Programming Resources

A hand-picked list of graphics programming resources maintained by graphics programming virtual meetup attendees.

Contents

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

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