Work

The graded work in this course is split up as follows:

Late Assignments

Assignments are expected to be handed in on the due date. If you are late, you must either provide a good reason and an expected time of completion, or you will simply not receive any marks for that assignment. Note that part marks will be awarded if you can hand something in demonstrating you have worked on the assignment even if you can't finish it, and there is no penalty for resubmitting, so submit early and often!

Plagiarism

In short: don't cheat. Work is supposed to only be done by the people handing it in. When it is appropriate to use someone else's work (whether in the class or elsewhere) as part of an assignment, you need to give full credit.

Labs

Our teaching assistants are Todd Keeler and Crawford Doran. Labs run Monday 2-3pm, Tuesday 1-2pm, and Friday 12-1pm, but attendance is not mandatory: just go to room ICICS 005 to ask for help from the TAs if you need it.

Midterms

Midtern 1: in class, Friday Jan 27 (1-2pm). Get the exam as midterm1.pdf, and the solutions as midterm1_solved.pdf.

Midtern 2: in class, Friday March 16 (1-2pm). Get the exam as midterm2.pdf, and the solutions as midterm2_solved.pdf.

You may take a look at previous offerings (especially Fall 2009) for example questions. The format will be short answer questions testing you know terminology, core algorithms, critical mathematical aspects of graphics, and understand the various problems and solutions we come upon.

Assignment 1: Tesselation, Rasterization and the Z-Buffer

Due January 19.

The assignment is described in a README.txt file provided alongside starter code in a git repository you can access through the ugrad file system. If you are doing this from your account, you can run

cd ~/cs314
git clone ~cs314/Vjan2012/a1

which will clone the repository to the "cs314/a1" subdirectory of your account. You can then work there, using git as your version control system.

If you're working on your own machine instead, you can clone the git repository via SSH:

git clone ssh://a1a1@remote.ugrad.cs.ubc.ca/~cs314/Vjan2012/a1

where "a1a1" should be your ugrad login.

Finally, if you prefer another version control system over git, you can simply copy or scp the "~cs314/Vjan2012/a1" directory as you please, deleting the hidden ".git" subdirectory.

Hand in your code using the "handin" command.

When your code is working, the provided "example.scene" file should render to an image something like this (modulo slight differences in how you tesselate your spheres):

Assignment 2: Transforms

Due February 16.

As with assignment 1, the full description is in a README.txt file provided in a git repository with the starter code. The git repository is named "a2" instead of "a1" - otherwise the directions above can be used just the same.

When your code is working, the provided test scenes should produce images almost identical to these:

test1

test2

test3

test4

test5

test6

test7

test8

If you render frames 0 up to 99 of test9.scene, you should get this movie: test9.mov. (Note that the renderer itself can only produce single TGA image files, not Quicktime movies - I had to produce this movie from the image sequence with another program.)

Assignment 3: Raytracing and Shading

Due March 19.

As with assignments 1 and 2, the full description is in a README.txt file provided in a git repository with the starter code. The git repository is named "a3" - otherwise the directions above can be used just the same.

When your code is working, the provided test scenes should produce images almost identical to these:

test10

test11

test12

Assignment 4: Game On

Due April 5.

As with assignments 1-3, the full description is in a README.txt file provided in a git repository with the starter code. The git repository is named "a4" - otherwise the directions above can be used just the same.

I will be adding more code as fast as I can to this repository, but it's open to get started right now. Expect to have a useful "git pull" soon.

After turning up light_intensity to 50, fixing up transform.cpp, and implementing the diffuse and glossy shaders correctly, this is the image you might see. Here I've hardcoded a shininess exponent of 20 in the glossy shader.

Final Exam

April 23, 8:30am DMP 310.

Here is the final exam.