This SIGGRAPH 2004 paper by McCool et al. describes a “Shader Algebra”, Sh’s system for manipulating shaders (functional composition, specialization, etc.) and doing stream programming. Sh has recently added operators to combine shaders and to apply shaders to streams. Sh now also manages buffers, enabling more convenient general-purpose stream processing. Stream processing is supported on both the GPU and on the CPU (using just-in-time compilation in both cases). The operators, in conjunction with the optimizer, glue shaders, and special “manipulator” support functions, can support a variety of useful operations including shader specialization, redundancy elimination, and I/O adaptation. (Shader Algebra preprint and talk preview.)