Real-time Shading

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

Summary: The dream of real-time procedural shading can now be experienced from game consoles to the highest end PCs. This updated course brings together hardware developers and leading researchers to share the latest developments in shading hardware and languages, and to present methods, models and ideas useful across all of them.


Abstract: Real-time procedural shading was once seen as a distant dream. When the first version of this course was offered four 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 thousands to tens of thousands of instructions. This course has been redesigned to address today's real-time shading capabilities and to provide more practical information for practitioners. The morning sessions cover the more advanced technical aspects of creating a shading system. The afternoon sessions cover practical details of real-time shading use, including an overview of recently developed algorithms that run well on today's shading hardware and presentations on the latest hardware developments from several leading hardware vendors. 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 like OpenGL or Direct3D. The participants are also assumed to be familiar with the concepts of procedural shading and shading languages.

Intended Audience: Technical practitioners and software developers using or intending to use real-time shading.


  1. Shading Technology
    1. Introduction (Olano - 10 min)
      1. Course organization.
      2. What is real-time shading?
    2. Ignoring Hardware Differences (Olano - 20 min)
      1. Generic hardware dataflow models
      2. Common models for shading
      3. Generic processing through shading languages
    3. Shading Compilers (Olano - 35 min)
      1. Shading as SIMD
      2. Compiling to general purpose processors
      3. Single pass compilation
      4. Multi-pass compilation
      5. Advanced compilers
      6. Level of detail shaders
    4. 3D Graphics Hardware Architecture (Kurt Akeley - 40 min)
      1. Standard hardware graphics pipeline
      2. Programmable hardware
      3. Compare GPU to general parallel architecture

  2. Shading Languages
    1. Shading language overview (McCool - 20 min)
      1. What's in a shading language
      2. (Somewhat) common features and syntax
    2. OpenGL Shading Language (Rost - 20 min)
      1. Language overview/differences
      2. API overview
      3. Example
    3. HLSL (Mitchell - 20 min)
      1. Language overview/differences
      2. API overview
      3. Example
    4. Shader Metaprogramming with Sh (McCool - 20 min)
      1. What is metaprogramming?
      2. Designing a general language for real hardware
      3. Use in applications
    5. Sampling procedural shaders (Heidrich - 25 min)
      1. Choosing sampling rates and resolutions
      2. View dependent effects
      3. Hardware rendering as texture

  3. Shading Techniques
    1. Procedural Solid Texturing (Hart - 35 min)
      1. Real-time hardware for antialiased parameterized solid texturing
      2. Real-time procedural solid texturing software using the solid map
      3. Procedural solid texturing with your GPU
      4. Demo
    2. Hardware shading effects (Heidrich - 35 min)
      1. BRDFs and reflectance models
      2. Uses of environment maps
      3. Shadows
      4. Bump mapping
      5. Demo of these effects
    3. Using GPUs for other computation (Hart - 35 min)
      1. Ray engine
      2. Matrix multiplication
      3. Radiosity and subsurface scattering

  4. Shading Systems
    1. 3DLabs (Randi Rost - 25 min)
      1. System description and details
      2. Demo
    2. ATI (Jason L. Mitchell - 25 min)
      1. System description and details
      2. Demo
    3. NVIDIA (Kurt Akeley - 25 min)
      1. System description and details
      2. Demo
  5. Panel-style Q&A (All - 30 min)

Redesigned Course Length

Half-day presentation would be difficult and is not recommended


This course first appeared in 2000 under the name "Approaches for Hardware Accelerated Shading", inspired by papers at the previous year's SIGGRAPH/Eurographics Workshop on Graphics Hardware. In the following years, it has changed each year to follow changes in technology and increasing commercial availability. Proposals and course notes from these previous incarnations are online at

This year, we are re-organizing the course to have a clear delineation between user and technology sections. We expect significant overlap and interest between these sections, but this change will better serve attendees interested in only one viewpoint.


The course notes will include copies of presentation slides, reprints of hard-to-find papers and documentation, some new material developed specifically for the course, and a collected bibliography. For reference, course notes from previous offerings are on the web:,, and Material from previous offerings of this course has also been developed into the book Real-Time Shading, by Olano, Hart, Heidrich and McCool, published in 2002.

Special Notes Requirements


Special Presentation Requirements

Several presenters will be bringing hardware to demonstrate their latest work. This hardware will include 3-6 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.

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 procedural 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.

Kurt Akeley

Graphics Architect

Kurt Akeley works part time at NVIDIA Corporation, where he is a member of the graphics architecture team. He spends the rest of his week at Stanford, working toward the completion of the electrical engineering Ph.D. that he put on hold in 1982 to co-found Silicon Graphics.

During his 19 years at Silicon Graphics Kurt led the development of several high-end graphics systems, including GTX, VGX, and RealityEngine. He also led the development of OpenGL, and he continues to be involved with OpenGL's evolution. His last full-time position at SGI was as senior vice president and CTO.

Kurt is a named inventor on fourteen patents, is a fellow of the ACM, and in 1995 was the recipient of the ACM SIGGRAPH Computer Graphics Achievement Award. He was awarded a B.E.E. degree from the University of Delaware in 1980, and an M.S.E.E. degree from Stanford in 1982.

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."

Wolfgang Heidrich

Assistant Professor
Department of Computer Science
The University of British Columbia

Wolfgang Heidrich is an Assistant Professor at the University of British Columbia. Before then he was a Research Associate at the Graphics Group of the Max-Planck-Institute for Computer Science in Saarbrucken, Germany, where he chaired the activities on image-based and hardware-accelerated rendering. He received a PhD in Computer Science from the University of Erlangen this April, a Master of Mathematics from the University of Waterloo in 1996, and a Diploma in Computer Science from the University of Erlangen in 1995. His research interests include hardware-accelerated and image-based rendering, global illumination, and interactive computer graphics.

Michael McCool

Associate Professor
University of Waterloo

Michael McCool is currently an Associate Professor at the Computer Graphics Lab within the Department of Computer Science at the University of Waterloo. Current research interests include high-quality real-time rendering, global and local illumination, hardware shaders and other hardware algorithms, reconfigurable computing, interval and Monte Carlo methods and applications, end-user programming and metaprogramming, and image and signal processing.

Jason L. Mitchell

Project Team Leader
3D Application Research Group
ATI Research

Jason L. Mitchell is the team lead of the 3D Application Research Group at ATI Research, makers of the RADEON family of graphics processors. Working on the Microsoft campus in Redmond, Jason has works with Microsoft to define new Direct3D features such as the 1.4 and 2.0 pixel shader models in DirectX 8.1 and DirectX 9. He received a BS in Computer Engineering from Case Western Reserve University in 1994 and an MS in Electrical Engineering from the University of Cincinnati in 1996.

Randi Rost

Senior Manager, Driver Development
3Dlabs, Inc.

Randi Rost has managed the Fort Collins, CO graphics driver development group of 3Dlabs, Inc. since 1997. This group is currently driving the definintion of the OpenGL Shading Language and implementing it for 3Dlabs graphics hardware products. Randi has had leadership roles in emerging graphics standards efforts for over fifteen years including PEX and PEXlib, OpenGL, the Graphics Performance Characterization Committee (which defined the Picture-Level Benchmark and later, Viewperf), and the Khronos Group (which defined OpenML). He received NCGA's 1993 Achievement Award for the Advancement of Graphics Standards. Randi has participated in or organized numerous SIGGRAPH tutorials since 1990, including "OpenGL 2.0" at SIGGRAPH 2002, "The OpenGL Shading Language" at SIGGRAPH 2003 and "Real-Time Shading" at SIGGRAPH 2002 and 2003.

Organizer Contact Information

Marc Olano

CSEE Deparment
Baltimore, MD 21250
(w) 410-455-3094
(f) 410-455-3969

$Revision: 1.8 $ $Date: 2004/01/08 15:49:45 $