fun-with-computer-graphics

Hi, you have just found fun-with-computer-graphics!

This is a collection of computer graphics related courses, books, tutorials, articles, blogs, resources, researcher homepages, lab homepages, video channels, open source projects, websites, etc.

Here are some useful tips for you to find what you want:

  • You can now find the autogenerate table of contents in the top left corner (provided by GitHub).

# Computer Graphics

# Open-source Renderers

Shiny Renderers
mmp (opens new window)/pbrt-v3 (opens new window) The renderer described in the third edition of "Physically Based Rendering: From Theory To Implementation", by Matt Pharr, Wenzel Jakob, and Greg Humphreys.
mmp (opens new window)/pbrt-v4 (opens new window) This is an early release of pbrt-v4, the rendering system that will be described in the (eventually) forthcoming fourth edition of Physically Based Rendering: From Theory to Implementation.
mitsuba-renderer (opens new window)/mitsuba (opens new window) Mitsuba is a research-oriented rendering system in the style of PBRT, from which it derives much inspiration.
mitsuba-renderer (opens new window)/mitsuba2 (opens new window) Mitsuba 2 is a research-oriented rendering system written in portable C++17.
tunabrain (opens new window)/tungsten (opens new window) High performance physically based renderer in C++11.
appleseedhq (opens new window)/appleseed (opens new window) A modern open source rendering engine for animation and visual effects.
JiayinCao (opens new window)/SORT (opens new window) Simple Open-source Ray Tracer.
AirGuanZ (opens new window)/Atrc (opens new window) Offline rendering lab based on ray tracing.
shiinamiyuki (opens new window)/AkariRender (opens new window) AkariRender is a highly modular CPU/GPU physically based renderer written in C++17.
shiinamiyuki (opens new window)/minpt (opens new window) Small yet (almost) complete modern pathtracer.
Mike-Leo-Smith (opens new window)/LuisaRender (opens new window) High-Performance Renderer on GPU.
neverfelly (opens new window)/misaki-render (opens new window) A modular physically-based photorealistic global illumination renderer.
FaithZL (opens new window)/Paladin (opens new window)
jbikker (opens new window)/lighthouse2 (opens new window) Lighthouse 2 framework for real-time ray tracing.
g1n0st (opens new window)/AyaRay (opens new window) A Modern C++ Windows-platform physically based renderer developing by Chang Yu.
harskish (opens new window)/fluctus (opens new window) An interactive OpenCL wavefront path tracer.
google (opens new window)/filament (opens new window) Filament is a real-time physically-based renderer written in C++. It is mobile-first, but also multi-platform.

# Courses

Courses
GAMES101: 现代计算机图形学入门 (opens new window)
(bilibili (opens new window))
GAMES101
本课程将全面而系统地介绍现代计算机图形学的四大组成部分:(1)光栅化成像,(2)几何表示,(3)光的传播理论,以及(4)动画与模拟。每个方面都会从基础原理出发讲解到实际应用,并介绍前沿的理论研究。通过本课程,你可以学习到计算机图形学背后的数学和物理知识,并锻炼实际的编程能力。
Teaching by @Lingqi Yan (opens new window).
GAMES202: 高质量实时渲染 (opens new window)
(bilibili (opens new window))
GAMES202
本课程将全面地介绍现代实时渲染中的关键问题与解决方法。由于实时渲染 (>30 FPS) 对速度要求极高,因此本课程的关注点将是在苛刻的时间限制下,人们如何打破速度与质量之间的权衡,同时保证实时的高速度与照片级的真实感。
Teaching by @Lingqi Yan (opens new window).
TU Wien Rendering/Ray Tracing Course (opens new window)
(YouTube (opens new window))
TU WIEN Rendering
This course aims to give an overview of basic and state-of-the-art methods of rendering. Offline methods such as ray and path tracing, photon mapping and many other algorithms are introduced and various refinement are explained.
Teaching by @Károly Zsolnai-Fehér (opens new window).
Introduction to Computer Graphics (opens new window) UCSB CS180
This course is an introduction to the foundations of three-dimensional computer graphics. Topics covered include 2D and 3D transformations, Rasterization based interactive 3D graphics, shading and reflectance models, texture mapping, geometric modeling using Bézier and B-Spline curves, ray tracing, and animation. There will be an emphasis on both the mathematical and geometric aspects of graphics, as well as the ability to write fully functional 3D graphics programs.
Teaching by @Lingqi Yan (opens new window).
Real-Time High Quality Rendering (opens new window) UCSB CS291A
In this course, we will review the history and some of the recent ideas that seek to bridge the gap between realism and interactivity. We will focus on the use of complex lighting and shading within limited computation time. Specifically, topics will cover programmable shaders, real-time shadows, interactive global illumination, image-based rendering, precomputed rendering, adaptive sampling and reconstruction, and real-time ray tracing.
Teaching by @Lingqi Yan (opens new window).
Rendering Algorithms (Fall19) (opens new window) Dartmouth
This class focuses on advanced 3D graphics techniques for realistic image synthesis. You will learn how light interacts with objects in the real world, and how to translate the underlying math and physics into practical algorithms for rendering photorealistic images.
Teaching by @Wojciech Jarosz (opens new window).
Computer Graphics (Fall18) (opens new window) Dartmouth
This course provides a broad introduction to the mathematical and programmatic foundations of computer graphics, including modeling, rendering (drawing), and animating three-dimensional scenes.
Teaching by @Wojciech Jarosz (opens new window).
Introduction to Computer Graphics and Imaging (opens new window) Stanford CS148
This is the introductory prerequisite course in the computer graphics sequence which introduces students to the technical concepts behind creating synthetic computer generated images.
Interactive Computer Graphics (opens new window) Stanford CS248
This course provides a comprehensive introduction to computer graphics, focusing on fundamental concepts and techniques, as well as their cross-cutting relationship to multiple problem domains in interactive graphics (such as rendering, animation, geometry, image processing).
Image Synthesis Techniques (opens new window) Stanford CS348b
This course provides a broad overview of the theory and practice of making photo-realistic imagery. Rendering is treated as a problem in modeling and simulating the physics of light and appearance.
Computer Graphics (opens new window) CMU 15-462/662
This course provides a comprehensive introduction to computer graphics. Focuses on fundamental concepts and techniques, and their cross-cutting relationship to multiple problem domains in graphics (rendering, animation, geometry, imaging).
Computer Graphics - AS 19 (opens new window) ETH
This course covers some of the fundamental concepts of modern computer graphics. The main topics of the course are modeling and rendering. During the course, we will discuss how digital 3D scenes are represented and modeled, and how a realistic image can be generated from a digital representation of a 3D scene.
Teaching by Computer Graphics Laboratory (CGL) (opens new window).
Physically-based Simulation - AS 19 (opens new window) ETH
Physically-based simulations are fundamental to many applications of computer graphics, including 3D video games, animated movies and films, or virtual surgery. This course introduces the physical concepts as well as the numerical methods required for simulating deformable objects, fluids, rigid bodies, and other physical systems. The material covered in this lecture ranges from simple mass-spring systems to advanced topics such as finite elements.
Teaching by Computer Graphics Laboratory (CGL) (opens new window).
COS 426 Computer Graphics (Spring19) (opens new window) Princeton COS 426
This course will study topics in computer graphics, covering methods in image processing, modeling, rendering, and animation.
COS 526 Advanced Computer Graphics (Fall16) (opens new window) Princeton COS 526
This course will study advanced topics in computer graphics, covering methods in computational photography, geometric modeling, photorealistic rendering, and other topics in computer graphics.
Physically Based Rendering and Material Appearance Modelling (opens new window) DTU 02941
This course takes its outset in the appearance of real world materials. The goal is to get as close as possible to replicating the appearance of real materials by computer graphical rendering based on mathematical/physical models.
Interactive 3D Graphics by Autodesk (opens new window) Udacity CS291
This class will teach you about the basic principles of 3D computer graphics: meshes, transforms, cameras, materials, lighting, and animation.
Teaching by @Eric Haines (opens new window)
Computer Graphics and Imaging (opens new window) Berkeley cs184/284a
This course provides a broad introduction to the fundamentals of computer graphics. The main areas covered are modeling, rendering, animation and imaging. Topics include 2D and 3D transformations, drawing to raster displays, sampling, texturing, antialiasing, geometric modeling, ray tracing and global illumination, animation, cameras, image processing and computational imaging. There will be an emphasis on mathematical and geometric aspects of graphics, and the ability to write complete 3D graphics programs.
Introduction To Computer Graphics (opens new window) Brown CS123
This course offers an in-depth exploration of fundamental concepts in 2D and 3D computer graphics. It introduces 2D raster graphics techniques, including scan conversion, simple image processing, interaction techniques and user interface design. The bulk of the course is devoted to 3D modeling, geometric transformations, and 3D viewing and rendering. A sequence of assignments culminates in a simple geometric modeler and ray tracer. C++ and the graphics library OGL are used throughout the course, as is shader programming on the GPU, taught from the first lab onwards. The final project is typically a small group project spec'd and implemented by the group using shaders to create special effects.
Introduction To Computer Graphics (opens new window) Cornell CS4620
The study of creating manipulating, and using visual images in the computer.

# SIGGRAPH Courses

SIGGRAPH Courses
Path tracing in production (opens new window) This is the web page for the SIGGRAPH courses on path tracing in production.

# Books

Books
Fundamentals of Computer Graphics, 4th Edition Drawing on an impressive roster of experts in the field, Fundamentals of Computer Graphics, Fifth Edition offers an ideal resource for computer course curricula as well as a user-friendly personal or professional reference.
Computer Graphics: Principles and Practice, 3rd Edition
(book website)
In this book, we explain the principles, as well as the mathematics, underlying computer graphics--knowledge that is essential for successful work both now and in the future. Early chapters show how to create 2D and 3D pictures right away, supporting experimentation. Later chapters, covering a broad range of topics, demonstrate more sophisticated approaches. Sections on current computer graphics practice show how to apply given principles in common situations, such as how to approximate an ideal solution on available hardware, or how to represent a data structure more efficiently. Topics are reinforced by exercises, programming problems, and hands-on projects.
Real-Time Rendering, 4th Edition
(book website (opens new window))
This edition discusses current, practical rendering methods used in games and other applications. It also presents a solid theoretical framework and relevant mathematics for the field of interactive computer graphics, all in an approachable style. New to this edition: new chapter on VR and AR as well as expanded coverage of Visual Appearance, Advanced Shading, Global Illumination, and Curves and Curved Surfaces.
Physically Based Rendering: From Theory To Implementation, Third Edition
(read for free (opens new window))
Physically Based Rendering describes both the mathematical theory behind a modern photorealistic rendering system as well as its practical implementation. A method known as “literate programming” combines human-readable documentation and source code into a single reference that is specifically designed to aid comprehension. The ideas and software in this book show the reader how to design and employ a full-featured rendering system capable of creating stunning imagery.
Robust Monte Carlo Methods for Light Transport Simulation
(thesis website (opens new window))
Eric Veach. PhD Thesis, Stanford University, 1997
Nearly 20 years later, this monster thesis is still relevant when it comes to developing rendering algorithms. Introduces Monte Carlo rendering methods, multiple importance sampling, bidirectional path tracing, Metropolis Light Transport
Advanced Global Illumination
(authors' site (opens new window), Google Books sample (opens new window))
This book provides the reader with a fundamental understanding of global illumination algorithms. It discusses a broad class of algorithms for realistic image synthesis and introduces a theoretical basis for the algorithms presented.
《Ray Tracing in One Weekend》
(read for free (opens new window))
Peter Shirley (opens new window)'s The Ray Tracing in One Weekend series of books
《Ray Tracing Gems》
(book website (opens new window))
This book is a collection of articles focused on ray tracing techniques for serious practitioners. Like other "gems" books, it focuses on subjects commonly considered too advanced for introductory texts, yet rarely addressed by research papers.

# Tutorials

Tutorials
Nori 2 (opens new window) Nori is a minimalistic ray tracer written in C++. It runs on Windows, Linux, and Mac OS and provides a foundation for the homework assignments in the course Advanced Computer Graphics (opens new window) taught at EPFL.
Learn OpenGL
(English (opens new window), Chinese (opens new window))
The aim of LearnOpenGL is to show you all there is to modern OpenGL in an easy-to-understand fashion with clear examples, while also providing a useful reference for later studies.
Learn Vulkan (opens new window)
Scratchapixel 2.0 (opens new window) 32 lessons, 166 chapters, 450,000 words, C++ source code
Joey de Vries OpenGL Tutorials (opens new window) OpenGL
Pixar in a Box: Rendering (opens new window) by Pixar
Vulkan Tutorial (opens new window)
The Book of Shaders (opens new window)
3d-game-shaders-for-beginners (opens new window)
The Graphics Codex (opens new window) by Morgan McGuire (opens new window)
Daily Pathtracer (opens new window) by Aras Pranckevičius (opens new window)
Tiny renderer or how OpenGL works (opens new window) software rendering in 500 lines of code
Rasterization in One Weekend (opens new window) by Tayfun Kayhan (opens new window)

# Articles

Articles
什么是计算机图形学 (opens new window)
什么是深度学习? (opens new window)
数学在计算机图形学中的应用 (opens new window)
by 刘利刚 (opens new window)
系统的学习计算机图形学,有哪些不同阶段的书籍的推荐? (opens new window) Q&A
现阶段应该怎么学习计算机图形学呢? (opens new window) Q&A
光线追踪与实时渲染的未来 (opens new window) by 文刀秋二 (opens new window)
基于摄影参数渲染 (opens new window) by 文刀秋二 (opens new window)
基于物理着色
(1 (opens new window), 2 (opens new window), 3 (opens new window), 4 (opens new window))
by 文刀秋二 (opens new window)
How to Start Learning Computer Graphics Programming (opens new window)
(中译 (opens new window))
by Eric Arnebäck (opens new window)
金属,塑料,傻傻分不清楚 (opens new window) by 叛逆者 (opens new window)

# Blogs

Blogs (Back to TOC)
Self Shadow (opens new window) @self_shadow (opens new window) has been collecting Siggraph courses/papers links (opens new window) for many years: Especially interesting are the Physically Based Shading in Theory and Practice course presentations.
INTERPLAY OF LIGHT (opens new window) "This blog is my scratchpad for graphics techniques I try and experiment with."
by @Kostas Anagnostou (opens new window)
Alan Zucconi (opens new window) author of the book Unity 2018 Shaders and Effects Cookbook
Linden Reid (opens new window) Procedural geometry & graphics tutorials
A game developer at Blizzard
Harold Serrano (opens new window) Creator of the Untold Engine (opens new window)
Behind the Pixels (opens new window) Edward(Shiqiu) Liu, a Senior Real Time Rendering Engineer at NVIDIA
iquilezles (opens new window) Inigo Quilez
JOEY DE VRIES (opens new window) Joey, author of learnopengl.com (opens new window)
Coding Labs (opens new window)
TYLER HOBBS (opens new window)
HUMUS (opens new window)
Icare3D Blog (opens new window)

# Resources pages

Resources pages
Real-Time Rendering Resources (opens new window) Resources for Real-Time Rendering
Ke-Sen Huang's Home Page (opens new window) A collection of CG papers (from SIGGRAPH, Asia, EG, PG, etc.)
Rendering Resources (opens new window) This page offers 32 different 3D scenes that you can use for free in your rendering research, publications and classes.
Graphics Programming weekly (opens new window) Update per week, by @Jendrik Illner (opens new window)
McGuire Computer Graphics Archive (opens new window) A collection of models.
Technically Art (opens new window) by @Harry Alisavakis (opens new window)
Open-Source Real-Time Rendering Engines and Libs (opens new window)
GDCVault (opens new window) GDC Vault is a trove of in-depth design, technical and inspirational talks and slides from the influencers of the game development industry, taken from over 20 years of the worldwide Game Developers Conferences.
Graphics Research Tools (opens new window) by Nvidia
mattdesl/graphics-resources A list of graphic programming resources
Readings on The State of The Art in Rendering (opens new window) by Kostas Anagnostou (opens new window)
Readings on Physically Based Rendering (opens new window) by Kostas Anagnostou (opens new window)
Advances in Real-Time Rendering in 3D Graphics and Games (opens new window) the well-established series of SIGGRAPH courses
covering late-breaking work and advances in real-time computer graphics
terkelg/awesome-creative-coding (opens new window) Creative Coding: Generative Art, Data visualization, Interaction Design, Resources
eug/awesome-opengl (opens new window) A curated list of awesome OpenGL libraries, debuggers and resources
vinjn/awesome-vulkan (opens new window) A curated list of awesome Vulkan libraries, debuggers and resources. Inspired by awesome-opengl (opens new window) and other awesome-... stuff.
ericjang/awesome-graphics (opens new window) This is a curated list of computer graphics tutorials and resources.
MIT: Most Visited Courses (opens new window)
Real-time Rendering Blogs (opens new window)

# Researchers

Researchers
Benedikt Bitterli (opens new window) A PhD at Dartmouth College.
Kun Xu (徐昆) (opens new window) Associate professor at Graphics and Geometric Computing Group, Tsinghua University.
Lingqi Yan (闫令琪) (opens new window) Assistant Professor at UC Santa Barbara.
Ligang Liu (刘利刚) (opens new window) A Professor at Graphics & Geometric Computing Laboratory (GCL), school of mathematical sciences USTC.
Matt Pharr (opens new window) A research scientist at NVIDIA Research.
Morgan McGuire (opens new window) A Professor of Computer Science at Williams College.
Pradeep Sen (opens new window) A Professor at UC Santa Barbara.
Ravi Ramamoorthi (opens new window) Professor at UC San Diego.
Thomas Müller (opens new window) A senior research scientist at NVIDIA Zürich.
Toshiya Hachisuka (opens new window) An Associate Professor at The University of Tokyo.
Wenzel Jakob (opens new window) An assistant professor leading the Realistic Graphics Lab at EPFL's School of Computer and Communication Sciences.
Wojciech Jarosz (opens new window) An Assistant Professor at Dartmouth College.

# Labs

Labs
Graphics & Geometric Computing Group (opens new window) at Tsinghua Univ.
Realistic Graphics Lab (opens new window) at EPFL
Computer Graphics Lab (opens new window) at ETH Zürich
UCSB MIRAGE Lab (opens new window) at UCSB
Graphics Lab (opens new window) at Stanford
Princeton ImageX Labs (opens new window) at Princeton
Carnegie Mellon Graphics Lab (opens new window) at CMU
MIT Computer Graphics Group (opens new window) at MIT
Center for Visual Computing (opens new window) at UCSD

# Video Channels

Video Channels
ACMSIGGRAPH (opens new window)
The Cherno (opens new window) C++,
Game Engine,
...
ChiliTomatoNoodle (opens new window) DirectX & C++ Game Programming,
3D Programming Fundamentals,
...
MIT OpenCourseWare (opens new window)

# Open-source Projects

Projects
Intel® Embree (opens new window) Intel® Embree is a collection of high-performance ray tracing kernels, developed at Intel.
The Mesa 3D Graphics Library (opens new window) The Mesa project began as an open-source implementation of the OpenGL (opens new window) specification - a system for rendering interactive 3D graphics.
The Advanced Rendering Toolkit (opens new window) ART is a command-line system for physically based image synthesis.
TAICHI (opens new window) TAICHI: Open-source computer graphics library
Intel® Embree (opens new window) Intel® Embree is a collection of high-performance ray tracing kernels, developed at Intel
MERL BRDF Database (opens new window) The MERL BRDF database contains reflectance functions of 100 different materials
minpt (opens new window) A path tracer in 300 lines of C++
yocto-gl (opens new window) Tiny C++ Libraries for Data-Driven Physically-based Graphics
id-Software (opens new window) id-Software公司的所有游戏的开源代码
WebGL Fluid Simulation (opens new window)
Scotty3D (opens new window) 3D graphics software for mesh editing, path tracing, and animation

# Websites

Websites
Shadertoy (opens new window)
CSRankings: Computer Science Rankings (opens new window)

# Essential Mathematics

Essential Mathematics
Probability Theory for Physically Based Rendering Part 1 (opens new window), Part 2 (opens new window) by Jacco Bikker. (opens new window)