Texture shaders  provide a superset of conventional OpenGL texture addressing . They expose a number of operations that can be used to compute texture coordinates per-fragment rather than using simple interpolated per-vertex coordinates. The shader operations belong to four main categories: 1. Conventional Texture Access, these are the standard 1D, 2D, 3D texture access modes, furthermore cube map textures and rectangular textures are supported. 2. Dependent Texture Access, these modes use the result from a previous texture stage to affect the lookup of the current stages. Dependent 2D scaling and biasing is possible. 3. Dot Product Texture Access, these operations calculate a high precision (float) dot product from texture coordinates and a vector derived from the results of a previous shader stage. The resulting scalar value is used for accessing a texture. 4. Special Modes, these operations cull the current fragment or convert the texture coordinates directly to colors without accessing a texture. In order to support the various per-pixel math that must be done in the texture shaders, a number of new texture formats for encoding vectors are introduced. Most notably signed texture formats and 16 bit high precision formats.