The following is a breakdown of "kinds of textures" that get used in computer graphics rendering operations, including a few that have never (to my knowledge) been used, and in some cases just representative examples. This taxonomy derives from the paper accompanying my talk at the 1999 GDC HardCore seminar.
Key:
Each type is linked to a short description below.
| family | popular name | texture map type | parameterization | value | view-dependent |
| surface texture | texture map | diffuse surface | surface space (can wrap) | RGB | no |
| gloss map | specular surface | RGB | |||
| glow map | emissive surface | RGB | |||
| reflective surface | RGB | ||||
| opacity surface | a | ||||
| surface detail allocation | a | ||||
| spatial distribution texture | light map | shadowed diffuse light distribution | surface (one-to-one mapping) | RGB | no |
| specular light distribution | RGB | yes | |||
| fog distribution | aRGB | yes | |||
| environment map applications | environment map | reflective environment | vector directional (see below) | RGB | maybe, see below |
| specular environment | RGB | ||||
| diffuse environment | RGB | ||||
| emissive environment | RGB | ||||
| surface bump map | bump map | surface space | h | no | |
| surface perturbation | ¶h/¶s ¶h/¶t | no | |||
| depth map | shadow depth map | projected directional | depth | no, regenerate for dynamic shadows | |
| "nailboard" impostor | "surface" space | depth & RGBa | yes | ||
| dynamic effects | spotlight attenuation (slide projector) | projected directional | I or RGB | no | |
| shadow texture | projected directional | a | no, regenerate for dynamic shadows | ||
| canonical diffuse "light map" | warped spatial distribution | I or RGB | no | ||
| 1D lookup table | exponential fog | distance | a | no | |
| 2D lookup table | extended fatt | projected directional | I | no | |
| 3d lookup table | 3D fatt | spatial | I | no |
| Family | Parameterization | view dependent |
| environment map techniques | latitude-longitude mapping | no |
| sphere mapping | yes | |
| paraboloid mapping | no | |
| cubic mapping | no |
A traditional texture with the "albedo" of the surface--its diffuse lighting response, normally modulated with the color of impinging light via a Lambertian rule. It is mapped onto the surface arbitrarily and can repeat. Normally multiple surface textures use the same mapping so that features align consistently.
A detail texture is typically a surface texture at a different scale.
A texture indicating the specular responsiveness of a given surface; possibly a single channel just to indicate overall "reflectiveness", but possibly colored to allow for metallic surfaces.
Using separate diffuse and specular surface textures allows making objects that are glossy in one place and matte in others, determined in texture space on a single rendered primitive.
An emissive surface texture indicates which part of the texture is emitting light, or glowing, independent of any light sources on the object.
A reflective surface texture indicates which parts of the surface have a mirror-like reflection in them; this allows a mirror-like finish, as opposed to the specular surface texture which has a "dull" shininess.
An opacity surface texture indicates where a surface is partially transparent. This may be stored in one of the other surface textures, or even in all of them, to correct pixel contributions correctly.
A surface detail allocation texture is parameterized in surface space the same as other surface textures, and modulates a detail texture, allowing parts of a surface to show rough detail and parts of the surface to be unaffected. For example, you might make a surface which is purely reflective in places using a reflective surface texture, and disable detail effects in that area using a detail allocation texture. (Of course, you might just order the passes such that this is unnecessary.)
This is a "light map" which stores the lighting falling on a given surface. It is the sum of all lights, and accounts for shadows from that light, and is direction-independent and hence only accounts for diffuse lighting contributions. It must be parameterized one-to-one, so every point on the surface maps to a unique location on the distribution texture, as opposed to wrapping.
Modulating the diffuse surface texture by the shadowed diffuse light distribution texture produces a diffuse-lit, shadowed surface.
A specular light distribution texture stores the specular light reflected from a particular surface for a particular camera direction. Because it is view-dependent it needs to be computed every frame.
A fog distribution texture represents the degree to which a given point on the surface is fogged from a given camera viewpoint. Because it is view-dependent it needs to be computed every frame.
A reflective environment map is a "straight" environment map, encoding the environment as seen by a camera.
A specular environment map is a reflective environment map which has been integrated such that sampling the map represents the specular light transmission for a reflection vector in that direction, independent of surface reflectivity. Modulating a specular environment map with a specular surface texture produces correct specular lighting of a surface.
A diffuse environment map is an environment map which has been integrated such that sampling the map represents the diffuse light transmitted towards in that direction, independent of surface diffuse response.
A surface bump map or displacement map measures the height of the "ideal" surface above/below the actual surface at each point.
A surface perturbation map measures the partial slopes of the normal at each point on the surface.
A surface normal map represents all 3 dimensions of the normal at each point on the surface.
A shadow depth map stores the distance from a light to the first occluder at each texel for a given light location and facing.
A nailboard encodes a depth per texel which can be used to offset the depth values for a sprite so as to produce correct zbuffer depths.
A spotlight attenuation map stores the degree to which light transmitted in a particular direction is attenuated for a given light source.
There are many applications of textures as 1D lookup-tables; an example is to take a distance and map it into a fog factor; the lookup-table can encode the exponential falloff.
There are many applications of textures as 2D lookup-tables; for example one can use them to encode an approximation to the depth attenuation for a light, using a separable transformation to capture the third dimension.
There are many applications of textures as 3D lookup-tables; for example, you can use a 3D texture to measure the distance of a surface point from some other fixed point, or to compute the reciprocal distance as is necessary for light attenuation due to distance.