SIGGRAPH 2002 Course 17 Notes

State of the Art in Hardware Shading

29 July 2002: Added pointers to supplemental material and slides for Chapter 3.
29 July 2002: Added slides for chapters 1 and 4.
7 August 2002: Notes update and slides for chapter 6.
9 August 2002: Reference to external material for chapter 7.
24 August 2002: Added slides for chapter 5.
3 January 2002: Added link to original proposal.

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


Marc Olano

Member of Technical Staff

Chas Boyd

DirectX Graphics
Microsoft Corp.

Bill Mark


Michael McCool

Associate Professor
University of Waterloo

Jason L. Mitchell

Project Team Leader
3D Application Research Group
ATI Research

Randi Rost

Senior Manager, Driver Development
3Dlabs, Inc.

Course Description:

In the past couple of years, simple programmable shading capabilities have appeared on a wide range of graphics hardware. This has sparked great interest across the spectrum of developers, from games to visualization, including several SIGGRAPH papers on using the new features. While the capabilities are similar, there are significant differences in the methods provided program the shading hardware and the interface with an application program. This course provides a practical comparison between hardware shading alternatives and shading APIs. Different platforms are compared using a series of common examples, with tutorial-level details and live demos on each platform.


This course assumes working knowledge of a modern real-time graphics API like OpenGL or DirectX. The participants are also assumed to be familiar with the concepts of procedural shading.


  1. Shading Hardware
    1. Introduction (Olano - 30 min)
      1. Why do we want real-time procedural shading?
      2. Shading hardware issues
      3. Overview of common examples for all presenters
        1. Shiny bump map
        2. McCool Homomorphic BRDF factorization
        3. Parameterized Wood
    2. NVIDIA (Bill Mark - 60 min)
      1. NVIDIA Shading overview
      2. Details on implementing each of the common examples
      3. NVIDIA specific examples
      4. Demos
    3. ATI (Jason L. Mitchell - 60 min)
      1. ATI Shading overview (15 min)

      2. Details on implementing each of the common examples
      3. ATI specific examples
      4. Demos
    4. SGI (Marc Olano - 60 min)
      1. SGI OpenGL Shader overview
      2. Shading as a library above the API
      3. Details on implementing each of the common examples
      4. SGI OpenGL Shader specific examples
      5. Demos

  2. APIs
    1. DirectX (Chas Boyd - 60 min)
      1. How shading fits into DirectX
      2. Details on implementing each of the common examples
      3. DirectX specific examples
      4. Demos
    2. OpenGL 2.0 (Randi Rost - 60 min)
      1. How shading fits into OpenGL 2.0
      2. Details implementing on each of the common examples
      3. OpenGL 2.0 specific examples

      4. Demos (15 min)
    3. API design issues (McCool - 60 min)
      1. SMASH: A conceptual design for future programmable graphics accelerators
      2. Flexible parameter binding mechanism
      3. Virtual stack machine shader execution conceptual model
      4. Use of metaprogramming techniques in host language
  3. Panel-style Q&A (All - 30 min)


Chapter 1:Introduction

Marc Olano 1 - 1

(Presentation slides)
Chapter 2:NVIDIA

Bill Mark, pointer to more recent material 2 - 1

Mark Kilgard, NV_vertex_program OpenGL Extension Specification 2 - 1
Chapter 3:ATI

Jason L. Mitchell 3 - 1

(Notes supplement)

(Presentation slides)
Chapter 4:SGI

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.
4 - 1

Marc Olano 4 - 9

(Presentation slides)
Chapter 5:DirectX

Chas Boyd, "Hardware Shading with Direct3D" 5 - 1

Philip Taylor, "Per-Pixel Lighting" 5 - 1

(Presentation slides)
Chapter 6:OpenGL 2.0

Randi Rost 6 - 1

(Presentation slides)

Page on this material at 3Dlabs.
Chapter 7:API Design

Michael McCool, Qin Zheng and Tiberiu Popa, "SMASH Metaprogramming Shader API" 7 - 1

Page on this material at the University of Waterloo.