One of Computer Graphics’ most interesting challenges for software engineers is optimizing the renderer. There are several different rendering algorithms, but in this class we’ll focus on ray tracing. This course is about more than making pretty pictures. We’ll be going under the hood to really understand how renderers are implemented and how to organize and manage a large software project.
This course will cover the fundamental concepts of rendering. Students will implement their own ray tracer from scratch. They will learn how to generate image files, build a lightweight scripting language as input, and manage a large code base. We will start with the basics and add on each week, taking care that the code not only works, but can be easily built upon week to week. This is an upper division course. Knowledge of a high-level programming language, data structures, and Linear Algebra highly recommended.