CS475/CS675 - Computer Graphics
Semester 1 (Autumn), 2020-2021
Overview
This is the first course on Computer Graphics - here we will learn to draw images and make animations on the computer. This will be achieved by learning the underlying algorithms and hands-on implementations of those techniques. We will talk about everything, starting from basic drawing on the computer to special effects in movies. The course is very programming intensive and will emphasize a lot on assignments and at least one project. Watch the course teaser video to get an idea about its contents.
Teaser Video
Logistics
- Class Timings: Slot 12
- Office Timings: During class slot hours
- Classroom: IIT Bombay Moodle, CS475/CS675 team on MS Teams
- Teaching Assistant: Sukanya Bhattacharya, Anant Kumar
- Important: Academic Integrity of Assignment Submissions
Registration Instructions
- If you are a B.Tech. student, register only for CS475
- If you are a DD, M.Tech., or Ph.D. student, register only for CS675.
- Never register for both CS475 and CS675.
- You are not allowed to register for either of these courses if you have done another course that overlaps significantly in content with it. If you have a doubt about this, ask me.
- Any CSE B.Tech. or DD student who is in the 2nd year or above can take the course.
- Any CSE M.Tech. or Ph.D. student can take the course.
- If you are a non-CSE B.Tech. or DD student who has done the data structures course (CS213/CS213M or equivalent), you can register for CS475, provided your Facad or department has no objection.
- If you are a non-CSE B.Tech. or DD student who has not done a data structures course, I strongly recommend that you do not take this course. Registration on ASC will be blocked if you do not have the required pre-requisite and it is not possible to do a paper based exception this semester.
- If you are a non-CSE M.Tech. or Ph.D. student who wants to take this course, you need your thesis supervisor’s approval. Please talk to me after you get that.
- You can tag the course as whatever you want.
- Audits are not allowed.
Eligibility/Prerequisites
If you are curious about computer graphics at all - attend the first lecture.
- Knowledge of C/C++ Programming is desirable.
- Knowledge of basic Linear Algebra is desirable.
- Knowledge of data structures and algorithms is desirable.
- Learn how to use git.
- Make sure you have a GitHub id. You will need it for the course.
Frequently Asked Questions
A list of frequently asked questions about the course can be found here.
Course Content
All course related content is available on IIT Bombay Moodle.
Assignments and Homeworks
- Important: Academic integrity is paramount. Any dishonesty will be severely dealt with.
- Please read my views on academic integrity of assignment submissions before submitting anything to me.
- Assignments will be posted on the Moodle page for the course.
Resources
-
Books
- Textbook
a. Fundamentals of Computer Graphics (Fourth Edition), Peter Shirley, Steve Marschner and others, A K Peters/CRC Press (2015)
b. Publisher page is here.
c. Amazon.in page is here.
d. Flipkart.com page is here. - Other Books
a. Interactive Computer Graphics - A Top-Down Approach Using OpenGL (6/e), Edward Angel
b. Computer Graphics using OpenGL (3/e), F. S. Hill Jr. and S. M. Kelley
c. Computer Graphics with OpenGL (3/e), D. D. Hearn and M. P. Baker
- Textbook
-
OpenGL Tutorials
-
OpenGL Documentation
- OpenGL Programmers Guide - The Red Book (for OpenGL v1.1)
- OpenGL.org - The official OpenGL site
- OpenGL Registry. This has links to the various OpenGL Specifications.
- OpenGL Man Pages
-
Associated Library Websites
-
Online Readings
- Rasterization Algorithms
a. The Bresenham Line Drawing Algorithm
b. Optimizing the Bresenham Algorithm (Archived Version from the Wayback Machine)
c. Algorithm for computer control of a digital plotter, J. Bresenham, IBM Systems Journal 4(1):25-30, 1965
d. A Linear Algorithm for Incremental Digital Display of Circular Arcs, J. Bresenham, Communications of the ACM, 20(2):100-106, 1977
e. Rasterizing Circles (Archived version from the Wayback machine)
f. Interactive demo for Scanline fill
g. Floodfill Algorithm for drawing filled polygons
h. Pointillism
i. Color Models - Clipping Algorithms
a. Cohen-Sutherland Line Clipping
b. Cyrus-Beck (Liang-Barsky) Line Clipping
c. Sutherland-Hodgman Clipping - Transformations
a. Homogeneous Coordinates
b. Euler Angles
c. Gimbal Lock
d. Gimbal Lock - Modelling-Viewing Pipeline
a. Coordinate Systems in the Graphics Pipeline
b. Modelling-Viewing Pipeline - Visibility
a. BSP Trees (courtesy the Wayback Machine)
b. BSP FAQ
c. The Art Gallery Problem
d. Quadtrees
e. More Quadtrees
f. Octrees - Modelling Curves and Surfaces
a. Notes on Computing with Geometry
b. Mathematical Elements for Computer Graphics by Rogers and Adams, Google Books - Hierarchical Modelling
a. Hierarchical Trasformations
b. Hierarchical Modelling and Display lists in OpenGL - Shading
a. Phong Illumination Model
b. Blinn-Phong Shading
c. Per-Pixel Lighting - Animation
a. Principles of Traditional Animation Applied to 3D Computer Animation
b. Continuity of Parametric Curves
c. Quaternions and Spatial Rotations - Ray Tracing
a. Ray Tracing
b. The Internet Ray Tracing Competition (the competition seems to be down at the moment)
c. The Persistence of Vision Raytracer
d. Object-Object Intersections
e. Overview of raytracing on Scratchapixel
- Rasterization Algorithms