CMPT 361: Introduction to Computer Graphics

(Summer 2019)

teapots

Introduction

Prerequisite

Course Staff

Resources

Course Schedule

bunnies


Introduction

Computer graphics provides the tools to model 2D, 3D, or higher dimensional data and processes, to generate believable or artistic rendering of the models, to interact with them through graphical user interfaces, and to create animations for communication, education and entertainment. This course offers an introduction to the modeling and rendering aspects of computer graphics. Topics include graphics display and interaction hardware, basic algorithms for 2D primitives, anti-aliasing, 2D and 3D geometrical transformations, 3D projections/viewing, Polygonal and hierarchical models, hidden-surface removal, basic rendering techniques (color, shading, raytracing, radiosity), and interaction techniques.The mathematical concepts and techniques behind the development of various computer graphics algorithms will be first covered. You will then learn to implement some selected algorithms through programming assignments using OpenGL and WebGL, gaining hands-on experience programming things ranging from simple 2D games and creative scene modeling to photorealistic rendering. In this course we will not cover computer animation topics, please refer to CMPT466 course webpage if you are interested.


Prerequisite


Course Staff

Principal Instructor: KangKang Yin
Guest Instructor:
Teaching Assistant: Mahdi Davoodikakhki <mahdi_davoodikakhki@sfu.ca>; Zeshi Yang <zeshi_yang@sfu.ca>


Resources

Recommended Textbook: " Interactive Computer Graphics: A Top-Down Approach with Web GL, 7th Edition", by Edward Angel and Dave Shreiner.

Reference books: OpenGL Programming Guide: The Official Guide to Learning OpenGL;    Computer Graphics: Principles and Practice

The OpenGL Programmer's Guide (the Redbook) 8th Edition;
OpenGL ES 3.0 Programming Guide;
WebGL Programming Guide;
WebGL Beginner's Guide;
WebGL: Up and Running;
JavaScript: The Definitive Guide


Course Schedule (tentative, subject to changes, check regularly)

Week Monday Wednesday Friday
1 May 6
Introduction (Chapter 1.1)
May 8
Image Formation (Chapters 1.2-1.5) 
May 10
Image Formation (Chapters 1.2-1.5)
2 May 13
Graphics Pipeline (Chapters 1.6-1.10)
May 15
Hello Triangle (Chapters 2.1-2.3)
Common    triangle.html    triangle.js   
triangle2.html    triangle2.js    vshader.glsl    fshader.glsl 
May 17
GLSL (Chapters 2.4-2.6)
GLSL Functions
3 May 20
Victoria Day, no class
  
May 22
Class Cancelled
May 24
Graphics Programming (Chapters 2.7-2.10, A.1-A.2)
WebGL 2.0 and GLSL ES 3.0 API Quick Reference
WebGL 2.0 Specification
4 May 27
Interaction and Animation (Chapters 3.1-3.6)
Programming Assignment 1 Release
May 29
Interaction and Animation (Chapters 3.7-3.11) 
May31
Programming Tutorial
triangleMany.html    triangleMany.js  
5 Jun 3
Geometric Objects (Chapters 4.1-4.2, B.1-B.4)
Jun 5
Coordinate Systems (Chapaters 4.3,4.7)
Jun 7
Transformations (Chapters 4.9-4.11)
6 Jun 10
Transformations (Chapters 4.9-4.11)
Jun 12
Transformations (Chapters 4.9-4.11)
Programming Assignment 1 Due
Jun 14
 Modeling (Chapters 4.6,4.12-4.13)
7 Jun 17
Viewing (Chapters 5.1-5.3)
Jun 19
Projection Matrices (Chapters 5.4-5.8)
Written Assignment Release
Jun 21
Projection Matrices (Chapters 5.4-5.8)
8 Jun 24
Projections and Shadows (Chapters 5.9-5.11)
Jun 26
Lighting and Shading (Chapters 6.1-6.4,6.7)
Programming Assignment 2 Release
Jun 28
Lighting and Shading (Chapters 6.1-6.4,6.7) 
9 Jul 1
Canada Day, no class

Jul 3
Polygonal Shading (Chapters 6.5,6.8,6.10)
Written Assignment Due
Jul 5
Programming Assignment I Review;
Programming Assignment II Tutorial
10 Jul 8
Discrete Techniques (Chapters 7.1-7.2)
Jul 10
Texture Mapping (Chapters 7.3-7.6)
Jul 12
Environment&Bump Mapping (Chapters 7.7-7.9)
11 Jul 15
Framebuffer Objects (Chapters 7.12-7.14)
Jul 17
Blending and Antialiasing (Chapters 7.10, 8.12)
Programming Assignment 2 Due
Jul 19
Hierarchical Modeling (Chapters 9.1-9.6)
Programming Assignment 3 Release
12 Jul 22
Scene Graphs (Chapters 9.7-9.9)
Jul 24
Clipping (Chapters 8.1-8.7)
Jul 26
Rasterization and Hidden Surface Removal
(Chapters 8.8-8.11,9.10)
13 Jul 29
Ray Tracing (Chapters 12.1-12.4)
Jul 31
Assignments Review
Aug 2
Review and Discussion (Chapter 8.2)
Programming Assignment 3 Due
14 Aug 5
BC Day, no class
Aug 7
Exam: 1:00-3:00pm WMC3520