GPU Shading and Rendering

Online ID: courses_0045
Category: Hardware Algorithms – real-time or for games
Organizer: Marc Olano
Full day
Regular session room

Summary: Programmable graphics hardware has found its way into almost every PC and game console sold today. This course features the latest exciting developments in shading hardware, a practical comparison of shading languages, and a glimpse of hardware shading coming back to its production rendering roots.


Abstract: Programmable GPUs are increasingly powerful computational machines. While GPU shading practitioners must still choose between graphics APIs and languages, their capabilities and syntax are amazingly similar. This course presents the latest GPU shading evolution in the next generation hardware, and highlights the features, similarities and differences between the different API, language and hardware choices through a series of instructive examples and demos presented by experts from academia and industry. Unlike previous courses, this year will focus on examples and general shading techniques that could be ported from shading language to shading language, but each presented in explicit detail using one of the API/language/hardware choices to allow course participants to learn general methods while judging the differences for themselves. In addition, we highlight the distance that still exists between production and GPU shading and show the inroads GPUs have made in production rendering.

Prerequisites: This course assumes working knowledge of a modern real-time graphics API such as OpenGL or Direct3D. The participants are also assumed to be familiar with the concepts of programmable shading and shading languages.

Level: Intermediate

Intended Audience: Technical practitioners and software developers using or intending to use graphics hardware for shading.


  1. Shading Technology
    1. Introduction (Olano - 30 min)
      • Shading evolution: RenderMan to GPUs
      • Why are GPUs so fast?
    2. Direct3D 10 (Blythe - 75 min)
      • Direct3D 10 pipeline
      • Geometry shaders
      • Stream output

  2. Shading Languages, Systems and Demos
    1. Shader Metaprogramming with Sh (McCool - 50 min)
      • What is metaprogramming?
      • Designing a general language for real hardware
      • Use in applications
      • Shader algebra
      • Will include demos
    2. OpenGL Shading Language (Olano - 50 min)
      • Example: Homogeneous lighting computation
      • Example: Variations on Perlin noise
      • Will include demos

    3. Cg and NVIDIA (Kilgard - 50 min)
      • A selection of 2-3 in-depth examples showing NVIDIA hardware features and Cg language and application interface
      • Selection will be made late to allow most up-to-date content
      • Will include demos
    4. HLSL and ATI (Sander - 50 min)
      • A selection of 2-3 in-depth examples showing ATI hardware features and HLSL language and application interface
      • Selection will be made late to allow most up-to-date content
      • Will include demos

  3. GPUs in Production Rendering
    1. GPU Production Animation (Gritz - 45 min)
      • Requirements of production rendering
      • Comparing production and game rendering
      • Hardware algorithms and trickery
      • High-quality image generation with GPU's in the Gelato rendering system
    2. Adapting Production Shaders to GPUs (Pellacini - 45 min)
      • Production shader issues
      • Problems of automatic translation to hardware
      • Shader simplification
  4. Panel-style Q&A (All - 15 min)

Redesigned Course Length: Half-day presentation would be difficult and is not recommended

Extant Material: Cg, ASHLI/RenderMonkey, the Direct3D runtime and HLSL are all available for free download. Libsh is an open source project, with source and windows binaries online. Pointers to these will be provided during the appropriate sections of the course.

Portions of the course notes include reprints of papers and chapters from other sources. Presenters do have republication rights for the included material.

History: This course first appeared in 2000, though it has changed (sometimes significantly) each year with changes in technology and availability. Previous proposals and notes are online at Course material from 2002 was developed into the book Real-Time Shading, by Olano, Hart, Heidrich and McCool.

Changes for this year include details on the significant new shading developments in DirectX; a revamped look at shading hardware and languages through demonstrations of their use to accomplish other shading concepts and effects; and an increased focus on graphics hardware for production rendering (expanding on the popularity of the Gritz segment last year).

Special Notes Requirements: None

Special Presentation Requirements: Several presenters will be bringing hardware to demonstrate their latest work. This hardware will include 3-4 PCs with specific graphics cards. All of these systems should be adequately supported by the regular SIGGRAPH A/V setup, though in previous offerings we have had to switch video cables mid-course. Power and video connections for three simultaneous presenter-provided computers should be sufficient, with change-over during lunch.

Presenter biographies

Marc Olano
Assistant Professor
Department of Computer Science and Electrical Engineering

Marc Olano began working on real-time shading at the University of North Carolina, where his dissertation was on a shading language for the PixelFlow graphics system, the first full programmable shading language to run on graphics hardware. After leaving UNC, he continued working on real-time shading at SGI, becoming the technical lead of SGI's OpenGL Shader project. In 2002, he joined the faculty at UMBC. In addition to his work on shading algorithms for current and future graphics hardware, he has also done research on shading models, rendering algorithms, model simplification and scientific visualization.

David Blythe

David Blythe works in the Windows Graphics and Gaming Technologies group at Microsoft on DirectX graphics and related technologies. Prior to this David worked on high-end graphics systems at Silicon Graphics, co-authored the book "Advanced Graphics Programming using OpenGL", served as editor for the OpenGL ES 1.0 specification, and has organized and lectured at a number of SIGGRAPH courses. David's work interests largely focus on end-to-end design of high-performance graphics systems.

Larry Gritz
Senior Software Architect

Larry Gritz works in NVIDIA's Digital Film Group as the chief architect of Gelato, a hardware-accelerated film-quality renderer. Prior graphics credentials include being the original author of BMRT, co-founder of Exluna, Inc. and lead developer of their Entropy renderer, head of Pixar's rendering research group, a main contributor to PhotoRealistic RenderMan, co-author of the book "Advanced RenderMan: Creating CGI for Motion Pictures," and a technical director on several films and commercials. Larry has a BS from Cornell University and MS and PhD from The George Washington University and has organized or lectured for six previous SIGGRAPH courses.

Mark Kilgard
Graphics Software Engineer

Mark J. Kilgard is a Graphics Software Engineer at NVIDIA Corporation where he contributes to the NVIDIA OpenGL driver and edits OpenGL extension specifications that expose NVIDIA's latest hardware features. Mark is particularly interested in providing better interfaces to today's programmable graphics hardware. Mark co-authored "The Cg Tutorial" and authored the book "Programming OpenGL for the X Window System" and implemented the popular OpenGL Utility Toolkit (GLUT) for developing portable OpenGL examples and demos. Previously, Mark worked at Silicon Graphics on the Onyx InfiniteReality graphics supercomputer and on the SGI's X Window System implementation. Mark has taught numerous courses at SIGGRAPH, the Game Developers Conference, and other conferences. Mark's Karaoke rendition of Dolly Parton's "9 to 5" can't be beat.

Michael McCool
Associate Professor
University of Waterloo

Michael McCool graduated in 1989 from the University of Waterloo with a B.A.Sc. in Computer Engineering, and completed his Ph.D. in 1995 with the Dynamic Graphics Project at the University of Toronto. Michael is currently an Associate Professor at the University of Waterloo. He has published papers in SIGGRAPH, the Eurographics Rendering Symposium, Graphics Hardware, Graphics Interface, ACM Transactions on Graphics, the journal of graphics tools, and elsewhere. Research interests include high-quality real-time rendering, global and local illumination, hardware shaders and other hardware algorithms, parallel computing, interval and Monte Carlo methods and applications, end-user programming and metaprogramming, and image and signal processing. Currently, his research is centered around the evolution, development, and applications of GPU and parallel CPU metaprogramming using Sh, a data-parallel shader and stream language embedded in a C++ API.

Fabio Pellacini
Assistant Professor
Dartmouth University

Fabio Pellacini was born in Italy, where he spent the first 24 years of his life. During this time he received a Laurea degree in physics from University of Parma. Following this experience he decided to pursue his interests at Cornell University, where he received a PhD in computer graphics. He then joined Pixar Animation Studios to work on new lighting technology for the studio, followed by one more year at Cornell as a Visiting Assistant Professor. These days he is spending his time as an Assistant Professor at Dartmouth. He has published various research papers in major computer graphics conferences and journals.

Pedro Sander
Senior Software Engineer
3D Application Research Group
ATI Research

Pedro Sander is a member of the 3D Application Research Group of ATI Research. He received his Bachelors degree from Stony Brook University, and his Masters and PhD in Computer Science from Harvard University. Dr. Sander has done research in geometric modeling, more specifically efficient rendering techniques and mesh parameterization for high quality texture mapping. At ATI, he is researching real-time rendering methods using current and next generation graphics hardware.

Organizer Contact Information

Marc Olano
Computer Science and Electrical Engineering
University of Maryland, Baltimore County
Baltimore, MD 21250

$Date: 2006-04-25 17:38:16 -0400 (Tue, 25 Apr 2006) $