ABSTRACT

Shading (Sh) has a strong separation between the frontend, which the user interfaces with directly, and its backends, which generate code for a particular graphics processing unit (GPU) or CPU. There are multiple OpenGL-related backends which share various subsystems. By default, Sh and the OpenGL backends will manage textures completely automatically, taking care of allocating texture units, uploading texture data. OpenGL defines a fairly large number of parameters corresponding to state, mostly originating from the older fixed-function model. Sh can be used to generate programs for the CPU. Sm is a software GPU simulator written at the University of Waterloo. It implements a software version of a programmable GPU pipeline based on a packet stream architecture. Sm has a C function call interface similar to OpenGL, but with more generic vertex attribute management. It supports assembly shader programs with a per-instruction function call interface.