CS 6491: Foundations of Computer Graphics
Review and Retrospective
Disclaimer
The views and opinions expressed in this post are solely my own and do not reflect those of Georgia Tech, the OMSCS program, or any affiliated instructors, TAs, or staff.
Instructor: Jeff Wilson
Head TA: Matthew J Peters
Semester: Summer 2025
Overall Rating: 7.9/10 👍
✅ Pros
- TAs are responsive, knowledgeable, and quick to help.
- The content is conceptually rich and intellectually challenging.
- Assignments provide hands-on application of the material.
❌ Cons
- Lectures are dense, with some redundancy and overly verbose explanations.
- There’s limited external documentation or online resources tailored to the specific techniques used in the assignments.
🕒 Time Commitment
Expect to spend around 20 hours per assignment, though this can vary significantly depending on your background and prior experience with computer graphics concepts and Java.
📝 Grade Breakdown
Task | Weight | Notes |
---|---|---|
Quizzes | 20% | 20 quizes |
Programming Assignments | 80% | 5 assignments |
✍️ Assignments
Assignment 1, Part 1: Basic Ray Tracing
Kicks off the course by guiding you through building a basic ray tracer from scratch. You’ll implement camera-based ray generation, axis-aligned box intersection testing, occlusion logic, and normal visualization across sample scenes using Java + Processing.
Assignment 1, Part 2: Ray Tracing Shading and Optimization
Expands your ray tracer with triangle intersection, Lambertian shading, and shadow rays for realistic lighting. You’ll implement instancing and build a bounding volume hierarchy (BVH) to optimize performance on complex scenes.
Assignment 1, Part 3: Distribution Ray Tracing
Advanced ray tracing: reflections, shadow softening, and material variation
Adds realism to your renderer by implementing multiple rays per pixel for effects like anti-aliasing, depth of field, motion blur, and soft shadows. You’ll also support Blinn-Phong specular highlights, reflective surfaces, and area lights using disk sampling. This part pushes your ray tracer into photorealistic territory and ties together all prior work in a fully recursive, physically-inspired rendering pipeline.
Assignment 2: Implicit Surfaces
Ten randomly positioned spheres with blended colors and surfaces
Challenges you to generate complex 3D models using skeletal primitives, fall-off functions, and the Marching Cubes algorithm. You’ll implement shape blending, deformations (twist, taper), constructive solid geometry, and color blending for randomized scenes.
Assignment 3: Mesh Manipulation
star.ply: 3 iterations of Butterfly subdivision, noise added, and 40 iterations of Laplacian smoothing
Focuses on representing and refining triangle meshes using subdivision and smoothing algorithms. You’ll implement the corner table data structure, calculate adjacency and per-vertex normals, and apply Loop and Butterfly subdivision schemes to smooth and densify geometry. The assignment wraps up with Laplacian and Taubin smoothing, giving you hands-on experience with geometry processing pipelines common in 3D modeling, simulation, and real-time graphics engines.
📖 Quizes
Open-note and typically take 20–30 minutes. While some are straightforward, others require more time and frequent reference to the lecture notes.
📚 Course Content
Module 1 · Computer Graphics Fundamentals I
Introduces the core building blocks of computer graphics including image formation, cameras, pixels, color spaces, and the rendering equation.
Module 2 · Introduction to Ray Tracing
Covers the basics of ray tracing—how to cast rays from the camera, test for intersections with geometry, and visualize simple scenes.
Module 3 · Surface Shading
Explores how light interacts with surfaces. Covers local illumination models like Lambertian diffuse and Blinn-Phong specular shading.
Module 4 · Computer Graphics Fundamentals II: Transformations
Introduces transformations using matrix math—translation, scaling, rotation, and projection. Focuses on composing transformations in 3D space.
Module 5 · Scene Graphs & Matrix Stacks
Presents hierarchical scene modeling using scene graphs. Demonstrates how matrix stacks enable efficient traversal and nested object transformations.
Module 6 · Ray Tracing Acceleration & Optimization
Addresses performance limitations of naïve ray tracing. Introduces spatial data structures such as bounding volume hierarchies (BVH) and uniform grids.
Module 7 · Recursive Ray Tracing
Extends ray tracing to support recursive effects like shadows, mirrors, and transparency via secondary rays and recursive calls.
Module 8 · Radiometry
Introduces the physics of light transport—radiance, irradiance, and the BRDF. Lays the foundation for energy-conserving rendering.
Module 9 · Distribution Ray Tracing
Incorporates randomness into ray tracing to simulate soft shadows, motion blur, and depth of field using Monte Carlo integration.
Module 10 · Recursive Ray Tracing Limitations
Discusses the shortcomings of recursive ray tracing—performance bottlenecks, noise in complex scenes, and limited indirect lighting support.
Module 11 · Numerical Integration & Light Transport in Ray Tracing
Explains how light transport can be expressed as integrals. Covers Monte Carlo methods and sampling strategies used in physically based rendering.
Module 12 · Photon Mapping
Introduces photon mapping as a two-pass global illumination technique. Covers photon emission, k-d trees, and radiance estimation.
Module 13 · Advanced Ray Tracing
Surveys high-end ray tracing techniques including path tracing, bidirectional path tracing, and multiple importance sampling.
Module 14 · Implicit Surfaces
Covers surfaces defined by mathematical functions, such as signed distance fields (SDFs). Demonstrates techniques like sphere tracing for rendering.
Module 15 · Surface Textures & Procedural Mapping
Explores texture mapping with UV coordinates. Includes procedural textures (e.g., noise, checkerboards) for generating surface detail programmatically.
Module 16 · Geometric Primitives & Meshes
Covers triangle meshes, vertex and face lists, and topological relationships needed to represent and traverse complex geometry.
Module 17 · Mesh Manipulation: Subdivision & Smoothing
Introduces subdivision surface algorithms (e.g., Loop, Butterfly) for refining meshes. Discusses rules for generating smoother geometry.
Module 18 · Curves
Explores mathematical curve representations including Bézier, B-spline, and Catmull-Rom splines. Covers interpolation, continuity, and control.
Module 19 · Mesh Simplification & Triangulation
Teaches methods to reduce mesh complexity (e.g., edge collapse) and convert polygons to triangles. Introduces simplification metrics like quadric error.
💬 Class Participation & Interaction
The Ed forum is active, with assignment threads often providing crucial clarifications. TAs are responsive and helpful on both public and private posts. Office hours are typically held three times per week in one-hour nigh sessions (EST).
💭 Final Thoughts
This course is conceptually dense, with a large volume of material presented quickly, and the assignments are notably challenging. The lectures, while thorough, can be overly verbose and at times repetitive; with some tightening and streamlining, they could be even more effective. The project PDFs and forum threads offer just enough guidance to complete the assignments. Java (with the IntelliJ IDE) and Processing provided an interesting development environment, though I would have preferred C++ or C# given their common use in game engines. That said, the assignments were highly rewarding, and the immediate visual feedback made the course work engaging and satisfying.
Further Learning Resources
*Originally suggested by course TAs Christopher Dannemiller and Matthew Peters
Books
- Real-Time Rendering: The gold standard for graphics programmers
- Essential Mathematics for Games and Interactive Applications
- 3D Game Engine Design by Dave Eberly: Recommended as a top pick from his work on interactive 3D applications.
API
- Start with OpenGL which is simpler to learn and more beginner-friendly than Vulkan, DirectX 12, or Metal.