CMSC 435/634: Introduction to Computer Graphics

Assignment 6
Shading
Due December 6, 2006 (Tiles Due November 28, 2006)

The Assignment

For this assignment, you will use RenderMan to render an image using a repeating tile surface shader. Each tile in your shader should match as closely as you can to a physical tile you must find and submit for approval by November 28th. Possibilities include floor tiles, bathroom tiles, ceiling tiles, etc. You can either check in one or more digital photos of your tile to your submission directory by the 28th or bring the tile with you to my office hours on the 28th where I can take and check in photos for you. While the final assignment can be turned in up to a week late using your free late, or for the usual 20% penalty, the tile photos must be submitted by the 28th and are not eligible for late submission.

The scene and shaders must be your own creation. You can use the scene from assignment 1, or a new scene you create for this assignment. In either case, the your shader must appear on a flat surface in the scene (table top, wall, floor, cieling, ...), must be lit, and should show several repeating similar tiles. You should exhibit the following shading features:

  1. Use of mod to make a repeating pattern.
  2. Use of noise for some aspect of the tile appearance and tile-to-tile variation.
  3. Appropriate diffuse, specular or other lighting terms. You may use the built-in diffuse and specular functions.
  4. Differing material properties for the tile and inter-tile space (mortar, ceiling support strips, etc.)
  5. (634 only) Also write a displacement shader to accompany your surface shader. It should include any displacement that happens between tiles, as well as any displacement evident on the surface of the tile itself.

Some of the grade will be awarded for creativity, originality and effort.

Extra credit

Add one or more additional shaders for other objects in your scene. Shaders should be creative, significant, unique, and your own work. A minor variation of one of the classic shaders will not count for extra credit. The best source of inspiration for shaders that meet the extra credit requirements is to start from other physical objects.

Helpful information

Steve May's RMan Notes, from a course at Ohio State, has many helpful tips on shader development strategies. The RenderMan companion, on reserve in the library, is a good user's guide for shading. The RenderMan specification, is online and has even more details on everything you can do in a shader.

Use RiPatch(RI_BILINEAR, ...), rather than RiPolygon(...). You'll get much more sane u's and v's.

With 3Delight, shaders must be compiled using the shaderdl program prior to rendering with renderdl. However, changes to the shader code that do not change the way it is used in your C code do not require you to re-compile and re-run the C code to create a new RIB file.

What to turn in

Turn in this assignment electronically by checking your source code into your Assn6 CVS directory by 11:59 PM on the day of the deadline. We will use a dated checkout for grading, so you will be graded on whatever has been checked in as of 11:59 PM. Be sure to include a Makefile that will build your project when we run make, and a readme.txt file telling us about your assignment. What (if any) help did you receive from books, web sites or people other than the instructor and TA? What extra credit features did you add?

Also submit everything we need to run your submission. Double check the output of cvs update after you submit to make sure you have not forgotten any important source files. Submit your Makefile, any headers and C/C++ files, and any other auxiliary files we might need. Be sure to comment your code! You will not be graded on the presence or quality of your comments, but we will look at your code and anything that helps us understand what you did (or were trying to do) can only help. In any case, your programs are expected to be robust and easy to understand.