Real-time Shading

Organizer: Marc Olano
Full day
Regular session room

Summary: The dream of real-time procedural shading is becoming a common reality. This updated course brings together hardware developers and leading researchers to share the latest developments in shading hardware, and to present methods, models and ideas useful across the range of shading hardware.


Expanded statement: Shading languages, long valued for off-line rendering and production animation, have recently become possible on interactive graphics hardware. A wide spectrum of applications are poised to use them -- scientific visualization, product design, games, and more. This course explains the variety of techniques that application developers can use to get the most out of current and future shading hardware, and presents a series of technology overviews of the latest in shading hardware. The course concludes with a panel session allowing free discussion between the speakers and audience.

Abstract: Real-time procedural shading was once seen as a distant dream. When the first version of this course was offered three short years ago, real-time shading was possible, but only by combining the effects of tens to hundreds of rendering passes. Today, almost every new computer comes with graphics hardware capable of interactively executing shading functions consisting of thousands or 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 course begins with a guide to understand the similarities and differences between real-time and non-real-time shading. It describes methods for accomplishing many common shading tasks in ways that work well on graphics hardware. We present the latest shading hardware developments from several leading hardware vendors. Finally, we provide a brief look under the hood to see what is necessary in hardware and software to make it all happen. The course concludes with a 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.

Course topics: Latest in shading hardware and languages; Models for understanding shading hardware; Advanced techniques for interactive shaders: reflectance, pre-evaluating all or parts of a shader, and the many uses of texture maps; Inside shading hardware and shading compilers.


  1. Models for Shading
    1. Introduction (Olano - 15 min)
      1. Course organization.
      2. What is real-time shading?
    2. Ignoring Hardware Differences (Olano - 35 min)
      1. Generic hardware dataflow models
      2. Common models for shading
      3. Generic processing through shading languages
      4. Mapping shading languages to hardware.
    3. OpenGL Shading Language (Rost - 20 min)
      1. Shading language overview
      2. Designing a general language for real hardware
    4. Characterizing Hardware Differences (Hart - 35 min)
      1. Grammar for articulating shading pipelines
      2. Application to existing pipelines
      3. Possibilities for future pipelines

  2. Techniques for Real-time Shading
    1. Hardware shading effects (Heidrich - 45 min)
      1. BRDFs and reflectance models
      2. Uses of environment maps
      3. Shadows
      4. Bump mapping
      5. Demo of these effects
    2. Sampling procedural shaders (Heidrich - 30 min)
      1. Choosing sampling rates and resolutions
      2. View dependent effects
      3. Hardware rendering as texture
    3. 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

  3. Shading Systems
    1. 3DLabs (Randi Rost - 35 min)
      1. System description and details
      2. Demo
    2. ATI (Jason L. Mitchell - 35 min)
      1. System description and details
      2. Demo
    3. NVIDIA (Kurt Akeley - 35 min)
      1. System description and details
      2. Demo

  4. Under the Hood
    1. 3D Graphics Hardware Architecture (Bill Mark - 40 min)
      1. Standard hardware graphics pipeline
      2. Programmable hardware
      3. Compare GPU to general parallel architecture
    2. Shading Compilers (Olano - 40 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
  5. Panel-style Q&A (All - 25 min)

Continuity Statement

This course is organized into a logical progression of components. Each component builds on the preceding ones. First we identify the substantial areas of similarity, as well as some key differences, between real-time and non-real-time shading systems. Based on this understanding of shading systems, we present a toolbox of shader building blocks that are general purpose, yet also perform well. The third component, shows several real shading systems in action, with presentations and demos of the state-of-the-art hardware from several vendors. We wrap up with a brief introduction to the hardware and software technology behind all of the real-time shading and an opportunity for the audience and other presenters to pose questions and topics for discussion.

Suggestions for Shorter Presentations

Half-day presentation would be difficult since this course is already a compression of material presented in two days last year into a single day. It could be possible by restricting the course to any pair of major components, though major topic areas would be left uncovered.


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 2001, under the new name "Real-Time Shading", the course was expanded to include more historical perspective as well as presentations of the first commercial graphics shading hardware. In 2002, the course was split into two full-day courses. "State of the Art in Hardware Shading" focused on demos and comparison between the growing number of hardware shading options and APIs, while "Real-Time Shading Languages" stuck to platform independent techniques useful in real-time shaders, the compiler technology behind any real-time shading system, and the historical perspectives on real-time shading.

The course has remained popular in its 2000, 2001 and 2002 incarnations. Even last year, when split into two full-day courses, both maintained good attendance throughout the day. Some attendees were confused over the distinction between the two and the need for some of the historical and implementation details. Also, the format of the hardware comparisons was course was a bit repetitive. Consequently, this year we are scaling back to a single course containing the best of both of last year's courses. We reduced the historical content, compiler and API details, while retaining the state-of-the-art hardware presentations and cross-platform techniques.


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 all of the 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 last year.

Special Requirements

We will not have any special requirements for our notes.

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's past SIGGRAPH participation includes course presentations (OpenGL, Advanced Rendering Architectures), panel presentations (PEX vs. OpenGL debate, Graphics PCs will put Workstation Graphics in the Smithsonian, When will Ray-Tracing Replace Rasterization?), and participation in the technical program, which he chaired in 2000.

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.

Bill Mark
Assistant Professor
Department of Computer Sciences
University of Texas at Austin

Bill Mark worked with Kekoa Proudfoot, Pat Hanrahan, and others at Stanford to build the first procedural shading system for programmable PC graphics hardware. In Fall 2001, Bill joined NVIDIA to lead the design of the Cg language. In January 2003, he returned to academia at the University of Texas, where he is investigating algorithms, architectures, and programming environments for future real-time graphics systems. Bill is the author of the chapter on real-time programmable shading in the 3rd edition of Modeling and Texturing: A Procedural Approach, and is papers co-chair of the Graphics Hardware 2003 symposium. He received his Ph.D. from the University of North Carolina at Chapel Hill in 1999.

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 driver development group of 3Dlabs, Inc. (formerly Dynamic Pictures) since October '97. This group is currently driving the definition of the OpenGL 2.0 standard and implementing OpenGL drivers for the 3Dlabs' family of graphics products. Prior to joining 3Dlabs, Randi was a graphics software architect for Hewlett-Packard's Graphics Software Lab and was responsible for leading Hewlett-Packard's graphics software efforts in the areas of imaging and volume rendering. Prior to joining Hewlett-Packard, he was chief architect for graphics software at Kubota Graphics Corporation. There he was responsible for leading KGC's efforts to design and implement a rich and flexible software environment for KGC's line of high-performance graphics and imaging systems. Randi has participated in emerging graphics standards efforts for over fifteen years. He was one of the chief architects for PEX and served as the PEX document editor for the first four years of the effort. He has participated in the design of OpenGL since its inception and, and was a member of the Graphics Performance Characterization (GPC) Committee during the development of the Picture-Level Benchmark (PLB). He received NCGA's 1993 Achievement Award for the Advancement of Graphics Standards. Randi has previously participated in SIGGRAPH tutorials on PEX and evaluating graphics workstations, was the course organizer for tutorials on large model visualization at SIGGRAPH '93, and was the course organizer for tutorials on OpenGL at SIGGRAPH `92, `93, and `94 and at Eurographics `94. His most recent SIGGRAPH presentations were as the course organizer for "CPU Extensions for Graphics and Video" presented at SIGGRAPH '99 and as the course organizer for "Media-Rich Programming With OpenML" presented at SIGGRAPH 2001.

Organizer Contact Information

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

$Revision: 1.2 $ $Date: 2003/08/28 22:32:48 $