Instructor: Joe Geigel
Office Hours: MW 2-4
Class Dates: MW 4-6
PREREQUISITE: 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
used for non-real time shader development.
in addition, for Graduate Students:
- Students will be able to apply the fundamentals and basic
techniques of procedural shading in both real time and non-real time
- Students will be able to
implement shaders for particular visual effects based on user
requirements and specifications.
- 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.
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.
books that may be helpful:
||GPU Gems: Programming Techniques, Tips, and Tricks for
Real-Time Graphics, Randima Fernando, ed., Addison-Wesley
Professional, 2004, ISBN: 0321228324
||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 , Hubert Nuygen, ed., Addison-Wesley Professional, 2007, ISBN: 0321515269,
|Advanced Game Development with Programmable Graphics
Hardware by by Alan Watt, Fabio Policarpo, A K Peters,
Ltd., 2005, ISBN 156881240X
There will be two types of
major deliverables for the class, a set of weekly laboratory
exercises and a final project.
Lecture and Lab
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
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.
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:
- 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 submitted by Grad
students during the last week of the quarter.
-- 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
responsibiluty of the Grad leader though it could be developed by each
team as a whole.
-- The shader will be implemented in either GLSL or RenderMan.
Implementation tasks should be distributed amongst members of
-- 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.
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.
-- Should include the same info as in the presentation, but in a
written report. Code for the shaders will also be submitted.
The final grade will be
determined using the following weights:
(Group Grade -- implementation and documentation)
Department Policy on Academic Dishonesty
Students are expected to
maintain the highest standards of ethical behavior.
Those who behave in
dishonest or unethical manner in computer science courses, or in their
with the Computer Science Department, are subject to disciplinary
In particular, dishonest or unethical behavior in the execution of
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