Computer graphics studies how computers can create images. Interactive computer graphics creates images quickly enough that a new image can be created in response to every user action. In principle any image-creation algorithm could be interactive, given adequate hardware, but in practice it usually refers to a specific family of workflows involving the interaction of the CPU and GPU. That family of workflows will be our primary topic in this class.
Course content in computer graphics is often misunderstood; see the following table for an overview of what we do and do not cover in this class.
|Topic||Covered in CS 418?|
|OpenGL, Direct3D, Metal, Vulkan||Not directly, but much of WebGL will transfer over to these|
|Animation||The tech, but not the artistry|
|Special effects||Some, but it’s not the main topic|
|Game design||No; try CS 415 or any GSD course. We will discuss the graphics behind 3D games, though.|
|Movie-quality graphics||That comes in the next course, CS 419. This course is a prereq for that course.|
|Computer vision||No; try CS 444 and related classes|
|Use of Allegro, Banshee, C4, CryEngine, Intrinsic, OGRE, SDL, Serious, Source, Torque, Unity, Unreal, UX3D, Xenko, XNA, …||No; we may discuss how they are built, but not how to use them.|
|Use of A:M, Blender, 3DS Max, Maya, Nendo, Rhino, SketchUp, Wings, XSI, ZBrush, …||No; try ARTS 340.|
|How to build tools like Gimp, Krita,||No; try CS 445|
Listed prereqs in the course catalog are
Needed primarily for the common vocabulary it provides as we discuss graphics-specific structures, and for the programming experience it provides.
Matrices and vectors are all over computer graphics. We’ll use vectors to represent 3D points and matrices to transform them. We’ll use vectors to represent long lists of properties of a point. We’ll explain the details of these uses, but assume you have a working knowledge of matrices and vectors coming in.
Graphics also use large sparse matrices to represent physical constraints and iterative solvers (primarily variants of conjugate gradient) to create visual simulations of real-world dynamics. That is rarely achievable at interactive speeds, so we won’t talk about it in any detail in this class.
Euclidean space and the vectors used to represent it are important in graphics. Additionally, taking this course usually helps students think in 3D a bit more than they had before, which is useful.
There is some calculus in graphics, but mostly as theoretic background for algorithms that do not themselves use the calculus. We’ll not need any integral-solving or related by-hand calculus computations in this course.
|Office||2340 Siebel Center|
|Phone||not yet assigned|
graphicsin the subject line
We have no official textbook for this course. Some readings will be the work of Luther Tychonievich and Eric Shaffer, the two faculty who teach CS 418. Others will be tutorials or articles available on the web.