Procedural texture

From Wikipedia, the free encyclopedia
Procedurally generated tiling textures

In computer graphics, a procedural texture[1] is a texture created using a mathematical description (i.e. an algorithm) rather than directly stored data. The advantage of this approach is low storage cost, unlimited texture resolution and easy texture mapping.[2] These kinds of textures are often used to model surface or volumetric representations of natural elements such as wood, marble, granite, metal, stone, and others.

Usually, the natural look of the rendered result is achieved by the usage of fractal noise and turbulence functions[definition needed]. These functions are used as a numerical representation of the "randomness" found in nature.

Solid texturing[edit]

Solid texturing is a process where the texture generating function is evaluated over at each visible surface point of the model so the resulting material properties (like color, shininess or normal) depends only on their 3D position, not their parametrized 2D surface position like in traditional 2D texture mapping. Consequently, solid textures are unaffected by distortions of the surface parameter space, such as you might see near the poles of a sphere. Also, continuity between the surface parameterization of adjacent patches isn't a concern either. Solid textures will remain consistent and have features of constant size regardless of distortions in the surface coordinate systems.[3] Initially these functions were based on simple combination of procedural noise functions like Simplex noise or Perlin noise. Currently a vast arsenal of techniques are available, ranging from structured regular texture (like a brick wall), to structured irregular textures (like a stonewall), to purely stochastic textures.[4]

Cellular texturing[edit]

Cellular texture

Cellular texturing differs from the majority of other procedural texture generating techniques as it does not depend on noise functions as its basis, although it is often used to complement the technique. Cellular textures are based on feature points which are scattered over a three-dimensional space. These points are then used to split up the space into small, randomly tiled regions called cells. These cells often look like "lizard scales", "pebbles", or "flagstones". Even though these regions are discrete, the cellular basis function itself is continuous and can be evaluated anywhere in space.[5] Worley noise is a common type of cellular texture.

Genetic textures[edit]

Genetic texture generation is an experimental approach to generate textures. It is an automated process guided by a human moderator. The flow of control usually has a computer generate a set of texture candidates. From these, a user picks a selection. The computer then generates another set of textures by mutating and crossing over elements of the user selected textures.[6] For more information on exactly how this mutation and cross over generation method is achieved, see Genetic algorithm. The process continues until a suitable texture for the user is generated. As the outcome is difficult to control, this method is typically used only for experimental or abstract textures.

Self-organizing textures[edit]

Starting from a simple white noise, self-organization processes can lead to structured patterns while preserving some randomness. Reaction–diffusion systems are one way of generating such textures. Realistic textures can be generated by simulating complex chemical reactions within fluids. These systems may show behaviors similar to real processes (Morphogenesis) found in nature, such as animal markings (shells, fish, wild cats...).

Programs for creating textures[edit]

Besides specialized programs, others, such as Blender, CorelDRAW,[7] contain procedural texture subsystems that can be used to generate textures.

See also[edit]


  1. ^ Texture Analysis and Synthesis from Stanford Computer Graphics Laboratory (1994-2020
  2. ^ "Definition of procedural texture".
  3. ^ Ebert et al: Texturing and Modeling A Procedural Approach, page 10. Morgan Kaufmann, 2003.
  4. ^ Pietroni, Nico; Cignoni, Paolo; Miguel A., Otaduy; Roberto, Scopigno (2010). "A survey on solid texture synthesis" (PDF). IEEE Computer Graphics and Applications. 30 (4): 74–89. doi:10.1109/MCG.2009.153. PMID 20650730. S2CID 18074521.
  5. ^ Ebert et al: Texturing and Modeling A Procedural Approach, page 135. Morgan Kaufmann, 2003.
  6. ^ Ebert et al: Texturing and Modeling A Procedural Approach, page 547. Morgan Kaufmann, 2003.
  7. ^ "page 380" (PDF).