<< Brown Games Group
I3D 2006
Abstract Shade Trees

Morgan McGuire, George Stathis (Harvard Extension School), Hanspeter Pfister (MERL), and Shriram Krishnamurthi (Brown)

[PDF] [Talk PPT] [Images] [Bibtex] [Movie [7 MB]] [Discussion]

Abstract. As GPU-powered special effects become more sophisticated, it becomes harder to create and manage effect interaction using the fairly primitive shading languages. This difficulty also introduces a workflow problem: artists design effects but only programmers can implement them, making it impossible for them to work asynchronously.

To address these problems we present abstract shade trees and heuristic algorithms that operate over them. The trees allow designers to easily create effects by connecting primitives such as cube mapping and modulation. These primitives publish semantically rich types that encapsulate notions like vector basis and normalization. The algorithms employ these published types to automatically infer atomic and compound connectors between the primitives, and generate code for the tree. We also describe a visual editing environment for specifying the trees.

Our data structure and algorithms spare designers from having to specify low-level programming details, enabling them to experiment without depending on programmers. The algorithms ensure that the generated code will be free of type-mismatches, a problem in previous shade trees. The abstract shade tree can also naturally express high-level features like shadows and reflections whose implementations overlap; that cross-cutting has made them difficult to modularize in more traditional ways.

In experiments, the generated shaders are as efficient as hand-written code.


Some images from this project


Here's interesting related work that occured since our paper was published, or that we didn't have space to review for I3D.
@inproceedings{mcguire2006shadetrees,
  author = {Morgan McGuire and George Stathis and Hanspeter Pfister and Shriram Krishnamurthi},
  title = {Abstract Shade Trees (preprint)},
  booktitle = {Symposium on Interactive 3D Graphics and Games},
  month = {March},
  year = {2006},
  location = {Redwood City, CA},
  url = {http://www.cs.brown.edu/research/graphics/games/AbstractShadeTrees/index.html},
}