Welcome to the TinyDiffRast project!

Inspired by tiny renderer, this tiny course aims to implement, explain, and explore state-of-the-art approaches to differentiable triangle rasterization. Differentiable rasterization is a type of inverse rendering approach, which allows 3D scene parameters (materials, lights, cameras, geometry) to be learned from 2D image supervision.

Here are a few of the cool things that you will learn to implement from scratch in this course.

An Interactive Renderer
Jacobian/Gradient Image Generation
Inverse Rendering for Lighting
Inverse Rendering for Materials
Inverse Rendering for Cameras
Inverse Rendering for Geometry

The 3D bunny model was obtained from The Stanford 3D Scanning Repository.

The course content and the accompanying codebase was developed by Jordan J. Bannister while working at Mila, in collaboration with Derek Nowrouzezahrai from the McGill Graphics Lab. Depending on what the future holds, we may develop more content like this to delve into other topics in the world of inverse rendering. If this is something that interests you, let us know by giving us a star on the project github page.

This project is currently under development. The content may be updated or changed without warning.


Lessons