Saturday, 18 December | 2:15 PM - 6:00 PM | Room 308B/C

Presented in English / 영어로 발표 됨

Creating Amazing Effects With GPU Shaders

Saturday, 18 December | 12:15 am - 4:00 am | Room 308B/C

Shader programming has become an indispensible part of graphics application development. But learning to program shaders is difficult, and it is especially difficult to understand the effect of shader parameters. This course presents shader development from an interactive standpoint. It discusses vertex, fragment, and geometry shaders, shader-specific theory, and the GLSL 4.0 shader language, then reviews the graphics pipeline, including features rarely taught in beginning courses, but exposed in shaders, and shows how shaders fit into the pipeline operations. Each class of shaders is introduced with glman examples that explain details of the concept.

The OpenGL 4.0 and GLSL 4.0 specifications were recently released. While most attendees will not yet have compatible hardware on their laptops, the course explains what is new in this release and the extra functions it can perform. Attendees receive free software so they can follow along and interact with examples.



Intended Audience

Faculty or other attendees who want to learn about shaders to create special effects for application development or want to teach a computer graphics course that includes shader concepts.

Presentation Language

Presented in English / 영어로 발표 됨


Basic understanding of the steps in the graphics pipeline and introductory knowledge of math for computer graphics (such as matrix multiplication).


Welcome and Course Context - Bailey

Review of the Graphics Pipeline - Cunningham
  Block diagram
  For each block: what are the inputs and what are the outputs?

Basic Shader Concepts - Cunningham
  What blocks in the pipeline do the shaders replace or augment?
  Functions of vertex, tessellation, geometry, and fragment shaders
  Relations between vertex, tessellation, geometry, and fragment shaders

Coordinates and transformations - Cunningham
  Homogeneous coordinates
  Coordinate systems: Model, World, Eye, Clip, NDC, Screen
  Normal transformation matrix
  Modeling and viewing transformations, viewing volumes, normals

Introduction to the OpenGL Shading Language (GLSL) - Cunningham
  Similarities to, and differences from, C++

Using GLSL Variables - Cunningham
  The roles of Uniform and Attribute variables in the shader pipeline
  The roles of Out and In variables between shaders

The glman Tool - Bailey
  How to use glman

Vertex Shaders - Bailey
  Surface coloring in model coordinates versus eye coordinates
  Stripes example
  Dots example
  Nonlinear transformations


Fragment Shaders - Bailey
  Shading: flat, smooth, Phong

Noise - Bailey
  Positional noise, gradient noise
  Fractional Brownian Motion (FBM, 1/f noise, octaves), turbulence.
  Noise in glman

Textures - Bailey
  Texture data: unsigned byte, floating point, 2D, 3D, parameters, binding
  Texture application: texture units, multitextures, sampler functions
  Texture techniques:  cube maps. reflection, refraction
  Procedural textures : noise and bump mapping

Image Manipulation in Shaders - Cunningham

Geometry Shaders - Cunningham
  Inputs and outputs, built-in variables, built-in functions
  Adaptive subdivision

Questions and Answers

Mike Bailey
Oregon State University

Steve Cunningham
Brown Cunningham, Associates

Instructor Bios

Mike Bailey
Mike Bailey, professor of computer science at Oregon State University, holds a PhD from Purdue University. He has worked at Sandia National Labs, Purdue University, Megatek Corporation, and the San Diego Supercomputer Center. His extensive experience with SIGGRAPH courses includes teaching the Introduction to Computer Graphics course since 1995. He has taught numerous classes at conferences (SIGGRAPH, SIGCSE, IEEE Visualization, Supercomputing), at the college level (a total of over 3,800 students), and commercially. Senior computer science students at the University of California, San Diego named him Computer Science Teacher of the Year five times.

Steve Cunningham
Steve Cunningham has been actively engaged in computer graphics education for many years. He has organized computer graphics education workshops developed by SIGGRAPH and Eurographics in Spain, Portugal, the United Kingdom, China, and Austria. He has given computer graphics teaching workshops at the SIGCSE conference and in Brazil, Botswana, and Mexico, and served as dhair of both the SIGGRAPH Education Committee and the Eurographics Education Board. He has authored, co-authored, or co-edited seven books, mostly on computer graphics-related topics, including a recent textbook for a beginning computer graphics course.