Last updated 2013/03/01 16:53:49
Update history:
2013/03/01: |
initial version |
| Name: | Warren R. Carithers |
| Office: | 3617 Golisano (70-3617) |
| Phone: | (585) 475-5393 |
| Email: | wrc AT cs.rit.edu |
The primary goal of this course is to introduce students to the architectures and mechanisms of procedural shading and to teach them the theory and algorithms behind effective use of shaders in creating stunning visual effects. The course will compare and contrast real time vs. non-real time shader architectures and students will gain expertise in both environments. The format of the course delivery will be part lecture, part studio style with weekly labs given, based upon the techniques presented in class.
Another goal of the course is to provide students the opportunity to, in a team-based environment, apply their newly obtained expertise in shading to the design, implementation, and documentation of a more advanced visual effect. Each team will be given a specification of a visual effect, and assigned the tasks of researching current methods to creating the effect, proposing an implementation approach, developing the implementation, and presenting their work to the class.
The following are the intended outcomes for this course:
Students will apply the theory and algorithms regarding procedural shading in both real time and non-real time rendering environments.
Students will implement shaders for particular visual effects based on user requirements and specifications.
Students will analyze and report on the state of the art with regards to the implementation of a given visual effect.
Students will work effectively in a team towards the goal of designing and implementing a shader from scratch for an advanced visual effect, then documenting and describing results of their implementation.
The prerequisite for this course is one of the following courses:
These are prerequisites, not corequisites - to succeed in this course, you should have already passed one of these courses, or their equivalents. Taking it at the same time as this course is not sufficient! See me immediately if you are missing the prerequisites, or you may be dropped from this course without further warning!
There are two required textbooks for this course:
Advanced RenderMan: Creating CGI for Motion Pictures by Anothony A. Apodaca and Larry Gritz; Morgan Kauffman, 2000.
OpenGL Shading Language, third edition, by Randi J. Rost and Bill Licea-Kane; Addison-Wesley, 2010. (This is the "Orange Book" from the Addison-Wesley OpenGL book series.)
There is one optional textbook for this course:
Advanced Game Development with Programming Graphics Hardware by Alan Watt and Fabio Policarpo; A K Peters, Ltd., 2005.
You may also find these books to be useful:
The RenderMan® Shading Language Guide by Rudy Cortes and Saty Raghavachary; Thomson Course Technology, 2008.
GPU Gems: Programming Techniques, Tips, and Tricks for Real-Time Graphics edited by Randima Fernando; Addison-Wesley Professional, 2004.
GPU Gems 2: Programming Techniques for High-Performance Graphics and General-Purpose Computation edited by Matt Pharr and Randima Fernando; Addison-Wesley Professional, 2005.
GPU Gems 3 edited by Hubert Nuygen; Addison-Wesley Professional, 2007.
All the GPU Gems books are available online in HTML format; see the course links page for details.
In Computer Graphics, much like many other areas of Computer Science, the best way to learn is by doing. Whereas the theory of shader development will be discussed in the lectures, the real learning occurs when implementing this theory into code; thus, this course relies heavily on programming tasks for grading.
The final grade will be determined using the following weights:
| 50% | Labs | |
| 30% | Final project (implementation and documentation) | |
| 20% | Research paper |
Beginning in week 2, each week of the course will focus on techniques for implementing different classes of effects using shaders. The first class each week will be a lecture class, during which the theory (with a discussion on implementation) will be presented. During the second class each week, students will implement representative shaders based on the previous lecture during in-class laboratory exercises. Labs will be done using both GLSL and RenderMan, and will be due the following week. There will be a total of seven labs given during the course of the quarter; each lab will count equally towards the final grade.
Readings from the Graphics literature will supplement material presented in lecture, as many of the shaders to be written in lab will be based on current papers (see the Readings section, below), Although no summaries or reviews of the readings are required, implementation of lab assignments will be easier if you do the readings.
In addition to the Labs, students will have the opportunity to design, implement, and document a shader from scratch for a more sophisticated effect as a final project. The project will be performed in teams. Most teams will consist of two students; if need be, one or more teams may consist of three students.
A list of possible projects will be distributed and posted early in the quarter; student-initiated effects will also be acceptable. Each student will choose one of these projects (or propose one of his or her own), and team assignments will be made to best accomodate these preferences.
The project will consist of five phases:
Research: Investigate means by which others have approached the creation of a shader for the target effect. This will require research from graphics journals, books, and the Internet.
Proposal: Identify, develop, or devise an algorithm a shader to generate the given effect. With the proposal should come a definition of the parameters used to control the shader.
Implementation: For teams of two students, the shader will be imlemented in either GLSL or RenderMan. For teams of three students, the shader will be implemented in both GLSL and RenderMan. Implementation tasks should be distributed amongst members of the team.
Presentations: At the midpoint of the term, each team will present a brief summary of the team's chosen effect and the implementation plan for that effect.
During finals week, each team will present their results. These presentations should include a list of shader parameters, what was learned from the research phase, a discussion of the algorithms used, and a demo of the shader in action.
Documentation: Should include the same info as in the presentation, but in a written report. Code for the shaders will also be submitted.
To assist you in researching and developing your shaders, a reading list of papers related to the various classes of effects has been developed. See the reading list (linked from the course assignments page) for details. These readings are for your education only, and are not graded in any way.
Students taking the course for graduate credit will be required to write and present a survey of the state of the art in shading or an in-depth report on a particular shading technique not presented in lecture. The intention of this deliverable is to prepare the student for a possible project/thesis in the area of Computer Graphics. Grad students may want to meet with the instructor in the first weeks of the course to discuss possible topics that match the students' interests and future study plans in the area.
Academic dishonesty will be dealt with in accordance with DCS and RIT policies.
RIT's
Honor Code
(section 1 of the
RIT Students Rights and Responsibilities handbook).
A general statement that sets standards of behavior for all members of
the RIT community.
RIT's
Academic Honesty Policy
(section 18 of the
RIT Students Rights and Responsibilities handbook).
Defines the basic forms of academic dishonesty (cheating, duplicate
submission, and plagiarism) and explains the official RIT policy
regarding academic dishonesty.
The
DCS Policy on Academic Integrity.
Explains the official Department of Computer Science policy regarding
incidents of academic dishonesty.
RIT is committed to providing reasonable accommodations to students with
disabilities.
If you would like to request accommodations such as special
seating or testing modifications due to a disability, please contact the
Disability Services Office.
It is located in the Student Alumni Union, Room
1150; the Web site is
www.rit.edu/dso.
After you receive
accommodation approval, it is imperative that you see me during office
hours so
that we can work out whatever arrangement is necessary.
Disclaimer: Normally, the number, type, and relative weights of assignments will not change from those specified in the syllabus and other course documents. However, I reserve the right to make changes to these or any other facet of the course, at my discretion, based upon the events of the quarter; if such a change must be made, you will be notified in class, via electronic mail, and on my web page for the course.
Coursework: Unless otherwise specified in the assignment, all work you submit for grading must be your own. Code or ideas (specific algorithms, optimizations, etc.) obtained from or inspired by other sources must be properly attributed.
Due dates: The due date for an assignment is selected in order to provide adequate time to complete the assignment, while allowing sufficient remaining time in the quarter to complete the remaining assignments. Should it become necessary, based on the events of the quarter, I reserve the right to change due dates; this, in turn, may require modification of due dates for other assignments during the quarter, or (in some cases) elimination of some assignments.
Documentation and Programming Style: I expect students to follow some reasonable form of programming style. I don't mandate a specific style; for the most part, it's more important that your code be neat, clear, and (above all) consistent. Here are the major things I'm looking for:
Although your shaders will not be written in C or C++, you may find the example style standard for C++ from CS4 (found online in HTML, PDF, and PostScript forms) to be helpful.
Warning: This course requires a significant amount of programming. I strongly suggest that you very carefully consider whether or not you should take any other programming courses along with it.
Withdrawing:
During the add/drop period (the first seven calendar days of the quarter),
you may drop this course and it will disappear from your transcript.
After that time, you can only withdraw from the course; the course will
appear on your transcript with a grade of W.
Deadline to add/drop: Sunday, March 10, 2013
Deadline to withdraw: Friday, April 26, 2013
Submitting assignments: Submission requirements for each assignment will be given in the description for the assignment. Presentation evaluations will be done on forms I will provide, and will be due the day of the presentation. all other submissions are electronic.
Unless otherwise indicated in the assignment, electronic submissions are due by 23:59:59 (11:59:59pm) on the specified due date. Any day of the week is a valid due date. Solutions submitted through any other method (e.g., sent via email, slipped under my office door, put in the bin on the wall outside my office, etc.) will be ignored.
DO NOT slide hardcopy submissions under my office door, or put them in the bin on the wall outside my office - in both cases, I may never see them! If you cannot find me to turn in the assignment, you may turn it in at the main CS office (GOL 3005). (Be sure that my name appears on the paper so that the folks in the office know that it should be put in my mailbox.)
Grading:
This is an advanced elective course. Think about what this should mean to you. You will be expected to incorporate all you have learned so far into this course; i.e., you will lose points for not following assignment instructions, for submitting code that is sloppy, undocumented or unstructured, etc.
Late submissions are generally not accepted without my prior approval.
Your assignment submissions may be graded by a grader. If so, and you have complaints about your grade, first talk to the grader. If you are still convinced there is a problem and you are unable to convince the grader, come and see me.
All requests for regrading must be made within one week of the original return date for the assignment.
Assignment of final grades:
|
I use a traditional 90/80/70/60 percentage-based grading scale in this class.
I reserve the right to alter these division points as I see fit at the end of the quarter if I believe it to be necessary, based on my overall evaluation of individual or class performance and effort. |
|