Computer Graphics, Fall 2017

Michael Kazhdan

Assignment 3: OpenGL Rendering

Due on November 22 (Wednesday) at 11:59 PM



This assignment serves as an introduction to the OpenGL graphics library. You will be required to generate a room scene which can be navigated in a walk-through fashion. You will begin the project by implementing the OpenGL analogs of many of the methods that you have implemented for the last ray-tracer assignment. Emphasis is placed both upon the implemention of OpenGL's basic capabilities (e.g. shading. lighting, transparency, materials properties, etc.) and their use in generating more involved effects (e.g. shadows, reflections.)
For this assignment you will continue with the code base from the previous assignment, implementing the OpenGL related methods. There are some small modifications that you will need to make to your code described in the Code Modifications section below. It is highly recommended that you make a copy of your old code before you start working on the new methods.

An overview of the code you will be using can be found here.

An overview of the .ray file syntax can be found here.

A (Win32) compiled version of the renderer implementing some of the basic features can be found here. (If that does not work, try this one.)

The OpenGL programming Guide is an invaluable resource in assisting with OpenGL implementation. You can find a link to the guide here or here.

Code Modifications

The code you will be starting with in this assignment is essentially the same code you used for the previous assignment. However, there are a few small changes:

How the Program Works

The program takes in as a mandatory arguments the input (.ray) .ray file name. Additionally, you can also pass in the dimensions of the viewing window and the complexity of the tesselation for objects like the sphere, the cylinder, and the cone. It is invoked from the command line with:
% Assignment3 --in in.ray --width w --height h --cplx c
Feel free to add new arguments to deal with the new functionalities you are implementing. Just make sure they are documented.

What You Have to Do

The assignment is worth 30 points. The following is a list of features that you may implement. The number in parentheses corresponds to how many points it is worth.

The assignment will be graded out of 30 points. In addition to implementing these features, there are several other ways to get more points:

It is possible to get more than 30 points. However, after 30 points, each point is divided by 2, and after 32 points, each point is divided by 4. If your raw score is 29, your final score will be 29. If the raw score is 33, you'll get 31.25. For a raw score of 36, you'll get 32.

What to Submit

Submission intstructions are specified here.
Please include the following in your submission: