CS 519 -- RenderMan and OpenGL Shaders

Spring 2008

http://eecs.oregonstate.edu/~mjb/cs519


IM Lectures Projects Handouts Grades VHR


This page was last updated: March 12, 2008



Under Construction:
This content is not final until you see this message go away!


Announcements:


What We Will Be Doing This Quarter

The goals of this course are to leave you "career-ready" (i.e., both work-ready and research-ready) for tasks, both GPU and RenderMan, that require the implementation of graphics algorithms in the form of shaders.

You will have access to the graphics systems in OSU's Computer Graphics Education Lab (CGEL) in Batcheller Hall 244. This is likely the only place around OSU where you can get access to RenderMan. It is also a place to get access to the OpenGL Shading Language (GLSL), although you might have it if you've bought a good graphics card lately.

Speaking of graphics cards, you can tell if a card will support vertex and fragment shaders by looking for the phrase Shader Model 3.0 compliant in its specifications. A card will support vertex, fragment, and geometry shaders if it is Shader Model 4.0 compliant.

CS 519 topics include:



Prerequisites

You must come in being a good OpenGL programmer. No exceptions! This is not a good time to learn computer graphics and OpenGL for the first time.

CS 450, 550, 553, or 554 are acceptable preparation.

Learning Objectives

On completion of the course, students will have demonstrated the ability to:

  1. Explain the difference between Model Coordinates, World Coordinates, Eye Coordinates, Clip Coordinates, Normalized Device Coordinates, and Screen Coordinates.
  2. Explain the ModelView and Projection matrices, and what operations belong in each, and why.
  3. Describe where surface, displacement, vertex, fragment, and geometry shaders fit into the graphics pipeline
  4. Explain the difference between uniform, varying, and attribute variables.
  5. Apply the concept of octave noise to shader effects.
  6. Explain the difference between bump-mapping and displacement-mapping.
  7. Apply shaders to visualization problems
  8. Use textures in shaders for imaging, height fields, and general data.
  9. Explain how to avoid the aliasing effects of sharp transitions.
  10. Demonstrate how shaders can be used to simulate various physics optics effects.



Professor

The class is being taught by Professor Mike Bailey.

Office: Kelley 2117
Phone: 541-737-2542
E-mail: mjb@cs.oregonstate.edu
Web site: http://eecs.oregonstate.edu/~mjb

Office Hours:

Sundays 7:00-8:00 (PM) Instant Messaging
Others TBD    
    or, by appointment -- send email

The Virtual Hand Raise (VHR)

I recognize that it sometimes takes a certain amount of courage to ask a question in class. But, the worst thing of all is to not ask! So, this class also offers a feature called the Virtual Hand Raise. Click here to get into it. It will allow you to send me a question or comment, completely anonymously. I will answer all questions submitted this way at the start of the next class.



Textbook

You are expected to have the following book handy:

Randi Rost, The OpenGL Shading Language, 2nd Edition, Addison-Wesley, 2006. (ISBN = 0321334892)

This is available from the OSU bookstore. You don't need your own copy, but at least have one you can share. Other course material will consist of web pages, handouts, and notes taken in class.



Other Good References

The Rost, Upstill, and Shreiner books are in the CGEL library.



Lecture Schedule

To see a Spring Quarter calendar, click here.

Class lecture time is: Monday, Wednesday, and Friday, 1:00 - 1:50.

Be sure to check the class room in the table below to see what days we will be in Kelley Engineering Center room 1003 and what days we will be in the Computer Graphics Education Lab (CGEL -- Batcheller 244).

  Date Room Topics
1 March 31 1003 Introductions. General course information. Project #1.
The graphics pipeline -- how it really works.
Homogeneous coordinates.
Coordinate systems: Model, World, Eye, NDC, Clip, Screen.
2 April 2 1003 The graphics pipeline -- how it really works, continued.
Transformations, Viewing volumes, Normals.
Uniform, Varying, and Attribute variables
History of RenderMan
3 April 4 CGEL Introduction to RenderMan:
Shader coordinate system, RIB, shaders, built-in functions and variables
bvrman.
4 April 7 CGEL RenderMan surface and displacement shaders
5 April 9 1003 Noise: Positional, Gradient. Cubic and quintic interpolation.
6 April 11 CGEL Noise: Fractional Brownian Motion (FBM, 1/f), turbulence.
7 April 14 CGEL Introduction to the OpenGL Shading Language (GLSL)
How GLSL is similar to, and different from, RenderMan shaders
Built-in functions and variables
Attribute, Uniform, and Varying variables
glman
8 April 16 CGEL Fragment Shaders: Working in Model Coordinates versus Eye Coordinates
GLSL Noise
9 April 18 CGEL GLSL Textures I: unsigned byte, floating point, 2D, 3D, parameters, binding, texture units, multitextures, sampler functions
10 April 21 CGEL GLSL Textures II: Cube maps. Reflection, refraction.
11 April 23 CGEL Bump mapping, I
12 April 25 CGEL Bump mapping, II
13 April 28 CGEL More fun with vertex shaders: Dome projection, Hyperbolic projection, Geometry Morphing
14 April 30 CGEL Test #1 review.
The optics of rainbows and diffraction
The optics of lenses
15 May 2 1003 Test #1
16 May 5 CGEL Image manipulation in shaders, I
17 May 7 CGEL Image manipulation in shaders, II
18 May 9 CGEL Discuss the Shader Olympics Final Project. Look at some examples from last year.
Go see the Engineering Expo after class!
19 May 12 1003 Dino Poster class presentations, I
20 May 14 1003 Dino Poster class presentations, II
21 May 16 1003 Written Shader Challenge proposals due at the start of class.
Geometry Shaders, I
22 May 19 CGEL Geometry Shaders, II
23 May 21 1003 The GLSL API, I
24 May 23 1003 The GLSL API, II
25 May 26 ---- OSU Holiday -- No Class Today
26 May 28 CGEL Visualization using shaders.
27 May 30 CGEL No class today. Work on your projects! Prof. Bailey will be in the CGEL to discuss your projects and answer questions.
28 June 2 1003 Class Evaluations
Test #2 review.
More Information
29 June 4 CGEL Shader Olympics Presentations
30 June 6 CGEL Shader Olympics Presentations
* June 11? 1003 Test #2 Wednesday, June 11, 9:30 - 11:00 AM, Kelley 1003.



Projects

Project # Points Title Due Date
1 20 Register your Grade-Posting Alias April 2
2 60 Elliptical polka-dots April 11
3 100 Noisy displaced elliptical polka-dots April 18
4 100 Interactive noisy elliptical polka-dots April 28
5 60 Dino poster May 7
6 100 Bump Mapping Linear Ripples May 18
8 100 Geometry Shaders May 28
9 200 The Shader Olympics June 4



Grading

Grades will be posted through this web page. To protect your privacy, they will be posted by your alias that you give me in Project #1.

Click here to see the current grade posting.

CS 519 will be graded on a fill-the-bucket basis. There will be 9 projects and two tests. You get to keep all the points you earn.

Your final grade will be based on your overall class point total. Based on an available point total of 1040, grade cutoffs will be no higher than:

Points Grade
1030
1010 B+
990
970 C+
950
930 D+
910



Files Used in Class

  1. Images Shown in Class
  2. .rib and .sl files used in class
  3. .glib, .vert., and .frag files used in class
  4. .obj files used in class



Handouts

  1. OpenGL-GLUT-GLUI
  2. Homogeneous Coordinates
  3. Graphics Pipeline System
  4. List of RIB Commands
  5. RenderMan shader global variables
  6. RenderMan shader functions
  7. RenderMan Quadrics
  8. Bvrman documentation
  9. Glman documentation
  10. GLSL Introduction
  11. Bump-mapping
  12. Ripple Info
  13. Rainbows
  14. Diffraction
  15. Lenses.
  16. The GLSL API.
  17. Imaging notes.
  18. Vis shader notes
  19. Geometry shader notes
  20. CUDA notes

Executables

These executables are all loaded on the CGEL machines, but you can also get them here in case (1) you want to run them on other machines, or (2) there are newer versions than what are on the CGEL machines.

  1. bvrman.exe
  2. glman.exe
  3. noisegraph.exe

You might also need these dlls:

  1. glew32d.dll
  2. glut32.dll
  3. msvcr71d.dll



Project Turn-In Procedures



Class Rules



Students With Disabilities

Accommodations are collaborative efforts between students, faculty and Services for Students with Disabilities (SSD). Students with accommodations approved through SSD are responsible for contacting the faculty member in charge of the course prior to or during the first week of the term to discuss accommodations. Students who believe they are eligible for accommodations, but who have not yet obtained approval through SSD, should contact SSD immediately at 737-4098.



Other Useful Online Graphics and Shader Information