Skip to content

alecjacobson/computer-graphics

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Computer Graphics Course

Course material for an undergraduate level course in computer graphics

Course designed by Prof. Alec Jacobson, David I.W. Levin and Karan Singh from University of Toronto, with assistance from Yotam Gingold at GMU.

Prerequisites and dependencies

In general, the materials in this course assume that students should have already taken Linear Algebra and Calculus.

Students should have already taken Introduction to Computer Science and should be proficient in computer programming (in any language) and should feel comfortable programming in C++.

Some coding assignments make use of Eigen, an open-source linear algebra library; and libigl, an open-source geometry processing library. Each assigment is built using CMake.

Organization

The course is structured to run with fast paced weekly assignments in the following order:

  1. Introduction & Raster Images
  2. Ray Casting
  3. Ray Tracing
  4. Meshes
  5. Boundary Volume Hierarchy
  6. Shader Pipeline
  7. Kinematics
  8. Mass-Spring Systems

There is a slight dependence to these assignments:

Each topic has its own git repository. Inside each, there is a README.md file contains background information necessary for understanding the topic's coding assignment.

The Introduction README.md contains detailed information about compilation, file layout and assignment protocols.

Textbook

The Book.

These assignments were prepared to closely follow:

Fundamentals of Computer Graphics, Fourth Edition, Steve Marschner, Pete Shirley, et al. 2015.

Wikipedia

The background materials link heavily to Wikipedia articles. Sometimes the wikipedia articles relating to computer graphics are less informative than they could be. Edit them!

Are you an instructor?

There are instructor repositories for all of the assignments above. If you're an instructor for a geometry processing course, send an email to jacobson@cs.toronto.edu for an invitation.

For my reference, I can add a new instructor with github id [githubid] to all solution repos using:

github-add-user -u alecjacobson -r $(echo alecjacobson/computer-graphics-{raster-images,ray-casting,ray-tracing,bounding-volume-hierarchy,meshes,shader-pipeline,kinematics,mass-spring-systems}-solution | tr ' ' ',') [githubid]

Corresponding solution/instructor (private) repos are located at:

  1. Pre test
  2. Introduction & Raster Images
  3. Ray Casting
  4. Ray Tracing
  5. Bounding Volume Hierarchy
  6. Meshes
  7. Shader Pipeline
  8. Kinematics
  9. Mass-Spring Systems

Future Assignments

  • Ambient Occlusion + Occluding Contours (Multipass rendering)
  • Boids
  • Rigid Body with contacts
  • Cloth Simulation
  • Physically Based Real-Time Rendering
  • Half-Edge Data-structre
  • 1D plotting (vector graphics line rasterization)
  • Path Tracing, BRDFs
  • Mesh Laplacians

About

Computer Graphics Course

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published