# CMPT 361: Introduction to Computer Graphics

## (Summer 2019)

### 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

• Must-have: CMPT 225 Data Structures/Programming, and MATH 232 Applied Linear Algebra or MATH 240 Algebra I: Linear Algebra
• Good-to-have skills: strong in programming; comfortable with math.

### 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.

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)

• The classes will be held on Mondays/Wednesdays/Fridays 11:30-12:20 at AQ3150. Instructor's office hours: Wednesdays 2-3pm (TASC1 8015). TA's office hours: Fridays 2-3pm (ASB9808).
• Lecture notes will be available before classes in CourSys
• Evaluation and Grading: Programming Assignment: 45%;  Written Assignment 15%; Final Exam: 40%.
 Week Monday Wednesday Friday 1 May 6 Introduction (Chapter 1.1) May 8Image Formation (Chapters 1.2-1.5) May 10Image 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 20Victoria Day, no class May 22Class Cancelled May 24Graphics 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 27Interaction and Animation (Chapters 3.1-3.6) Programming Assignment 1 Release May 29 Interaction and Animation (Chapters 3.7-3.11) May31Programming Tutorial triangleMany.html    triangleMany.js 5 Jun 3Geometric Objects (Chapters 4.1-4.2, B.1-B.4) Jun 5Coordinate Systems (Chapaters 4.3,4.7) Jun 7Transformations (Chapters 4.9-4.11) 6 Jun 10Transformations (Chapters 4.9-4.11) Jun 12Transformations (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 19Projection Matrices (Chapters 5.4-5.8) Written Assignment Release Jun 21Projection Matrices (Chapters 5.4-5.8) 8 Jun 24Projections 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 1Canada Day, no class Jul 3Polygonal Shading (Chapters 6.5,6.8,6.10)Written Assignment Due Jul 5 Programming Assignment I Review; Programming Assignment II Tutorial 10 Jul 8Discrete Techniques (Chapters 7.1-7.2) Jul 10Texture Mapping (Chapters 7.3-7.6) Jul 12Environment&Bump Mapping (Chapters 7.7-7.9) 11 Jul 15Framebuffer Objects (Chapters 7.12-7.14) Jul 17Blending and Antialiasing (Chapters 7.10, 8.12)Programming Assignment 2 Due Jul 19Hierarchical Modeling (Chapters 9.1-9.6)Programming Assignment 3 Release 12 Jul 22Scene Graphs (Chapters 9.7-9.9) Jul 24Clipping (Chapters 8.1-8.7) Jul 26Rasterization and Hidden Surface Removal(Chapters 8.8-8.11,9.10) 13 Jul 29Ray Tracing (Chapters 12.1-12.4) Jul 31 Assignments Review Aug 2 Review and Discussion (Chapter 8.2)Programming Assignment 3 Due 14 Aug 5BC Day, no class Aug 7Exam: 1:00-3:00pm WMC3520