CMPT 361: Introduction to Computer Graphics

(Summer 2023)

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 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
Teaching Assistants: Sai Raj Kishore Perla; Xiang Xu; Baiyu Li


Resources

" 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 Tuesday (10:30-12:20)
BLU9660
Friday (10:30-11:20)
AQ3149
1 May 9
Introduction (Chapter 1.1);
Image Formation (Chapters 1.2-1.5)
May 12 (Instructor Travelling)
HTML and JavaScript Tutorial 
2 May 16
Graphics Pipeline (Chapters 1.6-1.10)
May 19
Hello Triangle (Chapters 2.1-2.3)
Common    triangle.html    triangle.js   
triangle2.html    triangle2.js    vshader.glsl    fshader.glsl 
3 May 23
GLSL (Chapters 2.4-2.6)
Graphics Programming (Chapters 2.7-2.10, A.1-A.2);
May 26
Interaction and Animation (Chapters 3.1-3.9)
Programming Assignment 1 Release
4 May 30 (Instructor Travelling)
WebGL and GLSL Tutorial;
Graphics Programming Tutorial
Jun 2 (Instructor Travelling)
No class, watch Pat Hanrahan's talk on
Shading Languages and the Emergence of Programmable Graphics Systems
5 Jun 6
Geometric Objects (Chapters 4.1-4.2, B.1-B.4)
Jun 9
Coordinate Systems (Chapaters 4.3,4.7)
6 Jun 13
Transformations (Chapters 4.9-4.11)
Jun 16
Modeling (Chapters 4.6,4.12-4.13)
7 Jun 20
Viewing (Chapters 5.1-5.3)
Jun 23
Projection Matrices (Chapters 5.4-5.8)
Writing Assignment Release
8 Jun 27
Lighting and Shading (Chapters 6.1-6.4,6.7)
Jun 30
Polygonal Shading (Chapters 6.5,6.8,6.10)
9 Jul 4
Discrete Techniques (Chapters 7.1-7.2);
Texture Mapping (Chapters 7.3-7.6)
Jul 7
Texture Mapping (Chapters 7.3-7.6)
Programming Assignment 2 Release
10 Jul 11
More Mapping Methods (Chapters 7.7-7.9)
Jul 14
Render to Texture (Chapters 7.12-7.14)
11 Jul 18
Render to Texture (Chapters 7.12-7.14);
Shadows (Chapters 5.9-5.11)
Jul 21
Blending and Antialiasing (Chapters 7.10, 8.12)
12 Jul 25
Hierarchical Modeling (Chapters 9.1-9.6);
Scene Graphs (Chapters 9.7-9.9)
Programming Assignment 3 Release
Jul 28 
Clipping (Chapters 8.1-8.7)
13 Aug 1
Rasterization and Hidden Surface Removal
(Chapters 8.8-8.11,9.10);
Ray Tracing (Chapters 12.1-12.4)
Aug 4 (last class)
Review and Discussion (Chapter 8.2)
 14 onwards

Final Exam: August 14, 15:30-17:30, AQ3005