yxsamurai / resources

Graphics Programming Resources List

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.

Meta-links

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

Overview

Books

Courses

Career Advice

Math

Tutorials

Books

Homogeneous Coordinate

Rotation

Geometric Algebra

Curves and Surfaces

Implementing Math Library

Circular/Spherical harmonics

Ray Tracing

Intro to Ray Tracing

Ray Tracing Books

Algortihms

BVH

Sampling & Variance Reduction

Intersection

Denoising

GPU Ray Tracing

Rasterization

Graphics Pipeline

Software Rasterization

Graphics Techniques

Depth Buffer

Normal Mapping

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 Structured Volume Sampling technique, along with 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

PBR

Textures

Mipmapping

Texture Compression

Texture Bombing

Shader Programming

Compute

Introduction to compute shader

GPU Architecture

Parallel Algorithms

Color, HDR, and Tone Mapping

Sampling

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

APIs

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 for 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

Sychronization

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 entrypoints required to use Vulkan. It also simplify the use of Vulkan extensions.
  • SPIRV-Reflect - Can be used to extract descriptor 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

Assets Format

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

Denoiser

Assets

About

Graphics Programming Resources List

License:Creative Commons Zero v1.0 Universal