An image of procedurally synthesized terrain (Image courtesy: Sheldon Taylor, Computer Graphics, Fall 2019)

Course Description

This course provides an introduction to the field of Computer Graphics with a focus on rendering and modeling. We will cover the basic mathematical concepts, such as 2D and 3D transformations, discuss rendering algorithms such as ray tracing and rasterization, and study the geometric modeling of curves and surfaces. We will investigate how these fundamental components are integrated in current graphics processors and study the corresponding programming APIs. Students will experiment with modern graphics programming and build demos in C++ and OpenGL ( GLSL or equivalent). By the end of the course, the student must be able to:

  • Explain and apply the fundamental mathematical concepts in computer-based image synthesis
  • Implement a basic rendering system based on ray tracing
  • Implement a basic rendering pipeline based on rasterization
  • Explain the core functionalities of the OpenGL graphics API
  • Develop simple graphics programs using shader programming
  • Explore geometric modeling using bezier curves and splines, NURBS etc.
  • Implement the data structures for polygonal meshes
  • Design and implement procedural synthesis methods

Course Administrivia

Instructor

Dr. Jiju Poovvancheri (e-mail:jiju.poovvancheri@smu.ca)

Lectures

  • Mondays (10:00am-11:15am) -LA 282
  • Wednesdays (10:00am-11:15am)-LA 282

Recitations

  • Wednesdays (11:30am-12:45pm)- SB 155

Office Hours (via MS Teams)

  • Mondays (11:30-1:00pm)
  • Wednesdays (1:00 – 2:30 pm)
  • Fridays (11:00am-2:00pm)

Course Pages

  • MS Class Teams (Lecture slides, discussion forum, grades)
  • Github (Set up & installation info, links to software libraries, starter codes of lab exercises & assignments)

Tentative Schedule (Fall 2021)

Date

Topic

Assignment

Ray tracing

Sept. 8

Sept. 13

Sept. 15

Sept. 20

Sept. 22

Sept. 27

Sept. 29

Oct. 4

Introduction to the course

Math Review

Ray tracing-basics

Ray tracing-Intersections

Blinn-Phong Illumination Model

Texture Mapping

Antialiasing

Acceleration Data Structures

Assignment 1 out (Sept. 22)

Rasterization

Oct. 6

Oct. 11

Oct. 13

Oct. 18

Oct. 20

Oct. 25

Intro. to Rasterization

2D & 3D Transformations

Quiz 1

Graphics pipeline, OpenGL

Shader programming

Viewing, Clipping and Culling

Assignment 1 due (Oct. 20)

Assignment 2 out (Oct. 24)

Modeling

Oct. 27

Nov. 1

Nov. 3

Nov. 15

Nov. 17

Procedural Modeling

Perlin noise & Terrains

Curves and surfaces

Sub division surfaces

Triangle Meshes

Animation

Nov. 22

Nov. 24

Nov. 29

Dec. 1

Dec. 6

Intro. to animation

Quiz 2

Rigging and keyframing

Physics based animation

Review & Discussion

Assignment 2 due (Nov. 26)


Recitations (Tentative schedule)


Assignments

Assignment 1 (Ray tracing)

A few Ray traced images rendered by the students

Image credit: Mehfuz A Rahman


Assignment 2 (Procedural Terrains)

Examples of Virtual Landscapes created by Students

Image credit: Amr Ghoneim

Link to the animation

Grading

Assignments (40%)

A1

A2

20%

20%

  • There will be 2 programming assignments (2 x 20%).
  • Use C++ for the coding part of the assignment.
  • Starter codes for the assignments will be uploaded to the github repo.
  • Algorithms, performance and code design will all contribute to your assignment grades.
  • Assignments should be turned in via MS Class Teams.
  • Every assignment should be accompanied with a brief documentation on your approach and coding, generated results and the reasons for failures, if any.
  • Each assignment will have a duration of four weeks.
  • No late assignments will be accepted unless prior arrangements have been made with the instructor at least 48 hours before the assignment due date.
  • For all the assignments, a minimum set of required features will be defined. An assignment which implements these features satisfactorily will receive a grade of A. To get an A+, you will need to improve the basic assignment in some way: new features, technical improvements, good design, better interaction, efficiency, etc. We will discuss possible improvements in the recitation and in the assignment description.

Quizzes (40%)

  • There will be two quizzes, each carries a weightage of 20%.
  • Used to evaluate your knowledge of course contents.
  • To be held during the lecture hour.
  • If you miss the quiz for any reason: (1) You must contact your instructor within 48 hours, and (2) You will be required to fill out and submit a Declaration of extenuating Circumstances form.

Homework/Recitations (20%)

  • There will be 7-8 C++ programming exercises. We will consider 5 best marks towards the final grading, i.e., 5 x 4% = 20%.
  • The programming exercises are designed to help you building your assignments.
  • Attendance in the recitations is required in this course.
  • You will get 7 days to submit your completed code.
  • Late submissions of the recitation exercises will not be accepted.

Notes:  
The final mark will be a letter grade based on the scale described in Section 5 of the Academic Regulations in the University Calendar. There is no curving of grades, or grading based on rank (e.g., a certain number of “A” grades, etc.). Final grades are truncated to 1 decimal place and then rounded (.5 to .9 are rounded up, .0 to .4 are rounded down) to the nearest whole number. There will be no supplementary examinations. 


Text Books

Required:Fundamentals of Computer Graphics, 3rd/4th Edition
Peter Shirley, Steve Marschner
A.K. Peters, ISBN: 978-1482229394

Reference: Realistic Ray Tracing, 2nd Edition
Peter Shirley, Keith Morley
A.K. Peters, ISBN: 1-56881-198-5

Reference: Computer Graphics and Geometric Modeling
David Saloman
Springer, ISBN-13: 978-0387986821

Reference: Texturing and Modeling: A Procedural Approach David S. Ebert et al. , Morgan Kaufmann, ISBN-13: 978-1558608481