Taxonomy of Texture Types

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

FamilyParameterizationview dependent
environment map techniques latitude-longitude mapping no
sphere mapping yes
paraboloid mapping no
cubic mapping no

diffuse surface

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.

specular surface

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.

emissive surface

An emissive surface texture indicates which part of the texture is emitting light, or glowing, independent of any light sources on the object.

reflective surface

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.

opacity surface

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.

surface detail allocation

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.)

shadowed diffuse light distribution

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.

specular light distribution

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.

fog distribution

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.

reflective environment map

A reflective environment map is a "straight" environment map, encoding the environment as seen by a camera.

specular environment map

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.

emissive environment map

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.

surface bump map

A surface bump map or displacement map measures the height of the "ideal" surface above/below the actual surface at each point.

surface perturbation

A surface perturbation map measures the partial slopes of the normal at each point on the surface.

surface normal

A surface normal map represents all 3 dimensions of the normal at each point on the surface.

shadow depth map

A shadow depth map stores the distance from a light to the first occluder at each texel for a given light location and facing.

nailboard impostor

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.

spotlight attenuation

A spotlight attenuation map stores the degree to which light transmitted in a particular direction is attenuated for a given light source.

1D lookup table

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.

2D lookup table

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.

3D lookup table

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.