Course designed by Prof. Alec Jacobson,
69 | David I.W. Levin and Karan Singh from University of Toronto, with assistance
70 | from Yotam Gingold at GMU.
71 |
72 |
Prerequisites and dependencies
73 |
74 |
In general, the materials in this course assume that students should have
75 | already taken Linear Algebra and Calculus.
76 |
77 |
Students should have already taken Introduction to Computer Science and should
78 | be proficient in computer programming (in any language) and should feel
79 | comfortable programming in C++.
80 |
81 |
Some coding assignments make use of
82 | Eigen, an open-source
83 | linear algebra library; and libigl, an
84 | open-source geometry processing library. Each assigment is built using
85 | CMake.
86 |
87 |
Organization
88 |
89 |
The course is structured to run with fast paced weekly assignments in the
90 | following order:
Each topic has its own git repository. Inside each, there is a README.md file
108 | contains background information necessary for understanding the topic’s coding
109 | assignment.
110 |
111 |
The
112 | Introduction
113 | README.md contains detailed information about compilation, file layout and
114 | assignment protocols.
The background materials link heavily to Wikipedia articles. Sometimes the
132 | wikipedia articles relating to geomtry processing are less informative than they
133 | could be. Edit them!
134 |
135 |
In university offerings of this course, 5% credit has been awarded to the entire
136 | class for collaboratively improving Wikipedia’s entries on geometry processing
137 | topics.
138 |
139 |
Are you an instructor?
140 |
141 |
There are instructor repositories for all of the assignments above. If you’re an
142 | instructor for a geometry processing course, send an email to
143 | jacobson@cs.toronto.edu for an invitation.
144 |
145 |
Corresponding solution/instructor (private) repos are located at:
152 |
153 |
154 |
155 |
156 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Computer Graphics Course
2 |
3 | Course material for an undergraduate level course in [computer
4 | graphics](https://en.wikipedia.org/wiki/Computer_graphics)
5 |
6 | Course designed by [Prof. Alec Jacobson](http://www.cs.toronto.edu/~jacobson/),
7 | David I.W. Levin and Karan Singh from University of Toronto, with assistance
8 | from Yotam Gingold at GMU.
9 |
10 | ## Prerequisites and dependencies
11 |
12 | In general, the materials in this course assume that students should have
13 | already taken **Linear Algebra** and **Calculus**.
14 |
15 | Students should have already taken **Introduction to Computer Science** and should
16 | be proficient in computer programming (in any language) and should feel
17 | comfortable programming in **C++**.
18 |
19 | Some coding assignments make use of
20 | [Eigen](https://en.wikipedia.org/wiki/Eigen_(C%2B%2B_library)), an open-source
21 | linear algebra library; and [libigl](http://libigl.github.io/libigl/), an
22 | open-source geometry processing library. Each assigment is built using
23 | [CMake](https://en.wikipedia.org/wiki/CMake).
24 |
25 | ## Organization
26 |
27 | The course is structured to run with fast paced _weekly_ assignments in the
28 | following order:
29 |
30 | 1. [Introduction & Raster Images](https://github.com/alecjacobson/computer-graphics-raster-images)
31 | 2. [Ray Casting](https://github.com/alecjacobson/computer-graphics-ray-casting)
32 | 3. [Ray Tracing](https://github.com/alecjacobson/computer-graphics-ray-tracing)
33 | 4. [Meshes](https://github.com/alecjacobson/computer-graphics-meshes)
34 | 5. [Boundary Volume Hierarchy](https://github.com/alecjacobson/computer-graphics-boundary-volume-hierarchy)
35 | 6. [Shader Pipeline](https://github.com/alecjacobson/computer-graphics-shader-pipeline)
36 | 7. [Kinematics](https://github.com/alecjacobson/computer-graphics-kinematics)
37 | 8. [Mass-Spring Systems](https://github.com/alecjacobson/computer-graphics-mass-spring-systems)
38 |
39 | There is a slight dependence to these assignments:
40 |
41 | - [Ray Casting](https://github.com/alecjacobson/computer-graphics-ray-casting)
42 | before [Ray
43 | Tracing](https://github.com/alecjacobson/computer-graphics-ray-tracing)
44 |
45 | Each topic has its own git repository. Inside each, there is a `README.md` file
46 | contains background information necessary for understanding the topic's coding
47 | assignment.
48 |
49 | The
50 | [Introduction](https://github.com/alecjacobson/computer-graphics-raster-images)
51 | `README.md` contains detailed information about compilation, file layout and
52 | assignment protocols.
53 |
54 | ## Textbook
55 |
56 | 
57 |
58 | These assignments were prepared to closely follow:
59 |
60 | [_Fundamentals of Computer Graphics, Fourth
61 | Edition_](https://www.cs.cornell.edu/~srm/fcg4/), Steve Marschner, Pete Shirley,
62 | et al. 2015.
63 |
64 | ## Wikipedia
65 |
66 | The background materials link heavily to Wikipedia articles. Sometimes the
67 | wikipedia articles relating to computer graphics are less informative than they
68 | could be. Edit them!
69 |
70 | ## Are you an instructor?
71 |
72 | There are instructor repositories for all of the assignments above. If you're an
73 | instructor for a geometry processing course, send an email to
74 | jacobson@cs.toronto.edu for an invitation.
75 |
76 | > For my reference, I can add a new instructor with github id `[githubid]` to all solution repos using:
77 | >
78 | > ```
79 | > 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]
80 | > ```
81 |
82 | ### Corresponding solution/instructor (private) repos are located at:
83 |
84 | 0. [Pre test](https://github.com/alecjacobson/computer-graphics-pre-test)
85 | 1. [Introduction & Raster Images](https://github.com/alecjacobson/computer-graphics-raster-images-solution)
86 | 2. [Ray Casting](https://github.com/alecjacobson/computer-graphics-ray-casting-solution)
87 | 3. [Ray Tracing](https://github.com/alecjacobson/computer-graphics-ray-tracing-solution)
88 | 4. [Bounding Volume Hierarchy](https://github.com/alecjacobson/computer-graphics-bounding-volume-hierarchy-solution)
89 | 5. [Meshes](https://github.com/alecjacobson/computer-graphics-meshes-solution)
90 | 6. [Shader Pipeline](https://github.com/alecjacobson/computer-graphics-shader-pipeline-solution)
91 | 7. [Kinematics](https://github.com/alecjacobson/computer-graphics-kinematics-solution)
92 | 8. [Mass-Spring Systems](https://github.com/alecjacobson/computer-graphics-mass-spring-systems-solution)
93 |
94 | ## Future Assignments
95 |
96 | - Ambient Occlusion + Occluding Contours (Multipass rendering)
97 | - Boids
98 | - Rigid Body with contacts
99 | - Cloth Simulation
100 | - Physically Based Real-Time Rendering
101 | - Half-Edge Data-structre
102 | - 1D plotting (vector graphics line rasterization)
103 | - Path Tracing, BRDFs
104 | - Mesh Laplacians
105 |
--------------------------------------------------------------------------------