GPU Shading and Rendering

Online ID: courses_0025
Category: Rendering — real-time or for games
Organizer: Marc Olano
Full day
Regular session room

Summary: Real-time programmable shading can now be experienced everywhere from game consoles to the highest end PCs. This updated course brings together leading researchers from industry and academia to present the foundations of hardware shading, the latest developments, and how shading hardware is increasingly used for non-real-time rendering.


Abstract: Real-time programmable shading was once seen as a distant dream. When the first version of this course was offered five years ago, real-time shading was possible, but only with one-of-a-kind hardware or by combining the effects of tens to hundreds of rendering passes. Today, almost every new computer comes with graphics hardware capable of interactively executing shaders of scores to hundreds of instructions. This course provides an overview of everything you need to know to be an expert in hardware shading: the basics of graphics hardware and software; commercial, standard and open-source shading languages; new developments using GPUs to accelerate high-quality rendering; and the latest shading hardware capabilities as presented by the vendors themselves. The course concludes with the popular panel-style question and answer session, where participants can ask questions of any presenter or suggest topics of discussion.

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: Advanced

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


  1. Shading Technology
    1. Introduction (Olano - 10 min)
      1. Course organization.
      2. What is real-time shading?
    2. 3D Graphics Hardware Architecture (Olano - 45 min)
      1. Standard hardware graphics pipeline
      2. Programmable hardware
      3. Compare GPU to general parallel architecture
      4. Generic hardware dataflow models
      5. Common models for shading
    3. Shading Compilers (Bleiweiss)
      1. Programming for GPU, CPU
      2. Shader compiler API
      3. Virtualization
      4. Advanced topics

  2. Shading Languages
    1. OpenGL Shading Language (Olano - 25 min)
      1. Language overview/differences
      2. API overview
      3. Shading algorithm example
    2. Cg (Kilgard - 25 min)
      1. Language overview/differences
      2. API overview
      3. Shading algorithm example
    3. HLSL (Sander - 25 min)
      1. Comparison to Cg
      2. API overview
      3. Shading algorithm example
    4. Shader Metaprogramming with Sh (McCool - 30 min)
      1. What is metaprogramming?
      2. Designing a general language for real hardware
      3. Use in applications
      4. Shading algorithm example

  3. Non-real-time GPU Rendering
    1. Rendering algorithms (Hart - 50 min)
      1. Ray engine
      2. Matrix multiplication
      3. Radiosity and subsurface scattering
    2. GPU Production Animation (Gritz - 50 min)
      1. Requirements of production rendering
      2. Comparing production and game rendering
      3. Hardware algorithms and trickery

  4. Hardware Systems
    1. ATI (Sander - 40 min)
      1. System description and details
      2. Demo and shading algorithm example
    2. NVIDIA (Kilgard - 40 min)
      1. System description and details
      2. Demo and shading algorithm example
  5. Panel-style Q&A (All - 25 min)

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

Extant Material: Cg and Ashli are available for free download from the NVIDIA and ATI respectively. 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.

History: This course first appeared in 2000 as "Approaches for Hardware Accelerated Shading", inspired by papers from the Workshop on Graphics Hardware. It has changed each year to follow changes in technology and increasing commercial availability. Previous proposals and course notes are online at Material from this course has also been developed into the book Real-Time Shading, by Olano, Hart, Heidrich and McCool, published in 2002.

Changes for this year include an increased focus on real-time and non-real-time use of graphics hardware for rendering. Also, specific shading algorithms will now be explicitly demoed in the individual language and hardware sections.

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. Last year's room had extra external connections, which helped significantly.

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 he recieved his Ph.D. in computer science in 1998 under Anselmo Lastra. 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.

Avi Bleiweiss
Software Architect
ATI Research

Avi Bleiweiss is a member of technical staff in the Architecture Tools group at ATI Research, Silicon Valley. At ATI he is contributing to the development of Ashli, an advanced shading toolkit, and its application to current and next generation programmable graphics hardware. Previous graphics credentials include the design and implementation of a software 3D binning subsystem (Believe, Inc.) and working on an OpenGL driver/simulator for a parallel, programmable geometry engine (SGI). Avi had co-authored numerous graphics related papers and introduced Ashli in the Real-Time Shading course at SIGGRAPH 2002.

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.

John C. Hart
Associate Professor
Department of Computer Science
University of Illinois, Urbana-Champaign

John C. Hart's work on real-time shading is part of a larger project, supported by NVidia, ATI, Microsoft, Evans & Sutherland and the NSF, to port general purpose graphics and scientific algorithms to the GPU. Hart is a co-author of Real Time Shading and a contributing author of the 3rd edition of Modeling and Texturing: A Procedural Approach. He is the Editor-in-Chief of ACM Transactions on Graphics, served five years on the SIGGRAPH Executive Committee, and was an Executive Producer for the documentary "The Story of Computer Graphics."

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.

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: 2005-01-03 17:36:40 -0500 (Mon, 03 Jan 2005) $