CPSC 314 - 2020 Winter Term 1
The course provides an introduction to computer graphics, with a focus on the fundamentals of modeling, rendering, and basic animation. We will learn the modern programmable graphics pipeline, with vertex and fragment shaders, as accessed via WebGL and javascript.

Please see the official UBC course description for prerequisites and schedules.
Staff





Instructor
Teaching Assistant
Teaching Assistant
Teaching Assistant
Teaching Assistant
Enrique Rosales
Yibo Jiao
Tianxin Tao Jake Wong Mandy Wong
(albertr[at]cs.ubc.ca)
Office hours
Enrique Rosales: Wednesday 4:30 - 5:30 pm by Zoom, or by appointment (email me)
Yibo Jiao: Thursday 22:00 - 23:00 pm, and Friday 10:00 - 12:00 am by zoom
Tianxin Tao: Tuesday 3:30 - 4:30 pm by zoom
Jake Wong: Monday 11:00 am - 12:00 pm, and Friday 2:00 - 3:00 pm by Zoom
Mandy Wong: Monday 1:00 - 2:00 pm, and Wednesday 11:00 am - 12:00 pm by Zoom
Communications
We will use Piazza for all announcements and questions. Please sign up!

Grades will be returned via handback and Canvas. If you have any issues with an assigned grade, please use the grade disputes webform to request a review.
Lectures
Mondays, Wednesdays, and Fridays from 15:00 to 16:00. Zoom links will be posted on canvas and piazza. Lecture materials and recorded lectures will be posted here as we proceed.
(The math review will be recorded and posted on Saturday, Sept 12th on canvas and piazza)

Date Topic Reading Suggestion Links
Wed, Sept 9th cancelled due to the Scholar Strike for Black Lives Canada
Fri, Sept 11th L01 - Intro [VIDEO] [EXTRA] [PDF]
Sun, Sept 13th L02 - Math Review B2(4,5,7,9) B5(6) B4(2.2, 2.3) [VIDEO] [PDF]
Mon, Sept 14th L03 - Rendering Pipeline Architecture B7(1) B4(1) B3(8) [VIDEO] [PDF]
Wed, Sept 16th L04 - Vertex Shading B6(6) B4(6) [VIDEO] [PDF]
Fri, Sept 18th L05 - Fragment Shading B6(6) [VIDEO] [PDF]
Mon, Sept 21st L06 - Per-Fragment Operations B2(3) [VIDEO] [PDF]
Wed, Sept 23rd L07 - Coordinate Systems and Linear Transformations B3(6) [VIDEO] [PDF]
Fri, Sept 25th L08 - Affine Transformations B3(6) (Required) [VIDEO] [PDF]
Mon, Sept 28th L09 - Homogeneous Coordinates B2(6.4) [VIDEO] [PDF]
Wed, Sept 30th L10 - Composite Transformations B6(4) [VIDEO] [PDF]
Fri, Oct 2nd L11 - Forward and Inverse Kinematics B4(5.4) [VIDEO] [EXTRA] [PDF]
Mon, Oct 5th L12 - Camera Transformation B4(10) B3(7) [VIDEO] [PDF]
Wed, Oct 7th L13 - Camera Projections (Required) B3(7) [VIDEO] [PDF]
Fri, Oct 9th L14 - Review [VIDEO] [PDF]
Mon, Oct 12th (Thanksgiving)
Wed, Oct 14th Midterm 1
Fri, Oct 16th L15 - Midterm Review [VIDEO]
Mon, Oct 19th L16 - Clipping, Rasterization, and Barycentric Coordinates B5(11) B1(5) [VIDEO] [PDF]
Tue, Oct 20th L16b - Rasterization B1(23) [VIDEO] [PDF]
Wed, Oct 21st L17 - Lighting and Shading Models 1 B1(5) [VIDEO] [PDF]
Fri, Oct 23rd L18 - Lighting and Shading Models 2 B3(1) B2(10.6) B1(5,6) [VIDEO] [PDF]
Mon, Oct 26th L19 - Texturing and Maps 1 B1(6) [VIDEO] [PDF]
Wed, Oct 28th L20 - Texturing and Maps 2 B1(6) [VIDEO] [PDF]
Fri, Oct 30th L21 - Shadows B1(7) [VIDEO] [PDF]
Mon, Nov 2nd L22 - Geometry B1(17) [VIDEO] [PDF]
Wed, Nov 4th L23 - Ray Tracing B1(22.6 - 22.9) B2(13) [VIDEO] [PDF]
Fri, Nov 6th L24 - Intersections B8 B9 B10 B3(4) [VIDEO] [PDF]
Mon, Nov 9th L25 - Aliasing, Anti-aliasing B8(6) B1(5) [VIDEO] [PDF]
Wed, Nov 11th (Rememberance Day)
Fri, Nov 13th L26 - Global Illumination, Path Tracing B1(11) [VIDEO] [PDF]
Mon, Nov 16th L27 - Review [VIDEO] [PDF]
Wed, Nov 18th Midterm 2
Fri, Nov 20th L28 - Refraction and Depth of field B8(9, 11) [VIDEO] [PDF]
Mon, Nov 23rd L29 - Depth of field, Soft Shadows, Motion Blur B9(1,6) B1(10.1) [VIDEO] [PDF]
Wed, Nov 25th L30 - Accelerated Raytracing [VIDEO] [PDF]
Fri, Nov 27th L31 - Accelerated Raytracing 02 [VIDEO] [PDF]
Mon, Nov 30th L32 - Ray Marching (Sphere Tracing) [VIDEO] [PDF]
Wed, Dec 2nd L33 - Ray Marching Example [VIDEO] [PDF]
Mon, Dec 14 L34 - Final Review [VIDEO] [PDF]
Extra videos
Topic Links
IK Midterm Questions [VIDEO]
IK for multiple joints [VIDEO]
Labs
Labs start on September 15th and will be conducted fully online. Please attend your scheduled labs. Zoom links will be posted on canvas and piazza.

Schedule
Section L1A: Thu: 14:30 - 15:30
Section L1C: Tue: 13:00 - 14:00
Section L1D: Wed: 13:00 - 14:00
Section L1E: Thu: 15:30 - 16:30
Section L1G: Tue: 14:00 - 15:00
Assignments
Date Released Due Date Links
Intro (5%) Wed, Sept 10 Mon, Oct 5 [ZIP]
Theory 1 (4%) Mon, Sept 14 Fri, Sept 25 [PDF][Solution]
Theory 2 (4%) Mon, Sept 28 Fri, Oct 9 [PDF][Examples][Solution]
Transformations (7%) Wed, Sept 30 Fri, Oct 23 [ZIP]
Theory 3 (5%) Fri, Oct 23 Tue, Nov 10 [PDF][Solution]
Shading (7%) Tue, Oct 27 Fri, Nov 13 [ZIP]
Raytracing (10%) Wed, Nov 4 Fri, Dec 4 [PDF]
Theory 4 (7%) Fri, Nov 22 Tue, Dec 1 [PDF][Solution]


To submit your programming assignment, please use handin-in.

Each programming assignment is due 23:59:59 on the day specified, measured by the handin time stamp.

Grace Days
Each student may use up to 3 grace days per term. We will keep track of your grace days. Use these as you wish to help manage your time, but use them wisely. You can use all three on one assigment, or one day for each of three assignments. Grace days are counted as integers, i.e., if you are one hour late, that counts as one grace day. Once your grace days are all used, late assignments will receive a grade of zero.

Grading
We will use virtual "face-to-face grading," i.e., you will be required to demonstrate that you understand why your program works in a brief online meeting with your TA. You must be able to explain every single line you wrote!
Course Work & Policies
Course Work
Final grades will be calculated using the following weights across all course work:
Programming (29%), Theory Assignments (20%), Participation (2%), Midterm 1 (12%), Midterm 2 (12%), and Final Exam (25%). You must have a passing average over all assignments, as well as a passing grade on the final exam, to pass the course.

Plagiarism
To the point, don't cheat. What's considered cheating in CPSC 314: here.
What the department does with cheaters: here.
Resources
Textbooks
B1 - Real-time rendering by Tomas Akenine-Moller [et. al.]
B2 - 3D math primer for graphics and game development by Fletcher Dunn, Ian Parberry
B3 - Fundamentals of computer graphics by Peter Shirley [et. al.]
B4 - Foundations of 3D Computer Graphics by Steven J. Gortler
B5 - Mathematics for Computer Graphics by John Vince
B6 - WebGL Programming Guide: Interactive 3D Graphics Programming with WebGL by Kouichi Matsuda [et. al.]
B7 - OpenGL programming guide: the official guide to learning OpenGL by John Kessenich [et. al.]
B8 - Ray Tracing in One Weekend by Peter Shirley [et. al.]
B9 - Ray Tracing: The Next Week by Peter Shirley [et. al.]
B10 - Ray Tracing: The Rest of Your Life by Peter Shirley [et. al.]


Tutorials
Official Three.js docs | A good WebGL book | Easy Three.js/WebGL tutorial


Jan 2020 | Sept 2019 | Jan 2018 | Jan 2017 | Jan 2016 | Sept 2016 | Sept 2015 | Jan 2015 | Sept 2014 | Jan 2014