CSCI 444/544 - Advanced Computer Graphics

Spring 2017 - Assignment 4 - Shadows!



|   Home |  Syllabus |  Assignments |  Schedule |  Resources   |
This assignment is due by May 4, 2017 by 11:59pm.

Please Note: For this all future assignments, you are free to choose which OpenGL implementation you would prefer to use. Most of what we will be working on can be accomplished in OpenGL, OpenGL ES, or WebGL. Additionally, you may use GLUT or GLFW for your framework.

HOWEVER - if you choose to use a version or framework that we are not covering in class, then you must ensure your submission builds out of the box on the machines in the Computer Commons. Be sure to note any special instructions in your README.

If the grader (i.e. instructor) cannot compile your code, you will be contacted once to solve the problem.


Part I - Generate Some Shadows


You may use the provided A2 solution (GLFW Solution) to get started. For this assignment, you have the choice to implement Shadow Maps or Shadow Volumes. Both techniques are multipass techniques so you will need to use Framebuffer Objects to capture the result of a prior pass. Your teapot should cast a shadow onto the ground plane.

Shadow Mapping
In your README, be sure to state if you implemented Shadow Maps or Shadow Volumes. Remember, for Shadow Volumes we need to pass in our objects using a triangle adjacency primitive to be able to detect a silhouette edge. If you choose to implement Shadow Volumes, then you may use a cube as your geometry. But have several cubes in the scene so they cast shadows onto each other.


Part II - Create Your Website


In addition to creating this awesome looking shadow, modify your webpage from A3 to include several screenshots.


Documentation


With this and all future assignments, you are expeced to appropriately document your code. This includes writing comments in your source code - remember that your comments should explain what a piece of code is supposed to do and why; don't just re-write what the code says in plain English. Comments serve the dual purpose of explaining your code to someone unfamiliar with it and assisting in debugging. If you know what a piece of code is supposed to be doing, you can figure out where it's going awry more easily. (Interestingly enough, this code review of Doom 3's source code says the exact opposite - well written code should require no comments. Well, we don't work at id so we're going to comment.)

Proper documentation also means including a README.txt file with your submission. In your submission folder, always include a file called README.txt that lists:
  • Your Name / HeroName
  • Homework Number / Project Title
  • A brief, high level description of what the program is / does
  • A usage section, explaining how to run the program, which keys perform which actions, etc.
  • Instructions on compiling your code
  • Notes about bugs, implementation details, etc. if necessary
  • How long did this assignment take you?
  • How fun was this assignment? 1-10 (1 - discontinue this assignment, 10 - I wish I had more time to make it even better!)


Grading Rubric


Your submission will be graded according to the following rubric.

Percentage Requirement Description
25% FBO created with appropriate attachments
25% First pass rendered to FBO
25% Second pass renders scene using FBO
25% Final scene displays shadows (either Shadow Map or Shadow Volume) cast with appropriate geometry


Submission


Please update your project so it produces an executable with the name userName_A4. When you are completed with the assignment, zip together your source code, README.txt, and www/ folder. Name the zip file, userName_A4.zip. Upload this file to Canvas under A4.

This assignment is due by May 4, 2017 by 11:59pm.

Last Updated: 01/01/70 00:00


Valid HTML 4.01 Strict Valid CSS! Level Triple-A conformance, W3C WAI Web Content Accessibility Guidelines 2.0