| 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 with the opportunity to exercise their leadership, management, and research skills in a team based task. As a means of achieving this goal, grad students will be given a written specification of a visual effect, and assigned the tasks of researching current methods to creating the effect, proposing an implementation approach, then leading a team of undergraduate students in the implementation of the effect.
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 manage a team in the design and synthesis of a shader from scratch for an advanced visual effect, then document and describe results of their implementation, both orally and in written form.
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, second edition, by Randi J. Rost; Addison-Wesley Professional, 2006.
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 the GPU Gems series useful:
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.
Note that the GPU Gems books are all 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 image synthesis 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% | Final project (research) |
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 eight labs given during the course of the quarter; each lab will count equally towards the final grade.
Readings from the Graphics literature will supplement the labs and will be required (see the Readings section, below), as many of the shaders to be written in lab will be based on current papers.
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 consisting of one Graduate student, who will serve as team leader, and one or two undergrad student.
A list of possible projects will be distributed and posted early in the quarter; student-initiated effects will also be acceptable. Each Grad student will chose one of these projects (or propose one of his or her own). Undergrads will be able to specify a preference of team/shader, 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 library research from Graphics journals, books, and the Internet. This phase will be the responsibility of the Grad Student leader. A presentation of the findings will be given by Grad students during the last week of the quarter.
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. This phase will be the responsibility of the Grad leader, although it could be developed by each team as a whole.
Implementation: The shader will be implemented in both GLSL and RenderMan. Implementation tasks should be distributed amongst members of the team.
Presentation: During finals week, each team will present their results. 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.
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.
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.
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 14, 2010
Deadline to withdraw: Friday, April 30, 2010
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.
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.
Submitting assignments: Submission requirements for each assignment will be given in the description for the assignment. Submissions for reading summaries must be made in printed form; all other submissions are electronic. Unless otherwise indicated in the assignment, assignments are due as follows:
Item Form Due Reading summaries hardcopy at the beginning of class on the date associated with that item Checkpoint materials timestamp of delivery to my system mailbox no later than 11:59:59pm on the specified due date Final submissions electronic via tryby 11:59:59pm on the specified due date
Any day of the week is a valid due date. DO NOT slide assignments 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 attend class on a day when you have a reading summary due, you may turn it in during the previous class session, during one of my office hours prior to the due date, or at the main CS office (GOL 3005); I will not accept electronic (emailed) copies without prior approval.
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.
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. |
|