Assignments

Brush

brush image

In Brush you will be implementing various different airbrushes similar to ones found in commercial painting programs such as Adobe's Photoshop. This assignment should give you a good introduction to the kind of C++ programming you will be doing in this course, as well as gently familiarize you with the basic conventions of the support code.

SEP 12

DUE ON

SEP 17

DUE ON

Shapes

shapes image

This assignment covers one of the earliest steps in the 3D rendering pipeline: object tessellation. For this assignment you will be constructing simple 3D objects (e.g., spheres and cylinders) out of triangles and then displaying them on the screen. All you need to do for this assignment is compute and store the necessary triangles; OpenGL handles the task of drawing them for you. The code written in this assignment will be integral to the success of the assignments that follow.

SEP 22

DUE ON

SEP 25

DUE ON

Camtrans

camtrans image

In this assignment you will write your own linear algebra package which will allow you to easily manipulate points, vectors, and transformation matrices. After using the TA-supplied tester to check your work, you'll get to move on to crafting your own virtual camera. Essentially, this camera will use information about the eye point, viewing direction, et cetera, and produce a transformation matrix to display 3d graphics on our 2d output devices. Once again, the code written in this assignment is absolutely essential to the proper function of later assignments.

SEP 29

DUE ON

Sceneview

At this point you have the ability to display, transform and view 3D objects. The next step is for you to put these tools together to view a scene consisting of arbitrarily positioned objects from an equally arbitrary location.In this assignment, you will build your own viewer for moderately complicated scenes.

OCT 10

DUE ON

Filter

This assignment represents a subset of the functionality that Photoshop has. It is designed to teach you the basics of image processing and anti-aliasing. You will implement different image manipulation operations like edge detection, blur, and image scaling.

OCT 22

DUE ON

OCT 22

DUE ON

OCT 28

DUE ON

Intersect

In this assignment, you will finally break away from OpenGL and write a rendering engine of your own. Using many of your previous projects, you will shoot out rays from the eye of a camera and calculate intersections with primitives in a scene using their implicit equations. This will be the first step in writing a full fledged ray tracer.

NOV 5

DUE ON

Ray

In this assignment, you will extend the basic renderer your wrote in Intersect to support reflections, shadows, texture mapping, and a plethora of other more complicated rendering techniques. At the end of this assignment, you will have written a fully functioning recursive ray tracer.

NOV 12

DUE ON

NOV 20

DUE ON