Post

CS 6491: Foundations of Computer Graphics

Review and Retrospective

CS 6491: Foundations of Computer Graphics

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

TaskWeightNotes
Quizzes20%20 quizes
Programming Assignments80%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

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

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

Mesh Manip 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.
This post is licensed under CC BY 4.0 by the author.