CS 455
Syllabus
Policies
Projects
Calendar
Slides
 
Project Overview
   Project 1
   Project 2
   Project 3
   Project 4
   Project 5
 
Old Quizzes
 
 

Programming Assignment Overview

The projects in this class will help you develop a deeper appreciation of computer graphics by becoming involved in the coding of core graphics algorithms. Projects 2, 3, and 4 will have you duplicate large portions of the OpenGL real-time graphics library; by completing them you should develop the knowledge necessary to use OpenGL (DirectX is similar) and understand why it does what it does. Additionally, each project is about half elective functionality, which will let you focus more effort on those areas of graphics you like most.

Computer graphics is a huge field, and there are many topics these projects do not even mention. If you want to get involved in them, discuss it with the TA in advance and we will try to accommodate your interests.

Passoff procedure

See the Project Policies page for passoff instructions. We encourage you to do incremental passoffs; when you think one method is working, get the TA to check it for you.

Project 1: Setting up your environment

This project has no elective functionality. It consists only of the following pieces:
  1. Selecting an operating system, programming language, and GUI toolkit.
  2. Setting up the render mode interface.
  3. Finding or creating 4×4 matrix, 4-vector, and stack data structures, with associated methods.

Project 2: Rasterizing

The required functionality is to rasterize triangles, lines, and pixels with linearly-interpolated color. Elective functionality includes textures, perspective-correct interpolation, rasterizing other shapes (such as circles, fat lines, and concave polygons), transparency, and anti-aliasing.

Project 3: Transformations and projection

In this project you will implement the OpenGL matrix stacks and associated methods to help project from world coordinates to screen coordinates, as well as basic clipping and depth buffering. You may also implement better clipping, a camera toolkit class, matrix setting methods, and related extensions.

Project 4: Lighting, bells, and whistles

This project will finish the main OpenGL pipeline by adding perspective, normals, and lighting. Other lighting models, texturing, and OpenGL extensions are also available as elective functionality.

Project 5: Student-directed

Do whatever makes your heart sing, provided it is graphical and approved by the TA in advance. You can write a raytracer, make a 3D game, work with fractals, visual fluid-, rigid-body-, or soft-body-dynamics, visualization of non-euclidean spaces, algorithm/data/process visualization, or anything else that is:
  • visual
  • coded by you
  • neither too easy nor too hard
  • approved by the TA

E-mail: leemhoward@gmail.com