
Texture mapping is a method for mapping a texture on a
computer-generated graphic. Texture here can be high frequency
detail,
surface texture, or
color
Color (American English) or colour (British English) is the visual perceptual property deriving from the spectrum of light interacting with the photoreceptor cells of the eyes. Color categories and physical specifications of color are assoc ...
.
History
The original technique was pioneered by
Edwin Catmull in 1974.
Texture mapping originally referred to diffuse mapping, a method that simply mapped
pixel
In digital imaging, a pixel (abbreviated px), pel, or picture element is the smallest addressable element in a raster image, or the smallest point in an all points addressable display device.
In most digital display devices, pixels are the s ...
s from a texture to a
3D surface ("wrapping" the image around the object). In recent decades, the advent of multi-pass rendering,
multitexturing,
mipmaps, and more complex mappings such as
height mapping,
bump mapping,
normal mapping,
displacement mapping,
reflection mapping,
specular mapping,
occlusion mapping, and many other variations on the technique (controlled by a
materials system) have made it possible to simulate near-
photorealism
Photorealism is a genre of art that encompasses painting, drawing and other graphic media, in which an artist studies a photograph and then attempts to reproduce the image as realistically as possible in another Medium (arts), medium. Although ...
in
real time by vastly reducing the number of
polygon
In geometry, a polygon () is a plane figure that is described by a finite number of straight line segments connected to form a closed '' polygonal chain'' (or ''polygonal circuit''). The bounded plane region, the bounding circuit, or the two t ...
s and lighting calculations needed to construct a realistic and functional 3D scene.
Texture maps
A is an image applied (mapped) to the surface of a shape or
polygon
In geometry, a polygon () is a plane figure that is described by a finite number of straight line segments connected to form a closed '' polygonal chain'' (or ''polygonal circuit''). The bounded plane region, the bounding circuit, or the two t ...
. This may be a
bitmap image or a
procedural texture. They may be stored in common
image file formats
An Image file format is a file format for a digital image. There are many formats that can be used, such as JPEG, PNG, and GIF. Most formats up until 2022 were for storing 2D images, not 3D ones. The data stored in an image file format may b ...
, referenced by
3d model formats or
material definitions, and assembled into
resource bundles.
They may have 1-3 dimensions, although 2 dimensions are most common for visible surfaces. For use with modern hardware, texture map data may be stored in
swizzled or tiled orderings to improve
cache coherency.
Rendering APIs typically manage texture map resources (which may be located in
device memory
This glossary of computer hardware terms is a list of definitions of terms and concepts related to computer hardware, i.e. the physical and structural components of computers, architectural issues, and peripheral devices.
A
...
) as buffers or surfaces, and may allow '
render to texture' for additional effects such as post processing or
environment mapping.
They usually contain
RGB color data (either stored as
direct color,
compressed formats, or
indexed color), and sometimes an additional channel for
alpha blending (
RGBA) especially for
billboards and ''decal'' overlay textures. It is possible to use the
alpha channel (which may be convenient to store in formats parsed by hardware) for other uses such as
specularity.
Multiple texture maps (or
channels) may be combined for control over
specularity,
normals,
displacement, or
subsurface scattering e.g. for skin rendering.
Multiple texture images may be combined in
texture atlases or
array textures to reduce state changes for modern hardware. (They may be considered a modern evolution of
tile map graphics). Modern hardware often supports
cube map textures with multiple faces for environment mapping.
Creation
Texture maps may be acquired by
scanning/
digital photography
Digital photography uses cameras containing arrays of electronic photodetectors interfaced to an analog-to-digital converter (ADC) to produce images focused by a lens, as opposed to an exposure on photographic film. The digitized image i ...
, designed in
image manipulation software such as
GIMP
GIMP ( ; GNU Image Manipulation Program) is a free and open-source raster graphics editor used for image manipulation (retouching) and image editing, free-form drawing, transcoding between different image file formats, and more specialized ...
,
Photoshop
Adobe Photoshop is a raster graphics editor developed and published by Adobe Inc. for Windows and macOS. It was originally created in 1988 by Thomas and John Knoll. Since then, the software has become the industry standard not only in ras ...
, or painted onto 3D surfaces directly in a
3D paint tool
This is a glossary of terms relating to computer graphics.
For more general computer hardware terms, see glossary of computer hardware terms.
0–9
A
B
...
such as
Mudbox or
zbrush.
Texture application
This process is akin to applying patterned paper to a plain white box. Every vertex in a polygon is assigned a
texture coordinate
A vertex (plural vertices) in computer graphics is a data structure that describes certain attributes, like the position of a point in 2D or 3D space, or multiple points on a surface.
Application to 3D models
3D models are most often represente ...
(which in the 2d case is also known as
UV coordinates).
This may be done through explicit assignment of
vertex attributes, manually edited in a 3D modelling package through
UV unwrapping tools
UV mapping is the 3D modeling process of projecting a 3D model's surface to a 2D image for texture mapping. The letters "U" and "V" denote the axes of the 2D texture because "X", "Y", and "Z" are already used to denote the axes of the 3D object i ...
. It is also possible to associate a procedural transformation from 3d space to texture space with the
material
Material is a substance or mixture of substances that constitutes an object. Materials can be pure or impure, living or non-living matter. Materials can be classified on the basis of their physical and chemical properties, or on their geolo ...
. This might be accomplished via
planar projection
Planar projections are the subset of 3D graphical projections constructed by linearly mapping points in three-dimensional space to points on a two-dimensional projection plane. The projected point on the plane is chosen such that it is colline ...
or, alternatively,
cylindrical or
spherical mapping. More complex mappings may consider the distance along a surface to minimize distortion.
These coordinates are interpolated across the faces of polygons to sample the texture map during rendering.
Textures may be repeated or mirrored to extend a finite rectangular bitmap over a larger area, or they may have a one-to-one unique "
injective" mapping from every piece of a surface (which is important for
render mapping and
light mapping
A lightmap is a data structure used in lightmapping, a form of surface caching in which the brightness of surfaces in a virtual scene is pre-calculated and stored in texture maps for later use. Lightmaps are most commonly applied to static o ...
, also known as
baking
Baking is a method of preparing food that uses dry heat, typically in an oven, but can also be done in hot ashes, or on hot stones. The most common baked item is bread but many other types of foods can be baked. Heat is gradually transferre ...
).
Texture space
Texture mapping maps the model surface (or
screen space during rasterization) into texture space; in this space, the texture map is visible in its undistorted form.
UV unwrapping
UV mapping is the 3D modeling process of projecting a 3D model's surface to a 2D image for texture mapping. The letters "U" and "V" denote the axes of the 2D texture because "X", "Y", and "Z" are already used to denote the axes of the 3D object i ...
tools typically provide a view in texture space for manual editing of texture coordinates. Some rendering techniques such as
subsurface scattering may be performed approximately by texture-space operations.
Multitexturing
Multitexturing is the use of more than one texture at a time on a polygon. For instance, a
light map
A lightmap is a data structure used in lightmapping, a form of surface caching in which the brightness of surfaces in a virtual scene is pre-calculated and stored in texture maps for later use. Lightmaps are most commonly applied to static ...
texture may be used to light a surface as an alternative to recalculating that lighting every time the surface is rendered. Microtextures or detail textures are used to add higher frequency details, and dirt maps may add weathering and variation; this can greatly reduce the apparent periodicity of repeating textures. Modern graphics may use more than 10 layers, which are combined using
shaders
In computer graphics, a shader is a computer program that calculates the appropriate levels of light, darkness, and color during the rendering of a 3D scene - a process known as ''shading''. Shaders have evolved to perform a variety of speci ...
, for greater fidelity. Another multitexture technique is
bump mapping, which allows a texture to directly control the facing direction of a surface for the purposes of its lighting calculations; it can give a very good appearance of a complex surface (such as tree bark or rough concrete) that takes on lighting detail in addition to the usual detailed coloring. Bump mapping has become popular in recent video games, as graphics hardware has become powerful enough to accommodate it in real-time.
Texture filtering
The way that samples (e.g. when viewed as
pixel
In digital imaging, a pixel (abbreviated px), pel, or picture element is the smallest addressable element in a raster image, or the smallest point in an all points addressable display device.
In most digital display devices, pixels are the s ...
s on the screen) are calculated from the
texel
Texel (; Texels dialect: ) is a municipality and an island with a population of 13,643 in North Holland, Netherlands. It is the largest and most populated island of the West Frisian Islands in the Wadden Sea. The island is situated north of ...
s (texture pixels) is governed by
texture filtering. The cheapest method is to use the
nearest-neighbour interpolation, but
bilinear interpolation or
trilinear interpolation between
mipmaps are two commonly used alternatives which reduce
aliasing
In signal processing and related disciplines, aliasing is an effect that causes different signals to become indistinguishable (or ''aliases'' of one another) when sampled. It also often refers to the distortion or artifact that results when ...
or
jaggies. In the event of a texture coordinate being outside the texture, it is either
clamped or
wrapped.
Anisotropic filtering better eliminates directional artefacts when viewing textures from oblique viewing angles.
Texture streaming
Texture streaming is a means of using
data streams for textures, where each texture is available in two or more different resolutions, as to determine which texture should be loaded into memory and used based on draw distance from the viewer and how much memory is available for textures. Texture streaming allows for rendering engine to use low resolution textures for objects far away from the viewer's camera, and resolve those into more detailed textures, read from a data source, as the point of view nears the objects.
Baking
As an optimization, it is possible to render detail from a complex, high-resolution model or expensive process (such as
global illumination) into a surface texture (possibly on a low-resolution model). ''Baking'' is also known as render mapping. This technique is most commonly used for
light maps, but may also be used to generate
normal maps
In 3D computer graphics, normal mapping, or Dot3 bump mapping, is a texture mapping technique used for faking the lighting of bumps and dents – an implementation of bump mapping. It is used to add details without using more polygons. A common u ...
and
displacement maps. Some computer games (e.g.
Messiah
In Abrahamic religions, a messiah or messias (; ,
; ,
; ) is a saviour or liberator of a group of people. The concepts of '' mashiach'', messianism, and of a Messianic Age originated in Judaism, and in the Hebrew Bible, in which a ''mashiach ...
) have used this technique. The original
Quake software engine used on-the-fly baking to combine light maps and colour maps ("
surface caching
The ''Quake'' engine is the game engine developed by id Software to power their 1996 video game '' Quake''. It featured true 3D real-time rendering and is now licensed under the terms of GNU General Public License v2.0 or later.
After releas ...
").
Baking can be used as a form of
level of detail generation, where a complex scene with many different elements and materials may be approximated by a ''single'' element with a ''single'' texture, which is then algorithmically reduced for lower rendering cost and fewer
drawcalls. It is also used to take high-detail models from
3D sculpting software
Digital sculpting, also known as sculpt modeling or 3D sculpting, is the use of software that offers tools to push, pull, smooth, grab, pinch or otherwise manipulate a digital object as if it were made of a real-life substance such as clay.
Sculp ...
and
point cloud scanning and approximate them with
meshes more suitable for realtime rendering.
Rasterisation algorithms
Various techniques have evolved in software and hardware implementations. Each offers different trade-offs in precision, versatility and performance.
Forward texture mapping
Some hardware systems e.g.
Sega Saturn
The is a home video game console developed by Sega and released on November 22, 1994, in Japan, May 11, 1995, in North America, and July 8, 1995, in Europe. Part of the fifth generation of video game consoles, it was the successor to the succ ...
and the
NV1 traverse texture coordinates directly, interpolating the projected position in screen space through texture space and splatting the texels into a
frame buffer. (in the case of the NV1, quadratic interpolation was used allowing curved rendering).
Sega provided tools for
baking
Baking is a method of preparing food that uses dry heat, typically in an oven, but can also be done in hot ashes, or on hot stones. The most common baked item is bread but many other types of foods can be baked. Heat is gradually transferre ...
suitable per-quad texture tiles from UV mapped models.
This has the advantage that texture maps are read in a simple linear fashion.
Forward texture mapping may also sometimes produce more natural looking results than affine texture mapping if the
primitives are aligned with prominent texture directions (e.g. road markings or layers of bricks). This provides a limited form of perspective correction. However, perspective distortion is still visible for primitives near the camera (e.g. the Saturn port of ''
Sega Rally'' exhibited texture-squashing artifacts as nearby polygons were
near clipped without UV coordinates).
This technique is not used in modern hardware because
UV coordinates have proved more versatile for modelling and more consistent for
clipping.
Inverse texture mapping
Most approaches use inverse texture mapping, which traverses the
rendering primitives in screen space whilst interpolating texture coordinates for sampling. This interpolation may be ''affine'' or ''perspective correct''. One advantage is that each output pixel is guaranteed to only be traversed once; generally the source texture map data is stored in some lower bit-depth or compressed form whilst the frame buffer uses a higher bit-depth. Another is greater versatility for
UV mapping. A
texture cache becomes important for buffering reads, since the
memory access pattern in
texture space is more complex.
Affine texture mapping

Affine texture mapping linearly interpolates texture coordinates across a surface, and so is the fastest form of texture mapping. Some software and hardware (such as the original
PlayStation)
project
A project is any undertaking, carried out individually or collaboratively and possibly involving research or design, that is carefully planned to achieve a particular goal.
An alternative view sees a project managerially as a sequence of even ...
vertices in 3D space onto the screen during rendering and
linearly interpolate the texture coordinates ''in screen space'' between them ("inverse texture mapping"). This may be done by incrementing
fixed point UV coordinates, or by an
incremental error algorithm akin to
Bresenham's line algorithm.
In contrast to perpendicular polygons, this leads to noticeable distortion with perspective transformations (see figure: the checker box texture appears bent), especially as primitives near the
camera
A camera is an optical instrument that can capture an image. Most cameras can capture 2D images, with some more advanced models being able to capture 3D images. At a basic level, most cameras consist of sealed boxes (the camera body), with a ...
. Such distortion may be reduced with the subdivision of the polygon into smaller ones.
Perspective correctness
Perspective correct texturing accounts for the vertices' positions in 3D space, rather than simply interpolating coordinates in 2D screen space.
This achieves the correct visual effect but it is more expensive to calculate.
To perform perspective correction of the texture coordinates
and
, with
being the depth component from the viewer's point of view, we can take advantage of the fact that the values
,
, and
are linear in screen space across the surface being textured. In contrast, the original
,
and
, before the division, are not linear across the surface in screen space. We can therefore linearly interpolate these reciprocals across the surface, computing corrected values at each pixel, to result in a perspective correct texture mapping.
To do this, we first calculate the reciprocals at each vertex of our geometry (3 points for a triangle). For vertex
we have
. Then, we linearly interpolate these reciprocals between the
vertices (e.g., using
Barycentric Coordinates), resulting in interpolated values across the surface. At a given point, this yields the interpolated
, and
. Note that this
cannot be yet used as our texture coordinates as our division by
altered their coordinate system.
To correct back to the
space we first calculate the corrected
by again taking the reciprocal
. Then we use this to correct our
:
and
.
This correction makes it so that in parts of the polygon that are closer to the viewer the difference from pixel to pixel between texture coordinates is smaller (stretching the texture wider) and in parts that are farther away this difference is larger (compressing the texture).
:Affine texture mapping directly interpolates a texture coordinate
between two endpoints
and
:
::
where
:Perspective correct mapping interpolates after dividing by depth
, then uses its interpolated reciprocal to recover the correct coordinate:
::
3D graphics hardware typically supports perspective correct texturing.
Various techniques have evolved for rendering texture mapped geometry into images with different quality/precision tradeoffs, which can be applied to both software and hardware.
Classic software texture mappers generally did only simple mapping with at most one lighting effect (typically applied through a
lookup table
In computer science, a lookup table (LUT) is an array that replaces runtime computation with a simpler array indexing operation. The process is termed as "direct addressing" and LUTs differ from hash tables in a way that, to retrieve a value v w ...
), and the perspective correctness was about 16 times more expensive.
Restricted camera rotation
The ''
Doom engine
id Tech 1, also known as the ''Doom'' engine, is the game engine that powers the id Software games '' Doom'' and '' Doom II: Hell on Earth''. It is also used in '' Heretic'', '' Hexen: Beyond Heretic'', '' Strife: Quest for the Sigil'', '' Hacx ...
'' restricted the world to vertical walls and horizontal floors/ceilings, with a camera that could only rotate about the vertical axis. This meant the walls would be a constant depth coordinate along a vertical line and the floors/ceilings would have a constant depth along a horizontal line. A fast affine mapping could be used along those lines because it would be correct. Some later renderers of this era simulated a small amount of camera
pitch with
shearing which allowed the appearance of greater freedom whilst using the same rendering technique.
Some engines were able to render texture mapped
Heightmaps (e.g.
Nova Logic's
Voxel Space, and the engine for
Outcast) via
Bresenham-like incremental algorithms, producing the appearance of a texture mapped landscape without the use of traditional geometric primitives.
Subdivision for perspective correction
Every triangle can be further subdivided into groups of about 16 pixels in order to achieve two goals. First, keeping the arithmetic mill busy at all times. Second, producing faster arithmetic results.
World space subdivision
For perspective texture mapping without hardware support, a triangle is broken down into smaller triangles for rendering and affine mapping is used on them. The reason this technique works is that the distortion of affine mapping becomes much less noticeable on smaller polygons. The
Sony PlayStation
is a video gaming brand that consists of five home video game consoles, two handhelds, a media center, and a smartphone, as well as an online service and multiple magazines. The brand is produced by Sony Interactive Entertainment, a divi ...
made extensive use of this because it only supported affine mapping in hardware but had a relatively high triangle throughput compared to its peers.
Screen space subdivision
Software renderers generally preferred screen subdivision because it has less overhead. Additionally, they try to do linear interpolation along a line of pixels to simplify the set-up (compared to 2d affine interpolation) and thus again the overhead (also affine texture-mapping does not fit into the low number of registers of the
x86 CPU; the
68000
The Motorola 68000 (sometimes shortened to Motorola 68k or m68k and usually pronounced "sixty-eight-thousand") is a 16/32-bit complex instruction set computer (CISC) microprocessor, introduced in 1979 by Motorola Semiconductor Products Secto ...
or any
RISC
In computer engineering, a reduced instruction set computer (RISC) is a computer designed to simplify the individual instructions given to the computer to accomplish tasks. Compared to the instructions given to a complex instruction set compu ...
is much more suited).
A different approach was taken for ''
Quake'', which would calculate perspective correct coordinates only once every 16 pixels of a scanline and linearly interpolate between them, effectively running at the speed of linear interpolation because the perspective correct calculation runs in parallel on the co-processor. The polygons are rendered independently, hence it may be possible to switch between spans and columns or diagonal directions depending on the orientation of the
polygon normal to achieve a more constant z but the effort seems not to be worth it.
Other techniques
Another technique was approximating the perspective with a faster calculation, such as a polynomial. Still another technique uses 1/z value of the last two drawn pixels to linearly extrapolate the next value. The division is then done starting from those values so that only a small remainder has to be divided but the amount of bookkeeping makes this method too slow on most systems.
Finally,
the Build engine extended the constant distance trick used for Doom by finding the line of constant distance for arbitrary polygons and rendering along it.
Hardware implementations
Texture mapping hardware was originally developed for simulation (e.g. as implemented in the
Evans and Sutherland ESIG image generators), and professional
graphics workstations such as
Silicon Graphics, broadcast
digital video effects machines such as the
Ampex ADO
Ampex is an American electronics company founded in 1944 by Alexander M. Poniatoff as a spin-off of Dalmo-Victor. The name AMPEX is a portmanteau, created by its founder, which stands for Alexander M. Poniatoff Excellence.AbramsoThe History ...
and later appeared in
Arcade cabinets, consumer
video game console
A video game console is an electronic device that outputs a video signal or image to display a video game that can be played with a game controller. These may be home consoles, which are generally placed in a permanent location connected to ...
s, and PC
video card
A graphics card (also called a video card, display card, graphics adapter, VGA card/VGA, video adapter, display adapter, or mistakenly GPU) is an expansion card which generates a feed of output images to a display device, such as a computer mo ...
s in the mid 1990s. In
flight simulation, texture mapping provided important motion cues.
Modern
graphics processing unit
A graphics processing unit (GPU) is a specialized electronic circuit designed to manipulate and alter memory to accelerate the creation of images in a frame buffer intended for output to a display device. GPUs are used in embedded systems, mo ...
s (GPUs) provide specialised
fixed function unit
This is a glossary of terms relating to computer graphics.
For more general computer hardware terms, see glossary of computer hardware terms.
0–9
A
B
...
s called ''texture samplers'', or
''texture mapping units'', to perform texture mapping, usually with
trilinear filtering or better multi-tap
anisotropic filtering and hardware for decoding specific formats such as
DXTn S3 Texture Compression (S3TC) (sometimes also called DXTn, DXTC, or BCn) is a group of related lossy texture compression algorithms originally developed by Iourcha et al. of S3 Graphics, Ltd. for use in their Savage 3D computer graphics accele ...
. As of 2016, texture mapping hardware is ubiquitous as most
SOCs contain a suitable GPU.
Some hardware combines texture mapping with
hidden-surface determination in
tile based deferred rendering or
scanline rendering; such systems only fetch the visible
texels
In Computer graphics, computer graphics, a texel, texture element, or texture pixel is the fundamental unit of a texture maps, texture map. Textures are represented by Array data structure, arrays of texels representing the texture space, just a ...
at the expense of using greater workspace for transformed vertices. Most systems have settled on the
Z-buffering approach, which can still reduce the texture mapping workload with front-to-back
sorting.
Applications
Beyond 3D rendering, the availability of texture mapping hardware has inspired its use for accelerating other tasks:
Tomography
It is possible to use texture mapping hardware to accelerate both the
reconstruction of
voxel data sets from
tomographic scans, and to
visualize the results
User interfaces
Many user interfaces use texture mapping to accelerate animated transitions of screen elements, e.g.
Exposé in
Mac OS X
macOS (; previously OS X and originally Mac OS X) is a Unix operating system developed and marketed by Apple Inc. since 2001. It is the primary operating system for Apple's Mac computers. Within the market of desktop and lapt ...
.
See also
*
2.5D
2.5D (two-and-a-half dimensional) perspective refers to gameplay or movement in a video game or virtual reality environment that is restricted to a two-dimensional (2D) plane with little to no access to a third dimension in a space that otherwis ...
*
3D computer graphics
3D computer graphics, or “3D graphics,” sometimes called CGI, 3D-CGI or three-dimensional computer graphics are graphics that use a three-dimensional representation of geometric data (often Cartesian) that is stored in the computer for t ...
*
Mipmap
*
Materials system
*
Parametrization
*
Texture synthesis
*
Texture atlas
*
Texture splatting – a technique for combining textures
*
Shader (computer graphics)
References
Software
TexRecon— open-source software for texturing 3D models written in C++
External links
Introduction into texture mapping using C and SDL(PDF)
Programming a textured terrainusing XNA/DirectX, from www.riemers.net
Time TexturingTexture mapping with bezier lines
Polynomial Texture MappingInteractive Relighting for Photos
Methods that can be used to interpolate a texture knowing the texture coords at the vertices of a polygon
3D Texturing Tools
{{DEFAULTSORT:Texture Mapping
Computer graphics