CS 418: Interactive Computer Graphics

Interactive Computer Graphics offers an introduction to computer graphics programming, focusing on the techniques needed to support interaction, such as for computer games, virtual environments or other real-time simulations. The course utilizes the "C" programming language and the OpenGL graphics programming library, though students can use a different language and library with the instructor's permission.


The Interactive Computer Graphics course has two goals:
1. To understand the fundamentals of pipelined rasterization rendering of meshed objects and curved surfaces, and
2. To become proficient at graphics programming in C using OpenGL, or an equivalent language/library combination. The idea is that a student must understand the fundamentals of graphics in order to write an OpenGL program (and get anything but a blank screen). Hence we use several machine problems to measure both a student's ability to program (#2) and their understanding of the fundamentals (#1).


  • Structure of Images: Image formats, compression and dithering.
  • Mesh Data Structures: How to represent shapes as vertices, edges and faces, using the indexed face set and the half-edge data structures.
  • Transformational Geometry: Scale, rotation, translation, stretch and shear of a shape.
  • Viewing: How to transform a scene to accommodate a specific view.
  • Perspective: How to distort scenes to give the illusion of depth.
  • Lighting: The Phong model for diffuse illumination with specular highlights.
  • Rasterization: How to convert mesh triangles to screen pixels.
  • Texture Mapping: How to put an image onto a surface, and other effects (e.g. environment mapping) it enables.
  • Visibility: The Z-buffer, painter's method and other hidden surface removal algorithms.
  • GPU Programming: How to program custom effects in the graphics hardware, including vertex and pixel shaders.
  • Color Theory: Different color representations including RGB, CMYK, video and CIE XYZ.
  • Physical Simulation Animation: How to solve ordinary differential equations to simulate realistic motion of springs and masses.
  • Parametric Surfaces: Hermite, Bezier and B-Spline/NURBS representations of curved surfaces.
  • Implicit Surfaces: How to represent shapes as zero-sets of real functions over space, and use marching cubes to convert them into meshed surfaces.
  • Quaternion Rotations: How to represent and interpolate rotations using quaternions.
  • Skinning: How to deform meshed bodies by interpolating transformations on their bones.
  • Shadowing: Casting shadows using shadow volumes and shadow buffers.
Every Semester

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer