Computer Science 184 — Foundations of Computer Graphics (4 Units)
Techniques of modeling objects for the purpose of computer rendering: boundary representations, constructive solids geometry, hierarchical scene descriptions. Mathematical techniques for curve and surface representation. Basic elements of a computer graphics rendering pipeline; architecture of modern graphics display devices. Geometrical transformations such as rotation, scaling, translation, and their matrix representations. Homogeneous coordinates, projective and perspective transformations. Algorithms for clipping, hidden surface removal, rasterization, and anti-aliasing. Scan-line based and ray-based rendering algorithms. Lighting models for reflection, refraction, transparency. Cameras and lenses. Color and perception. Animation, kinematics, physical simulation. Digital image processing and computational imaging; light field cameras.
- Math 54
Very helpful to have experience with C++.
- Object hierarchies and instance transformations needed for the modeling of complicated scenes.
- Interactive input techniques, the basics of a graphics editor.
- The geometrical operations in the rendering pipeline: consecutive transformations, windowing, clipping, projections.
- Visibility determination and hidden feature elimination.
- Illumination and shading models for rendering.
- Introduction to parametric curves and surfaces, Bezier patches and surfaces.
- Mesh representations and geometry processing.
- Introduction to advanced rendering techniques: ray-tracing, texture mapping, radiometry and photometry.
- Animation. Inverse kinematics and particle simulation.
- Sampling and Fourier theory.
- Cameras and real lenses.
3 hour of lecture, 1 hour of discussion and ~10 hours + 10+ hours for debugging per project.
Choosing the Course
When to take
After taking CS61B and Math 54. Probably junior and senior years.
- CS194-26: Computational Photography and Image Processing
- CS280: Computer Vision
- CS284B: Advanced Computer Graphics
Usefulness for Research or Internships
Internships: This course is beneficial for finding internships at game/graphics/VR/AR companies, at least for doing work related to computer graphics at those companies. Research: Naturally, this course is beneficial for getting started with research in fundamental computer graphics, virtual reality, and more.
It is very useful to have some experience with C++ and review linear algebra before taking this class. Be sure NOT to take another heavy project-oriented course concurrently.
Last edited: Summer 2020