Title
Shader algebra
Abstract
An algebra consists of a set of objects and a set of operators that act on those objects. We treat shader programs as first-class objects and define two operators: connection and combination. Connection is functional composition: the outputs of one shader are fed into the inputs of another. Combination concatenates the input channels, output channels, and computations of two shaders. Similar operators can be used to manipulate streams and apply computational kernels expressed as shaders to streams. Connecting a shader program to a stream applies that program to all elements of the stream; combining streams concatenates the record definitions of those streams.In conjunction with an optimizing compiler, these operators can manipulate shader programs in many useful ways, including specialization, without modifying the original source code. We demonstrate these operators in Sh, a metaprogramming shading language embedded in C++.
Year
DOI
Venue
2004
10.1145/1186562.1015801
ACM Trans. Graph.
Keywords
DocType
Volume
metaprogramming shading language,optimizing compiler,input channel,functional composition,original source code,Shader algebra,shader programming,record definition,computational kernel,first-class object,graphics hardware,real-time rendering,output channel,shader program
Journal
23
Issue
ISSN
Citations 
3
0730-0301
37
PageRank 
References 
Authors
6.24
28
5
Name
Order
Citations
PageRank
Michael McCool110012.93
Stefanus Du Toit2737.97
Tiberiu Popa347332.74
Bryan Chan411710.59
Kevin Moule5859.59