Procedural Shading

4003-573 / 4005-764

Instructor: Joe Geigel
Office: GOL-3527
Office Hours: MW 2-4
Course URL:
Class Dates: MW 4-6
Classroom:  GOL-ICL5

: 4003-571/4005-762 Computer Graphics II  OR
                          4002-502  Foundations of 3D Graphics Programming OR
                          4002-735  3D Graphics Programming OR
                          Permission of Instructor


A recent trend in Computer Graphics is the use of specialized procedural programming languages to define the textures and material properties of objects in a virtual scene.   Programs written in these languages, called "shaders", greatly enhance the flexibility of rendering systems that previously relied on static, predefined lighting and shading models.    Animated films, such as those created by Pixar, use shaders to give the film their characteristic look and their visual beauty.   Shader support is now starting to become common on commodity graphics hardware, thus making these stunning effects possible in real time applications. 

The goal of this course is to introduce students to the architectures and mechanisms of procedural shading and to teach them how to use shaders effectively 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 programming assignments based upon the techniques presented in class.   GLSL will be used for real-time shader programming and RenderMan will be used for non-real time shader development.

Learning Outcomes

  1. Students will be able to apply the fundamentals and basic techniques of procedural shading in both real time and non-real time rendering environments.
  2. Students will be able to implement shaders for particular visual effects based on user requirements and specifications. 
     in addition, for Graduate Students:
  1. Students will be able to evaluate existing methods for programming particular visual effects and, from this evaluation, develop an implementation plan based on user requirements and specifications. 
  2. Students will be able to effectively communicate their design for a shader, or set of shaders, for a given visual effect.  


There are two  textbooks  for the class.  Though they are not required, they are highly recommended.

The RenderMan Shading language
The RenderMan Shading Language Guide by Rudy Cortes and Saty Raghavachary, Thomson Course Technology, 2008, ISBN: 1598632868 
OpenGL Shading Language OpenGL(R) Shading Language (2nd Edition) by Randi Rost, Addison-Wesley Professional, 2006, ISBN: 0321334892

Other optional books that may be helpful:

GPU Gems GPU Gems: Programming Techniques, Tips, and Tricks for Real-Time Graphics, Randima Fernando, ed.,  Addison-Wesley Professional, 2004, ISBN: 0321228324
GPU Gems 2 GPU Gems 2 : Programming Techniques for High-Performance Graphics and General-Purpose Computation, Matt Pharr, Randima Fernando, ed., Addison-Wesley Professional, 2005, ISBN: 0321335597,
GPU Gems 3 GPU Gems 3 , Hubert Nuygen, ed., Addison-Wesley Professional, 2007, ISBN: 0321515269,
Advanced Game Development with Programmable Graphics Hardware
Advanced Game Development with Programmable Graphics Hardware by by Alan Watt, Fabio Policarpo, A K Peters, Ltd., 2005, ISBN 156881240X

Requirements and Assessment

There will be two types of major deliverables for the class,  a set of weekly laboratory exercises and a final project.

Lecture and Lab

Each week, starting with Week 2, class will focus on techniques for implementing individual classes of effects using shaders, with each week focusing on a different class of effects.   Generally, lectures will be given on Mondays, during which the theory, with a discussion on implementation will be presented.  On  Wednesdays, students will implement a representative shaders based on the previous Monday's lecture, during in class laboratory exercises.   Labs will be done using both GLSL and RenderMan and will be due the following week.   There will a total of 7 labs given during the course of the quarter.   Each lab will count equally towards the final grade.

Reading from the Graphics literature will supplement the labs and will be required (see PAPERS section) as many of the shaders to be written in lab will be based on current papers.

Final Project

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/two undergrad student(s).

A list of possible projects will be suggested  early in the quarter.  Student initiated effects will also be accepatable.  Each Grad students will chose one of these projects (or propose on of his / 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:
Half way thru the quarter, students will make a short (approx 5-10 minute) presentation on the effect that they chose and the approach that they plan on taking in implementing the effect.

The final grade will be determined using the following weights:

Graduate  Undergraduate
50% 60%
Final Project  (Group  Grade -- implementation and documentation)
30% 40%
Final Project (Research)

Computer Science Department Policy on Academic Dishonesty

Students are expected to maintain the highest standards of ethical behavior.
Those who behave in a dishonest or unethical manner in computer science courses, or in their dealings with the Computer Science Department, are subject to disciplinary action. In particular, dishonest or unethical behavior in the execution of assigned work in a computer science course will be treated as follows:

For a first offense the student involved will receive a grade of zero on the assignment. [A stronger penalty may be exacted if, in the judgement of the instructor, the offense involves a flagrant violation of basic ethical standards.]

For a second offense, in the same or a different course, the student will receive a failing grade for that course.

A third offense will be referred to judicial affairs.  
Furthermore, the following action will be taken for each person involved in the incident, whether currently enrolled in the course or not:

If the student is a computer science major, a letter recording the incident will be placed in the student's departmental file; otherwise, the letter will be forwarded to the student's department chair or program coordinator.

last updated 03/02/11