Real-time Shading Languages

Organizer: Marc Olano
Full day
Regular session

Summary: Real-time procedural shading languages used to be a fantasy. Now they are not just a reality, but have been achieved through several approaches. This course brings together leading researchers in this young field to present the strengths and weaknesses of their methods and give a glimpse of the future.


Expanded statement: Shading languages, long valued for off-line rendering and production animation, are just becoming possible on interactive graphics hardware. A wide spectrum of applications are poised to use them -- scientific visualization, product design, games, and more. Initial shading hardware provides only low-level, hard-to-use interfaces. This course explains the variety of techniques to build full shading languages on past, current, and future graphics hardware. Participants will see systems in action and learn basic techniques in a series of technology overviews. The course concludes with a panel session allowing free discussion between the speakers and audience.
Prerequisites: This course assumes working knowledge of a modern real-time graphics API like OpenGL. The participants are also assumed to be familiar with the concepts of procedural shading and shading languages.

Course topics: Participants will learn how interactive procedural shading languages can be implemented using advanced programmable hardware, using more modest extensions to graphics hardware, or even on existing graphics hardware. Topics include SIMD rendering hardware, parameterized and procedural solid texturing, hardware extensions, and multi-pass rendering.


  1. Background and Building Blocks
    1. Introduction (Olano - 20 min)
      1. What's real-time?
      2. What's procedural shading?
      3. Why do we want real-time procedural shading?
      4. Overview of hardware shading techniques
    2. Noise (Perlin - 40 min)
      1. Uses of band-limited noise
      2. Consistency vs. the proliferation of different noise functions
      3. A noise function standard
      4. Hardware design
    3. 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. Shading Language Systems
    1. In the beginning: the pixel stream editor (Perlin - 30 min)
      1. Shading expressions vs. shading languages
      2. Pixel stream editor architecture
    2. PixelFlow shading (Olano - 40 min)
      1. SIMD rendering technology overview
      2. PixelFlow hardware description
      3. Mapping the pfman language to PixelFlow
      4. OpenGL extensions
      5. What we learned (or should have learned)
      6. PixelFlow shading video
    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. Demo

    4. Shading through multi-pass rendering (Olano - 35 min)
      1. Multi-pass rendering overview
      2. How multi-pass allows general shading
      3. Limitations of current hardware
      4. OpenGL Shader demo
    5. Single pass and multiple complex pass shading (Mark - 40 min)
      1. Vertex and fragment shading
      2. A unified system for programmable vertex and fragment shading
      3. Compiling to programmable fragment hardware (register combiners)
      4. Compiling to programmable vertex hardware
      5. Stanford RTSL demo
    6. Sampling procedural shaders (Heidrich - 30 min)
      1. Choosing sampling rates and resolutions
      2. View dependent effects
      3. Hardware rendering as texture

  3. Future
    1. Multi-pass RenderMan (Olano - 40 min)
      1. Necessary hardware extensions
      2. Can it be real-time?
      3. Is RenderMan appropriate for real-time shading?
    2. Analysis of shading pipelines (Hart - 35 min)
      1. Grammar for articulating shading pipelines
      2. Application to existing pipelines
      3. Possibilities for future pipelines
  4. Panel-style Q&A (All - 30 min)

Suggestions for Shorter Presentation

Given the breadth of material covered, it would be difficult to cut this course to half a day.


This course has been presented for the last two years (under the name "Approaches for Hardware Accelerated Shading" in 1999). The course has been popular at both offerings, with good attendance throughout the day. Material from this course is being developed into a book, to be published in 2002 by AK Peters. In the time since the last offering, there have been a number of developments in the fast-moving area of real-time shading. Given the increased number of offerings for procedural shading hardware, this year we are splitting the course into this proposal, "Real-Time Shading Languages", focusing on high-level languages, the meat of previous offerings; and a separate proposal for "State of the Art in Hardware Shading", with closer focus and more practical comparisons between the growing number of hardware choices.


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, last year's course notes are on the web:

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 both PCs with specific graphics cards and an SGI Octane. 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

Member of Technical Staff

Marc Olano is the technical lead and compiler architect for the OpenGL Shader project at SGI. Olano received his Ph.D. in computer science from the University of North Carolina in Chapel Hill 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. 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.

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 an NSF Information Technology Research Award on porting general scientific algorithms to the graphics accelerator. He has also worked with Evans & Sutherland on advanced shading techniques for consumer graphics cards, focusing on real-time procedural solid texturing. He received his MS (1989) and Ph.D. (1991) from the EVL at UIC, where he worked on rendering procedurally-generated fractal models on the AT&T Pixel Machine. He is currently writing chapters on procedural geometry and solid texturing for the third edition of Ebert's book "Modeling and Texturing: A Procedural Approach." He currently serves on the editorial board of ACM Transactions on Graphics, had 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


Bill Mark is employed by NVIDIA. Prior to that he was a research associate at the Stanford computer graphics laboratory, where he and his coworkers developed the Stanford real-time programmable shading system. He received his Ph.D. from the University of North Carolina at Chapel Hill in 1999. His dissertation was on post-rendering 3D warping -- the use of image-based rendering techniques to accelerate conventional rendering.

Ken Perlin

Associate Professor
Department of Computer Science

Ken Perlin is an Associate Professor in the Department of Computer Science and the director of the Media Research Laboratory at the Courant Institute of Mathematical Sciences of New York University. He is also the director of the NYU Center of Advanced Technology, sponsored by the New York State Science and Technology Foundation. He received his Ph.D. in Computer Science at the Courant Institute and his B.A. in Theoretical Mathematics at Harvard University. In 1991 he was a recipient of a Presidential Young Investigator Award. In 1997 he received a Technical Achievement Award from the Academy of Motion Picture Arts and Sciences for his noise and turbulence procedural texturing techniques, which are widely used in feature films and television.

Dr. Perlin was Head of Software Development at R/GREENBERG Associates in New York, NY from 1984 through 1987. Prior to that, from 1979 to 1984, he was the System Architect for computer generated animation at Mathematical Applications Group, Inc., Elmsford, NY. He has served on the Board of Directors of the New York chapter of ACM/SIGGRAPH.

Organizer Contact Information

Marc Olano
1600 Amphitheatre Pkwy, M/S 553
Mountain View, CA 94043
(w) 650-933-6647
(f) 650-932-6647

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