Revised Dec 18, 2015

Watch a video introduction to this course on YouTube.

This course gives students a solid background in 3-D graphics techniques for use as a tool in more advanced applications. A major part of the course involves hands-on activities using an interactive graphics workstation.

- CS major students. Usually taken in fourth year.

- Fall, Winter, and Spring

- Pre-requisites: (CM 339/CS 341 or SE 240) and (CS 350 or SE 350) and (CS 370 or 371); Computer Science students only

Enrolment may be limited due to availability of graphics equipment.

For official details, see the UW calendar.

- Linux
- C++
- OpenGL

- Donald Hearn, P. Baker, W. Carithers,
*Computer Graphics with Open GL (4th Edition)*, Prentice Hall, 2010 - Dave Shreiner, The Khronos OpenGL ARB Working Group,
*OpenGL Programming Guide: The Official Guide to Learning OpenGL, Versions 3.0 and 3.1, 7th ed.,*Addison Wesley, 2009

At the start of the course, students should be able to

- Write programs in UNIX with C++
- Use and understand linear algebra, calculus, numerical analysis including numerical linear algebra, data structures, and algorithms

At the end of the course, students should be able to

- Carry out mathematical constructions on points, vectors, and transformations in affine spaces
- Explain the algorithmic and mathematical concepts used at each stage of a modern graphics pipeline
- Write interactive programs that display and manipulate 2D and 3D geometry
- Write a ray tracer

- Overview of a representative processing sequence that connects application programs with images they display on screen
- Outline of the graphics library students will use and the graphics workstation hardware

- Review of concepts and tools: points, vectors, lines, planes, matrices, dot and cross products, vector space, affine space, projective space, etc.

- 2- and 3-dimensional translation, rotation, and scaling as matrix operations
- Homogeneous coordinates
- Clipping, windowing, and viewing with perspective

- Management of picking, selecting, and control tasks through the use of event queues, interrupts, and device polling
- Windowing systems and user interface toolkits

- Standard lighting models and their implementation
- Hidden-surface elimination using depth buffering, scanline coherence, and subdivision
- Polygon filling

- Basic ray tracing techniques for generating shadows, mirror reflections, and refraction
- Constructive solid geometry models

- Radiosity, bi-directional path tracing, global illumination

- Topics are chosen at the discretion of the instructor. Possible topics include more depth on any of the previous topics, human vision, colour theory, anti-aliasing, database amplification, animation, scientific visualization, graphics hardware support, higher-order curves and surfaces, and dynamic simulation.

David R. Cheriton School of Computer Science

University of Waterloo

Waterloo, Ontario, Canada N2L 3G1

Tel: 519-888-4567 x33293

Fax: 519-885-1208

Contact | Feedback: cs-webmaster@cs.uwaterloo.ca | David R. Cheriton School of Computer Science | Faculty of Mathematics