CPSC 314
Winter term 2015

This course provides an introduction to the computer graphics algorithms, with main focus on rendering, glancing into modeling and animation.

We will learn the modern programmable graphics pipeline, using the OpenGL shading language (GLSL), with vertex and fragment shaders. For three assignments, we will use WebGL and Javascript; for the last one we'll use C++.

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

Instructor: Mikhail Bessmeltsev. Office hour: Fri, 1-2pm ICICS 187.

Contact: We will use Piazza for all the announcements and questions. Please sign up!

Course Work

Mark distribution: Programming Assignments (40%), Theory Assignments (8%), Midterms (24%), Participation (2%), Final Exam (26%) [Bonus (10%)]

Schedule: Midterm 1 on October 9th (in class), Midterm 2 on November 9th (in class). Final exam: Dec 18 2015 08:30 AM.


Lectures are Mondays, Wednesdays and Fridays 12-1 pm at DMP 301.

Here lecture materials will appear as we proceed, with no guarantee we'll post everything. So do come to the lectures!

Wed, Sept 9th01 - Intro[PDF]
Fri, Sept 11th02 - Rendering Pipeline, Part I[PDF]
Mon, Sept 14th03 - Shaders and OpenGL[PDF]
Wed, Sept 16th04 - Rendering Pipeline, Part II[PDF]
Fri, Sept 18th05 - Coordinate Systems & Linear Transformations[PDF]
Mon, Sept 21st06 - (Continuing Linear Transformations)^
Wed, Sept 23rd07 - Affine Transformations[PDF]
Fri, Sept 25th08 - Homogeneous coordinates and transformations[PDF]
Mon, Sept 28th09 - Composite transformations. Hierarchies.[PDF]
Wed, Sept 30th10 - Transformations wrapup. Camera.[PDF]
Fri, Oct 2nd11 - Camera. Orthographic projection.[PDF]
Mon, Oct 5th12 - Orthographic & perspective projections.[PDF]
Wed, Oct 7th13 - Misc. transformations. Review. [PDF]
Fri, Oct 9th(Midterm I)
Mon, Oct 12th(Thanksgiving)
Wed, Oct 14th14 - Clipping. Rasterization [PDF]
Fri, Oct 16th15 - Rasterization (cont.) [PDF]
Mon, Oct 19th16 - Interpolation. Barycentric coordinates ^
Wed, Oct 21st17 - Lighting and shading [PDF]
Fri, Oct 23rd18 - Lighting and shading ^
Mon, Oct 26th19 - Texturing [PDF]
Wed, Oct 28th20 - Texturing, bump/displacement mapping. Reflections. ^
Fri, Oct 30th21 - Shadow maps (prev. pdf). Depth Test. [PDF]
Mon, Nov 2nd22 - Global Illumination. Ray Tracing [PDF]
Wed, Nov 4th23 - Global Illumination Cont. ^
Fri, Nov 6th24 - Review 2 [PDF]
Mon, Nov 9th(Midterm II)
Wed, Nov 11th(Rememberance Day)
Fri, Nov 13th25 - Global Illumination. Path Tracing[PDF]
Mon, Nov 16th26 - Path Tracing cont. Monte-Carlo methods.^
Wed, Nov 18th27 - Blending. Compositing[PDF]
Fri, Nov 20th28 - Sampling. Aliasing & Anti-Aliasing[PDF]
Mon, Nov 23rd29 - Color[PDF]
Wed, Nov 25th30 - Color cont. (prev pdf). Interpolation [PDF]
Fri, Nov 27th31 - Interpolation^
Mon, Nov 30th32 - Intro to Geometric Modeling [PDF]
Wed, Dec 2nd33 - Big review I [PDF]
Fri, Dec 4th34 - Big review II [PDF]

Assignments & Labs

#Date ReleasedDate dueLinks
1 - IntroSept 11thSept 25th[Template] | [PDF]
Theory 1Sept 15thSept 23rd[PDF] | [Solution]
Theory 2Sept 30thOct 7th[PDF] | [Solution]
2 - Fun with TransformationsOct 2ndOct 19th[Template] | [PDF]
3 - Lighting and ShadingOct 23rdNov 6th[Template] | [PDF]
Theory 3Oct 23rdNov 2nd[PDF] | [Solution]
4 - TracingNov 16thNov 30th[Template] | [PDF]
Theory 4Nov 25thDec 2nd[PDF]

TAs: Izabelle Janzen, Henry Li, and Minchen Li.
Please contact them via Piazza or come to one of the labs.

TAs will be able to answer your questions regarding the assignments during the lab hours: Tuesdays and Wednesdays 1 - 2 pm, and Thursdays 3.30 - 4.30 pm.

To submit your programming assignment, please use handin.

Each programming assignment is due 23:59:59 pm on the day specified, measured by the handin. No late assignments accepted, except for the grace days:

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 "face-to-face grading," i.e., you will be required to demonstrate that you understand why your program works. You must be able to explain every single line you wrote! You must get a passing grade in assignments to pass the course.


While there is no required textbook for the course, you can find most of the material covered on the lectures in Foundations of 3D Computer Graphics by Steven J. Gortler, MIT Press, 2012, which you can get online for free. Get to know the book well, it might come in handy!

WebGL/OpenGL resources: Official Three.js docs | A good WebGL book | Easy Three.js/WebGL tutorial

Previous course offerings: Jan 2015 | Sept 2014 | Jan 2014 | Sept 2013 | Jan 2013 | Sept 2012 | Jan 2012 | Sept 2011 | Jan 2011 | Sept 2010 | Jan 2010


Plagiarism: Shortly: don't cheat. What's considered cheating in CPSC 314: here. What department does with cheaters: here.

Missed work: Policy here.

Dropping: Because of the high demand for this course, the drop deadlines will be strictly enforced. No drop forms will be signed by the instructor after the first drop deadline. After that date, you will not be given permission to drop, and you will either have to complete the course or receive an "F" for the course at the end of the term. This policy has been adopted to encourage students to make a serious commitment to the course or to drop it early so that other students waiting to get into the course can register for it.

Background image by Max Braun. Template by Iron Summit Media Strategies, LLC.