Project 6: Final Project Gear Up

Github Classroom assignment

You can find the recommended features for this project here.

Introduction

This fall, we've surveyed a number of topics in computer graphics to give you a broad introduction to the field. For this project, you’ll take what you’ve learned and choose from a list of provided features. Select the ones that interest you most, do some reading and research, and implement them!

While you’ll work independently for this project, keep in mind that your next (and final!) assignment will involve combining your features with those of your classmates to create a larger scene. It may be useful to think ahead about how your features could integrate with a group to form a cohesive final result. The earlier you form a final project group, the more you and your groupmates can strategize about choices of individual features that will be most complementary.

Requirements

The requirements for this assignment are straightforward. Select and implement a set of features from the list whose point values sum to 100. You may build on top of any previous coursework (typically, the Ray or Realtime projects, though we’ve seen a cool project or two in the past that builds on Brush).

Testing

Along with your implementation, you will be responsible for providing (and will be graded in part on) test cases that demonstrate that your feature is working as intended. As was the case for extra credit features in past projects, these test cases must sufficiently demonstrate that the feature works. For example:

  • If you implement a feature that has some parameter, you should have multiple test cases for different values of the parameter.
  • If you implement a feature that has some edge cases, you should have test cases that demonstrate that the edge cases work.
  • If your feature is stochastic/ has non-deterministic behavior, you should show examples of different random outputs.
  • If your feature is a performance improvement, you should show examples of the runtime difference with/without your feature (and be prepared to reproduce these timing numbers in your mentor meeting, if asked).

These test cases should be similar to those from the submission templates of past projects, so feel free to use them as reference!

The Stencil

Since most of you will be building your features for this project on top of previous coursework from this semester, there will be no stencil code! As you may have noticed by now, the Github Classroom repo for this project just contains a (mostly empty) submission template Markdown file. Everything else is up to you :)

Grading

This project is out of 100 points.

You must attempt features whose point values sum to 100. For each feature you implement, the grading is broken down as follows:

  • 70% of the feature grade: successfully implementing the feature.
  • 30% of the feature grade: designing thorough test cases.

For instance, if you implement a feature worth 20 points that works entirely except for a specific edge case, you might receive 12/14 functionality points. If your testing covers this edge case, however, you can still get 6/6 test points.

CS 1234/2230 students must attempt features whose point value sum to 120 points.

Extra Credit

If you wish to go above and beyond, you can earn up to 20 extra points by attempting additional features from the feature list. However, the point values of any features you implement beyond your required 100 (or 120 for CS 1234/2230 students) will be halved when calculating your extra credit score. For instance, if you implement a feature worth 20 points as extra credit, you will receive up to 10 extra credit points for it.

Submission

Submit your GitHub repo and commit ID for this project to the "Project 6: Final Project Gear Up (Code)" assignment on Gradescope.