Lecture Materials: Videos and Slides

This page provides links to the videos and slides from the lectures.

It provides a detailed outline of the course content. You can click the timestamp to watch a specific topic.

You can look at the version of this page from last year 2021 Course Outline with Video Links to see a different version of (pretty much) the same material, or to get a sense of coming attractions. Last year’s topics were very similar to what we are doing this year.

Remember: the slides are intentionally not meant to stand alone! They are designed as a prop for supporting the lecture.

Week 1 (1/23 - 1/29)

[Tue 1/25] Course Overview
[Videos Lecture 1 ]
[Slides Lecture 1 ]

[Thur 1/27] Pre Graphics
[Videos Lecture 2 ]
[Slides Lecture 2 ]

Week 2 (1/30 - 2/5)

[Tue 2/1] Part 1/2 - Graphics 101
[Videos Lecture 3 - Part 1/2 ]
[Slides Lecture 3 - Part 1/2 ]

  • How computers create things we see [2:06]
  • How/what do we see? [2:28]
  • Depth and Distance [8:35]
  • Representing images: displays, buffers [16:06]
  • Distinctions in displays: continuous v.s. flicker/strobe [25:04]
  • Flicker fusion [26:09]
  • Animation and redraw [32:56]
  • Display synchronization (Buffering), double buffering [34:29]
  • Buffering and web graphics [40:12]
  • End [42:36]

[Tue 2/1] Part 2/2 - Web Browser Graphics
[Videos Lecture 3 - Part 2/2 ]
[Slides Lecture 3 - Part 2/2 ]

  • Web browser graphics APIs: Canvas2D, SVG, WebGL [1:05]
  • Web page with a Canvas element [5:51]
  • Immediate v.s. Retained APIs [16:14]
  • When I draw: once, over and over, when an event happens [22:32]
  • Drawing and redrawing [25:09]
  • Where do I draw? [28:20]
  • Canvas coordinates [30:57]
  • End [37:13]

[Thur 2/3] More 2D Graphics
[Videos Lecture 4 ]
[Slides Lecture 4 ]

  • Agenda for today [3:35]
  • Canvas API recap (draw & redraw, when/where/what to draw) [4:32]
  • Save and Restore [12:09]
  • Introduction to drawing with Paths (open/closed/disconnected shapes) [20:53]
  • Paths in-depth (path operators, polygon filling rules, convex & concave polygons) [28:39]
  • JS Tip for today: Spread Syntax [36:50]
  • Winding rules (non-zero vs. even-old) [42:48]
  • Capturing mouse positions from events (canvas vs. client coordinates) [51:20]
  • The motivation of transformation [1:06:28]
  • Key ideas of transformation [1:16:49]
  • End [1:24:04]

Week 3 (2/6 - 2/12)

[Tue 2/8] Transformations
[Videos Lecture 5 ]
[Slides Lecture 5 ]

[Thur 2/10] More Transformations
[Videos Lecture 6 ]
[Slides Lecture 6 ]

Week 4 (2/13 - 2/19)

[Tue 2/15] Transformation Math 1
[Videos Lecture 7 ]
[Slides Lecture 7 ]

[Thur 2/17] Transformation Math 2
[Videos Lecture 8 ]
[Slides Lecture 8 ]

Week 5 (2/20 - 2/26)

[Tue 2/22] Curves 1
[Videos Lecture 9 ]
[Slides Lecture 9 ]

[Thur 2/24] Curves 2
[Videos Lecture 10 ]
[Slides Lecture 10 ]

  • Simple Polynomial Lines [2:47]
  • Basis Functions and Control Points [8:39]
  • Quadratic Segments [10:03]
  • Hermite Cubics (basis functions, interpolation, continuity) [21:09]
  • Cardinal Splines [34:42]
  • Bezier Curves (nice properties, DeCastlejau construction, blending tree) [48:16]
  • Cubic Beziers (4 points) [1:08:22]
  • End [1:18:34]

Week 6 (2/27 - 3/5)

[Mon 2/28] Bonus: Bezier Review
[Videos Bezier Review ]
[Slides Bezier Review ]

  • Two-point Beizier curve (it's a line segment!) [0:52]
  • Quadratic Bezier (three points [n=3], degree = n-1 = 2) [3:52]
  • Connect a line Bezier to a quadratic Bezier [7:40]
  • Cubic Bezier (four points [n=4], degree = n-1 = 3) [12:55]
  • Convert other Cubic forms to Bezier [16:31]
  • Split one Bezier curve to multiple Bezier curves [20:00]
  • End [23:27]

[Tue 3/1] Even More Curves
[Videos Lecture 11 ]
[Slides Lecture 11 ]

[Wed 3/2] JS Tips
[Videos JS Tips ]
[Slides JS Tips ]

  • Tip 1: Survival Example [1:01]
  • Tip 2: Do not pretend it is "some other language" [2:24]
  • Tip 3: Understand scope, functions, closures [2:56]
  • Tip 4: Spread Syntax and Arguments [3:47]
  • Tip 5: Literal Objects [6:26]
  • Tip 6: Class-based objects [9:23]
  • Tip 7: Functions and Closures [16:25]
  • Tip 8: Constructors and Methods [21:22]
  • Tip 9: Beware of "this" keyword [24:28]
  • Tip 10: ES6 Modules [33:07]
  • Tip 11: Typing [36:39]
  • End [45:44]

[Thur 3/3] 3D and THREE.js
[Videos Lecture 12 ]
[Slides Lecture 12 ]

Week 7 (3/6 - 3/12)

[Tue 3/8] 3D Coordinate Systems
[Videos Lecture 13 ]
[Slides Lecture 13 ]

[Thur 3/10] 3D Hierarchy and Viewing
[Videos Lecture 14 ]
[Slides Lecture 14 ]

Week 8 (3/13 - 3/20)

[Wed 3/16] Asynchronous Programming (for THREE)
[Videos Async Programming ]
[Slides Async Programming ]

[Wed 3/19] 3D Extra Video: Projection and Perspective
[Videos Lecture 14a ]
[Slides Lecture 14a ]

[Wed 3/19] 3D Extra Video: Lighting and Materials
[Videos Lecture 14b ]
[Slides Lecture 14b ]

[Wed 3/19] 3D Extra Video: Animation in THREE
[Videos Lecture 14c ]
[Slides Lecture 14c ]

Week 9 (3/21 - 3/26)

[Tue 3/22] Rotations
[Videos Lecture 15 ]
[Slides Lecture 15 ]

[Thur 3/24] Meshes
[Videos Lecture 16 ]
[Slides Lecture 16 ]

Week 10 (3/27 - 4/2)

[Tue 3/29] Texture A: Basic Texturing Review
[Videos Lecture 17a ]
[Slides Lecture 17a ]

[Tue 3/29] Texture B: Texture Basics
[Videos Lecture 17b ]
[Slides Lecture 17b ]

[Tue 3/29] Texture C: Texture in THREE
[Videos Lecture 17c ]
[Slides Lecture 17c ]

  • The steps to texture mapping [0:45]
  • Textures in THREE: Create objects with UVs [1:51]
  • Textures in THREE: Load Textures [5:26]
  • Textures in THREE: Attach as colors to objects [8:25]
  • An Entire Example [9:42]
  • Some caveats for Textures in THREE [12:04]
  • End [13:23]

[Tue 3/29] Texture D: How Texture Mapping Works
[Videos Lecture 17d ]
[Slides Lecture 17d ]

  • Texture Coordinate and Texture Lookup [0:14]
  • The Problems of Texture Lookup [1:54]
  • Texture Lookups: Magnification [3:39]
  • Texture Lookups: Minification [8:50]
  • Simple Filtering [11:12]
  • Digging into Filtering: Summed Area Table [13:27]
  • Digging into Filtering: Mip-Maps [18:18]
  • THREE Options [30:06]
  • End [32:07]

[Thu 3/31] Advanced Texturing Part 2: Fake Normals and Bump Mapping (FYI: No Lecture 18A)
[Videos Lecture 18b ]
[Slides Lecture 18b ]

[Thu 3/31] Advanced Textures: Other Texturing Tricks
[Videos Lecture 18c ]
[Slides Lecture 18c ]

[Thu 3/31] Advanced Textures: Sky Boxes and Environment Maps
[Videos Lecture 18d ]
[Slides Lecture 18d ]

[Thu 3/31] Advanced Textures: Shadow Maps
[Videos Lecture 18e ]
[Slides Lecture 18e ]

Week 11 (4/3 - 4/9)

[Tue 4/5] Drawing in 3D
[Videos Lecture 19 ]
[Slides Lecture 19 ]

[Thu 4/7] Drawing Fast: The Graphics Pipeline
[Videos Lecture 20 ]
[Slides Lecture 20 ]

Week 12 (4/10 - 4/16)

[Tue 4/12] Shaders
[Videos Lecture 21 ]
[Slides Lecture 21 ]

[Thu 4/14] Shaders 2
[Videos Lecture 22 ]
[Slides Lecture 22 ]

  • Lighting: The General Idea [7:10]
  • The Historic Lighting Model [14:39]
  • Diffuse Materials [20:26]
  • Shiny Things [29:28]
  • Putting it together: The Phong Lighting Model [40:30]
  • Designing Phone Material in THREE [42:58]
  • The Geometric Properties (transformations of normals, lighting coordinate system) [50:12]
  • What does THREE do [57:24]
  • End [1:17:46]

Week 13 (4/17 - 4/23)

[Tue 4/19] Shaders 3 - Stripes Anti-Aliasing Noise Displacement
[Videos Lecture 23 ]
[Slides Lecture 23 ]

[Thu 4/21] Performance Tricks
[Videos Lecture 24 ]
[Slides Lecture 24 ]

Week 14 (4/24 - 4/30)

[Tue 4/26] Deformation and Shape
[Videos Lecture 25 ]
[Slides Lecture 25 ]

[Thu 4/28] Free Form Surfaces
[Videos Lecture 26 ]
[Slides Lecture 26 ]

Week 15 (5/1 - 5/7)

[Tue 5/1] Rasterization and Aliasing
[Videos Lecture 27 ]
[Slides Lecture 27 ]

[Thu 5/3] Ray Tracing and Light-Based Rendering
[Videos Lecture 28 ]
[Slides Lecture 28 ]