State of the Art in Hardware Shading

Organizer: Marc Olano
Full day
Regular session

Summary: Hardware supporting basic procedural shading is no longer just a reality, but is increasingly common. This course brings together representatives of most of the current players in this young field to give a practical comparison of their latest hardware products and application interfaces.

Expanded statement: 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.
Prerequisites: 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.

Course topics: Participants will see practical comparisons of procedural shading interfaces and capabilities of most current hardware. Topics include rendering hardware, procedural shading extensions, multi-pass rendering, and new graphics APIs.



  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. 3D Marble
        2. Shiny bump map
        3. McCool BRDF
    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. 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
    2. 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 (15 min)
    3. 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
  3. Panel-style Q&A (All - 30 min)

Suggestions for Shorter Presentation

This course could be cut to half a day by shortening the introduction and Q&A to 15 minutes and all other segments to 30 minutes. The shortened form would still fit the 1.75 hour modular format. In the reduced format, we would no longer have time to do the same detailed comparisons currently planed. In that case, the expanded statement would need to be modified to say "common example" instead of "common examples" and to remove the mention of "Tutorial-level details".


This course is a spin-off of the Real-Time Shading course, offered last year and the year before (under the name "Approaches for Hardware Accelerated Shading"). The Real-Time Shading course was popular, with good attendance throughout the day both times it was offered. In the time since the last offering, there have been several new developments in shading hardware, an area the previous course was already neglecting in favor of greater coverage for shading languages. This year, we are proposing two independent but complementary courses. The original course is focusing exclusively on using shading languages for real-time rendering, while this course focuses on solid, usable details of current lower-level hardware capabilities, and practical comparisons between the growing number of hardware and API choices.


The course notes will include copies of presentation slides, reprints of hard-to-find white papers and documentation, and some new material developed specifically for the course. For reference, last year's course notes for the original Real-Time Shading Course are on the web: In particular, material from chapters 6, 7 and 13 of last years notes are representative of the notes for this course.

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.

Chas Boyd

DirectX Graphics
Microsoft Corp.

Chas has been a program manager on DirectX Graphics since 1996. His primary responsibility has been the design of the Direct3D APIs from DirectX5 and onward by extracting requirements from graphics software developers (primarily in games) and coordinating them with the capabilities of PC hardware vendors. Before joining Microsoft, he has been lead developer for 3D visualization applications ranging from transonic wing design, CFD of launch vehicles, satellite constellation simulation, and geo-seismic interpretation. He graduated from Purdue in 1984.

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.

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 driver development group of 3Dlabs, Inc. (formerly Dynamic Pictures) since October '97. This group is currently driving the definintion 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
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:42 $