ABSTRACT

Program objects in shading (Sh) contain records of sequences of operations on Sh types and a representation of Sh control constructs. They can be compiled to multiple compilation targets, combined with other program objects to create new program objects, applied to stream data, and loaded into graphics processing unit (GPU) shader units. Sh will have a rendering interface to specify geometry and initiate rendering passes without the user having to make low-level graphics API calls. Sh program objects support introspection, allowing host applications to inspect them in various ways. The shader algebra operators provide a functional language, and the nibbles are the basic functions from which other functions can be built. As soon as a program is bound, all of the textures and uniform parameters it accesses will be downloaded to the GPU. One might, however, want to change some uniform values or textures without rebinding the entire shader.