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

  1. Books

    1. 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.
    2. 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
  2. OpenGL Tutorials

    1. LearnOpenGL Tutorials by Joey de Vries
    2. OpenGL.org tutorial listings
    3. Nate Robins' OpenGL Tutorials
    4. OpenGL 4 Tutorials
    5. Anton’s OpenGL 4 Tutorials
  3. OpenGL Documentation

    1. OpenGL Programmers Guide - The Red Book (for OpenGL v1.1)
    2. OpenGL.org - The official OpenGL site
    3. OpenGL Registry. This has links to the various OpenGL Specifications.
    4. OpenGL Man Pages
  4. Associated Library Websites

    1. GLFW - OpenGL Context management, window and input handling
    2. GLEW - The OpenGL Extension Wrangler Library
    3. GLM - OpenGL Mathematics
  5. Online Readings

    1. 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
    2. Clipping Algorithms
      a. Cohen-Sutherland Line Clipping
      b. Cyrus-Beck (Liang-Barsky) Line Clipping
      c. Sutherland-Hodgman Clipping
    3. Transformations
      a. Homogeneous Coordinates
      b. Euler Angles
      c. Gimbal Lock
      d. Gimbal Lock
    4. Modelling-Viewing Pipeline
      a. Coordinate Systems in the Graphics Pipeline
      b. Modelling-Viewing Pipeline
    5. Visibility
      a. BSP Trees (courtesy the Wayback Machine)
      b. BSP FAQ
      c. The Art Gallery Problem
      d. Quadtrees
      e. More Quadtrees
      f. Octrees
    6. Modelling Curves and Surfaces
      a. Notes on Computing with Geometry
      b. Mathematical Elements for Computer Graphics by Rogers and Adams, Google Books
    7. Hierarchical Modelling
      a. Hierarchical Trasformations
      b. Hierarchical Modelling and Display lists in OpenGL
    8. Shading
      a. Phong Illumination Model
      b. Blinn-Phong Shading
      c. Per-Pixel Lighting
    9. Animation
      a. Principles of Traditional Animation Applied to 3D Computer Animation
      b. Continuity of Parametric Curves
      c. Quaternions and Spatial Rotations
    10. 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