Procedural texture

Last updated
procedurally generated tiling textures Tiling procedural textures.jpg
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

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

Cellular Texture CellularTexture.png
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

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

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

See also

Programs for creating textures using procedural texturing

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

Related Research Articles

Rendering (computer graphics) Process of generating an image from a model

Rendering or image synthesis is the process of generating a photorealistic or non-photorealistic image from a 2D or 3D model by means of a computer program. The resulting image is referred to as the render. Multiple models can be defined in a scene file containing objects in a strictly defined language or data structure. The scene file contains geometry, viewpoint, texture, lighting, and shading information describing the virtual scene. The data contained in the scene file is then passed to a rendering program to be processed and output to a digital image or raster graphics image file. The term "rendering" is analogous to the concept of an artist's impression of a scene. The term "rendering" is also used to describe the process of calculating effects in a video editing program to produce the final video output.

The RenderMan Interface Specification, or RISpec in short, is an open API developed by Pixar Animation Studios to describe three-dimensional scenes and turn them into digital photorealistic images. It includes the RenderMan Shading Language.

Fractal landscape Stochastically generated naturalistic terrain

A fractal landscape is a surface generated using a stochastic algorithm designed to produce fractal behavior that mimics the appearance of natural terrain. In other words, the result of the procedure is not a deterministic fractal surface, but rather a random surface that exhibits fractal behavior.

Constructive solid geometry

Constructive solid geometry is a technique used in solid modeling. Constructive solid geometry allows a modeler to create a complex surface or object by using Boolean operators to combine simpler objects, potentially generating visually complex objects by combining a few primitive ones.

Perlin noise Type of gradient noise in computer graphics

Perlin noise is a type of gradient noise developed by Ken Perlin.

Reyes rendering

Reyes rendering is a computer software architecture used in 3D computer graphics to render photo-realistic images. It was developed in the mid-1980s by Loren Carpenter and Robert L. Cook at Lucasfilm's Computer Graphics Research Group, which is now Pixar. It was first used in 1982 to render images for the Genesis effect sequence in the movie Star Trek II: The Wrath of Khan. Pixar's RenderMan was one implementation of the Reyes algorithm, until its removal in 2016. According to the original paper describing the algorithm, the Reyes image rendering system is "An architecture for fast high-quality rendering of complex images." Reyes was proposed as a collection of algorithms and data processing systems. However, the terms "algorithm" and "architecture" have come to be used synonymously and are used interchangeably in this article.

Ken Perlin

Kenneth H. Perlin is a professor in the Department of Computer Science at New York University, founding director of the Media Research Lab at NYU, director of the Future Reality Lab at NYU, and the Director of the Games for Learning Institute. His research interests include graphics, animation, multimedia, and science education. He developed or was involved with the development of techniques such as Perlin noise, hypertexture, real-time interactive character animation, and computer-user interfaces such as zooming user interfaces, stylus-based input (Quikwriting), and most recently, cheap, accurate multi-touch input devices. He is also the Chief Technology Advisor of ActorMachine, LLC.

Procedural generation Method in which data is created algorithmically as opposed to manually

In computing, procedural generation is a method of creating data algorithmically as opposed to manually, typically through a combination of human-generated assets and algorithms coupled with computer-generated randomness and processing power. In computer graphics, it is commonly used to create textures and 3D models. In video games, it is used to automatically create large amounts of content in a game. Depending on the implementation, advantages of procedural generation can include smaller file sizes, larger amounts of content, and randomness for less predictable gameplay. Procedural generation is a branch of media synthesis.

Texture Synthesis is the process of algorithmically constructing a large digital image from a small digital sample image by taking advantage of its structural content. It is an object of research in computer graphics and is used in many fields, amongst others digital image editing, 3D computer graphics and post-production of films.

Mathematical Applications Group, Inc. was an early computer technology company founded in 1966 by Dr. Philip Mittelman and located in Elmsford, New York, where it was evaluating nuclear radiation exposure. By modeling structures using combinatorial geometry mathematics and applying monte carlo radiation ray tracing techniques the mathematicians could estimate exposures at various distances and relative locations in and around fictional structures. In 1972, the graphics group called MAGI/SynthaVision was formed at MAGI by Robert Goldstein.

Simplex noise is a method for constructing an n-dimensional noise function comparable to Perlin noise but with fewer directional artifacts and, in higher dimensions, a lower computational overhead. Ken Perlin designed the algorithm in 2001 to address the limitations of his classic noise function, especially in higher dimensions.

Filter Forge

Filter Forge is a computer graphics program for Windows and Mac that allows users to create procedural textures and modify images. It can be used as a standalone application or as a plugin for compatible 8bf hosts such as Adobe Photoshop. It has been under continuous development by Filter Forge Inc. since its official release in March 2007.

Procedural modeling is an umbrella term for a number of techniques in computer graphics to create 3D models and textures from sets of rules. L-Systems, fractals, and generative modeling are procedural modeling techniques since they apply algorithms for producing scenes. The set of rules may either be embedded into the algorithm, configurable by parameters, or the set of rules is separate from the evaluation engine. The output is called procedural content, which can be used in computer games, films, be uploaded to the internet, or the user may edit the content manually. Procedural models often exhibit database amplification, meaning that large scenes can be generated from a much smaller number of rules. If the employed algorithm produces the same output every time, the output need not be stored. Often, it suffices to start the algorithm with the same random seed to achieve this.

Scenery generator Type of software

A scenery generator is software used to create landscape images, 3D models, and animations. These programs often use procedural generation to generate the landscapes. If not using procedural generation to create the landscapes, then normally a 3D artist would render and create the landscapes. These programs are often used in video games or movies. Basic elements of landscapes created by scenery generators include terrain, water, foliage, and clouds. The process for basic random generation uses a diamond square algorithm.

Value noise Type of noise in computer graphics

Value noise is a type of noise commonly used as a procedural texture primitive in computer graphics. It is conceptually different from, and often confused with gradient noise, examples of which are Perlin noise and Simplex noise. This method consists of the creation of a lattice of points which are assigned random values. The noise function then returns the interpolated number based on the values of the surrounding lattice points.

Gradient noise is a type of noise commonly used as a procedural texture primitive in computer graphics. It is conceptually different, and often confused with value noise. This method consists of a creation of a lattice of random gradients, dot products of which are then interpolated to obtain values in between the lattices. An artifact of some implementations of this noise is that the returned value at the lattice points is 0. Unlike the value noise, gradient noise has more energy in the high frequencies.

Worley noise Type of noise in computer graphics

Worley noise is a noise function introduced by Steven Worley in 1996. In computer graphics it is used to create procedural textures, i.e. textures that are created automatically with arbitrary precision and do not have to be drawn by hand. Worley noise comes close to simulating textures of stone, water, or biological cells.

This is a glossary of terms relating to computer graphics.

Noise refers to many types of random or unwanted signals, most commonly acoustic noise, but also including the following:

David S. Ebert is a computer scientist, holding the position of Silicon Valley Professor of Electrical and Computer Engineering Department at Purdue University.


This article was originally taken from The Photoshop Roadmap with written authorization

  1. Texture Analysis and Synthesis from Stanford Computer Graphics Laboratory (1994-2020
  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). doi:10.1109/MCG.2009.153.
  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).