CS 5620: Computer Graphics

Surface Renderer

You may work in pairs.

In this assignment you will extend the first part of a 3D rendering pipeline to render a scene of models with filled polygons. The emphasis in this assignment is on the implementation of the three basic algorithms and their performance.

An example of the second assignment is posted here:

assignment2-osx.zip
assignment2-linux64.tar.gz

If you did not finish assignment 1, you may start from the assignment 1 solution that will be posted here:

git clone https://github.com/cornell-cs5620/assignment1.git

Requirements

All of the requirements for this assignment are listed in the comments of the skeleton and labelled "TODO Assignment 2". Make sure you cover them all. The following is a summary of those TODO's.

  1. Canvas
    • Extend Bresenham's algorithm to implement a triangle fill algorithm.
    • Implement clipping algorithms for points, lines, and polygons.
    • Implement back face culling for polygons.

Submission

The submission deadline is October 12th 2015 at 10:00am. Submission involves a face-to-face session with Ned. We will schedule timeslots for the sessions, which will last up to 20 minutes, during which you will present your work and answer questions. Your grade, which is 20% of your final course grade, will reflect your effort in solving the problems posed by the assignment in terms of software engineering, performance, and completeness.

Grading

You will be graded on your implementation of three basic algorithms. The grade for each is split into three: Correctness, Performance, and Readability. A good score in Correctness means that you implemented the correct algorithm, all of the corner cases for the algorithm are covered and the algorithm has no errors. A good score in Performance means that you took the time to optimize your code, it runs decently fast on an i7, and there is no glaring issue (like a recursion depth of hundreds of thousands). A good score in Readability means that your code is well architected, is easy for me to read and is well documented. The grading rubric will be posted upon assignment.

CorrectnessPerformanceReadabilityTotal
Triangle Fill16%16%8%20%
Clipping16%16%8%20%
Culling8%8%4%10%
Total40%40%20%100%

Final Notes

  • DO NOT use any external code or borrow code from friends, family or colleagues without permission. If in doubt, please contact Ned. If you do use external code - please cite the source clearly. Plagiarism of any kind will not be tolerated!
  • You are welcome and encouraged to experiment with your program and add features. Previous experience shows this assignment can be addicting! Impressive extra features can earn you a bonus in your grade.
  • You have ample time to complete this exercise, but do not wait until the last moment. You are strongly encouraged to start working on it immediately.
  • We are aware that this assignment can be intimidating, and possibly one of the largest assignments you will encounter during your studies. You are welcome to come ask us if anything is not clear. We will periodically publish hints and advice on the Web site and by email.