SIGGRAPH 2004 Course 1 Notes

Real-Time Shading

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


Marc Olano
Assistant Professor
Department of Computer Science and Electrical Engineering

Kurt Akeley
Graphics Architect

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

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:

Real-time procedural shading was once seen as a distant dream. When the first version of this course was offered four years ago, real-time shading was possible, but only with one-of-a-kind hardware or by combining the effects of tens to hundreds of rendering passes. Today, almost every new computer comes with graphics hardware capable of interactively executing shaders of thousands to 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 morning sessions cover the more advanced technical aspects of creating a shading system. The afternoon sessions cover practical details of real-time shading use, including an overview of recently developed algorithms that run well on today's shading hardware and presentations on the latest hardware developments from several leading hardware vendors. The course concludes with the popular panel-style question and answer session, where participants can ask questions of any presenter or suggest topics of discussion.


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.


Shading Technology
8:30 Introduction (Olano)
8:40 Ignoring Hardware Differences (Olano)
9:00 Shading Compilers (Olano)
9:35 3D Graphics Hardware Architectures (Akeley)
10:15 Break
Shading Languages
10:30 Shading Language Overview (McCool)
10:50 OpenGL Shading Language (Rost)
11:10 HLSL (Mitchell)
11:30 Shader Metaprogramming with Sh (McCool)
11:50 Sampling Procedural Shaders (Heidrich)
12:15 Lunch
Shading Techniques
1:45 Procedural Solid Texturing (Hart)
2:20 Hardware Shading Effects (Heidrich)
2:55 Using GPUs for Computation (Hart)
3:30 Break
Shading Systems
3:45 3DLabs (Rost)
4:10 ATI (Mitchell)
4:35 NVIDIA (Akeley)
5:00 Discussion and Q & A (All)


Chapter 1: Introduction (Marc Olano) 1 - 1
Chapter 2: Ignoring Hardware Differences (Marc Olano) 2 - 1
Chapter 3: Shading Compilers (Marc Olano)
Marc Olano and Anselmo Lastra, "A Shading Language on Graphics Hardware: The PixelFlow Shading System", Proceedings of SIGGRAPH 98 (Orlando, Florida, July 19-24, 1998). In Computer Graphics, Annual Conference Series, ACM SIGGRAPH, 1998.
Reprinted with permission
3 - 1
Marc Olano, Bob Kuehne and Maryann Simmons, "Automatic Shader Level of Detail", Proceedings of Graphics Hardware 2003, Copyright ©2003 The Eurographics Association
Reprinted with permission
3 - 11
Chapter 4: 3D Graphics Hardware Architecture (Kurt Akeley)
Bill Mark, "Real-Time Programmable Shading", Excerpt from Chapter 3 of Texturing and Modeling: A Procedural Approach, 3rd Edition, by David S. Ebert, F. Kenton Musgrave, Darwyn Peachey, Ken Perlin and Steven Worley, published by Morgan Kaufmann, Copyright ©2003 Elsevier Science (USA)
Reprinted with permission.
4 - 1
Chapter 5: Shading Language Overview (Michael McCool) 5 - 1
Chapter 6: OpenGL Shading Language (Randi Rost) 6 - 1
John Kessenich, "Features of the OpenGL Shading Language", 3DLabs Inc. Ltd., Copyright ©2003-2004 John Kessenich
Reprinted with permission.
Chapter 7: HLSL (Jason Mitchell)
Jason Mitchell, "DirectX® 9 High Level Shading Language" 7 - 1
Chapter 8: Shader Metaprogramming with Sh (Michael McCool) 8 - 1
Michael McCool, "A Short Introduction to Sh"
Chapter 9: Sampling Procedural Shaders (Wolfgang Heidrich) 9 - 1
Chapter 10: Procedural Solid Texturing (John Hart) 10 - 1
Nathan A. Carr and John C. Hart, "Meshed Atlases for Real-Time Procedural Solid Texturing", ACM Transactions on Graphics v21n2, April 2002.
Reprinted with permission.
Chapter 11: Hardware Shading Effects (Wolfgang Heidrich) 11 - 1
Chapter 12: Using GPUs for General Computation (John Hart)
Nathan A. Carr, Jessie D. Hall and John C. Hart, "The Ray Engine", Proceedings of Graphics Hardware 2002, Copyright ©2002 The Eurographics Association
Reprinted with permission
12 - 1
Nathan A. Carr, Jessie D. Hall and John C. Hart, "GPU Algorithms for Radiosity and Subsurface Scattering", Proceedings of Graphics Hardware 2003, Copyright ©2003 The Eurographics Association
Reprinted with permission
12 - 11
Chapter 13: 3DLabs Shading Hardware (Randi Rost) 13 - 1
"New Wildcat Realizm Graphics Technology", Copyright ©2004 3Dlabs
Reprinted with permission.
Chapter 14: ATI Shading Hardware (Jason Mitchell)
Jason L. Mitchell and Pedro V. Sander, "Applications of Explicit Early-Z Culling" 14 - 1
Chapter 15: NVIDIA Shading Hardware (Kurt Akeley) 16 - 1