SIGGRAPH 2002 Course 36 Notes

Real-Time Shading Languages

29 July 2002: Added slides for chapters 1, 5, 7 and 10.
3 January 2003: Added link to original proposal.

(Jump to table of contents)
(See the original proposal for this course)


Marc Olano

Member of Technical Staff

John C. Hart

Associate Professor
Department of Computer Science
University of Illinois, Urbana-Champaign

Wolfgang Heidrich

Assistant Professor
Department of Computer Science
The University of British Columbia

Bill Mark


Ken Perlin

Associate Professor
Department of Computer Science

Course Description:

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.


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.


  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)


Chapter 1:Introduction

Marc Olano 1 - 1

(Presentation slides)
Chapter 2:Noise Hardware

Ken Perlin 2 - 1
Chapter 3:Hardware Shading Effects

Wolfgang Heidrich 3 - 1
Chapter 4:In the beginning: The Pixel Stream Editor

Ken Perlin 4 - 1
Chapter 5:PixelFlow Shading

Jon Leech, "OpenGL Extensions and Restrictions for PixelFlow", Technical Report TR98-019, Department of Computer Science, University of North Carolina at Chapel Hill, 1997.
©1997 UNC, Chapel Hill. Included here by permission.
5 - 1

Marc Olano, "PixelFlow Shading Language" 5 - 41

Marc Olano, "Implementing PixelFlow Shading" 5 - 47

(Presentation slides)
Chapter 6:Procedural Solid Texturing

John C. Hart, Nate Carr, Masaki Kameya, Stephen A. Tibbitts, Terrance J. Coleman, "Antialiased Parameterized Solid Texturing Simplified for Consumer-Level Hardware Implementation", Proceedings of the 1999 Eurographics/SIGGRAPH Workshop on Graphics Hardware.
©1999 ACM, included here by permission.
6 - 1

Nathan A. Carr and John C. Hart, "Real-Time Procedural Solid Texturing" 6 - 11

John C. Hart, "Perlin Noise Pixel Shaders" 6 - 19
Chapter 7:Shading Through Multi-Pass Rendering

Mark S. Peercy, Marc Olano, John Airey, P. Jeffery Ungar, "Interactive Multi-Pass Programmable Shading", Proceedings of SIGGRAPH 2000 (New Orleans, Louisiana, July 23-28, 2000). In Computer Graphics, Annual Conference Series, ACM SIGGRAPH, 2000.
©1999 ACM, included here by permission.
7 - 1

Marc Olano and Bob Kuehne, "Level-of-Detail Shaders"
©2002 SGI, included here by permission.
7 - 9

Marc Olano, "Interactive Shading Language (ISL) Language Description", In OpenGL Shader 2.4 distribution, SGI, 2001.
©2002 SGI, included here by permission.
7 - 17

(Presentation slides)
Chapter 8:Complex Single and Multi-Pass Shading

Bill Mark, "Stanford Real-time Procedural Shading System" 8 - 1

Kekoa Proudfoot and Eric Chan, "Real-Time Shading Language v6" 8 - 8

Bill Mark and C. Philipp Schloter, "Shading System Immediate-Mode API v2.2" 8 - 36
Chapter 9:Sampling Procedural Shaders

Wolfgang Heidrich 9 - 1
Chapter 10:Multi-Pass RenderMan

Marc Olano 10 - 1

(Presentation slides)
Chapter 11:Analysis of Shading Pipelines

John C. Hart and Peter K. Doenges, "A Framework for Analyzing Real-Time Advanced Shading Techniques" 11 - 1
Chapter 12:Bibliography

A Collection of Useful References 12 - 1