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.
A list of learning goals and topics may be found on my.cs.
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 they are enough like WebGL that this course will help with these other APIs too|
|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. Some sections of BTW 263 discuss their use in more detail.|
|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, MyPaint, Photoshop, …||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.
|Time||Wednesday and Friday, 14:00–15:15 CT|
|Attendance||Ungraded but encouraged|
|Recordings||Posted on the schedule after class|
I enjoy very interactive classes. I come with content to present, but prefer to engage with student questions and interests, adapting what we discuss accordingly. This approach is not particularly compatible with detailed slides, so recordings and readings will be the main review material.
|Released||1–24 hours after Friday’s class|
|Due||1 hour before Wednesday’s class|
|Content||Based on previous week’s classes and readings|
|Grading||Autograded when due; adjusted by grader in next week|
|Excused||1 dropped automatically; specific quizzes may be excused if requested prior to the quiz closing|
|Late||Not accepted, not even with prior approval|
|Kind||Individual (non-collaborative) programming projects|
|Frequency||Varies by assignment difficulty|
|Details||On the schedule|
|4th Credit||Students enrolled for 4 credit hours will implement a raytracer in addition to the normal suite of homeworks|
|Weight||50%, + 100% of 4th credit|
|Location||In class (Siebel 1404)|
|Schedule||13 December from 13:30 to 16:30, as set by university policy|
|Content||Subset of previous quiz questions, slightly edited|
|Grading||By course staff|
I may change this to be in the CBTF at a window overlapping the assigned final exam time. If so, that decision will be announced at least a month prior to the final quiz.
|Join code||See Canvas|
|Phone||+1 217 333 8609|
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.