All patterns in POV-Ray are three dimensional. For every point in space, each pattern has a unique value. Patterns do not wrap around a surface like putting wallpaper on an object. The patterns exist in 3d and the objects are carved from them like carving an object from a solid block of wood or stone.
Consider a block of wood. It contains light and dark bands that are concentric cylinders being the growth rings of the wood. On the end of the block you see these concentric circles. Along its length you see lines that are the veins. However the pattern exists throughout the entire block. If you cut or carve the wood it reveals the pattern inside. Similarly an onion consists of concentric spheres that are visible only when you slice it. Marble stone consists of wavy layers of colored sediments that harden into rock.
These solid patterns can be simulated using mathematical functions. Other random patterns such as granite or bumps and dents can be generated using a random number system and a noise function.
In each case, the x, y, z coordinate of a point on a surface is used to compute some mathematical function that returns a float value. When used with color maps or pigment maps, that value looks up the color of the pigment to be used. In normal statements the pattern function result modifies or perturbs the surface normal vector to give a bumpy appearance. Used with a texture map, the function result determines which combinations of entire textures to be used.
The following sections describe each pattern. See the sections "Pigment" and "Normal" for more details on how to use patterns.
The agate pattern uses the ramp_wave wave type by default but may use any wave type. The pattern may be used with color_map , pigment_map , normal_map , slope_map and texture_map .
When used with pigments, the syntax is:
Similarly you may use a texture map in a texture statement. All textures are fully computed. The resulting colors are then weighted and averaged.
When used with a normal map in a normal statement, multiple copies of the original surface normal are created and are perturbed by each pattern. The perturbed normals are then weighted, added and normalized.
See the sections "Pigment Maps" , "Normal Maps" and "Texture Maps" for more information.
The bozo noise function has the following properties:
| 1. | It's defined over 3D space i.e., it takes x, y, and z and returns the noise value there. |
| 2. | If two points are far apart, the noise values at those points are relatively random. |
| 3. | If two points are close together, the noise values at those points are close to each other. |
You can visualize this as having a large room and a thermometer that ranges from 0.0 to 1.0. Each point in the room has a temperature. Points that are far apart have relatively random temperatures. Points that are close together have close temperatures. The temperature changes smoothly but randomly as we move through the room.
Now let's place an object into this room along with an artist. The artist measures the temperature at each point on the object and paints that point a different color depending on the temperature. What do we get? A POV-Ray bozo texture!
The bozo pattern uses the ramp_wave wave type by default but may use any wave type. The pattern may be used with color_map , pigment_map , normal_map , slope_map and texture_map .
where COLOR_1 is the color of the mortar and COLOR_2 is the color of the brick itself. If no colors are specified a default deep red and dark gray are used. The default size of the brick and mortar together is <8, 3, 4.5> units. The default thickness of the mortar is 0.5 units. These values may be changed using the optional brick_size and mortar pattern modifiers. You may also use pigment statements in place of the colors. For example:
When used with normals, the syntax is
Where BUMP_FLOAT is an optional bump size float value. You may also use full normal statements. For example:
When used with textures, the syntax is
This is a block pattern which cannot use wave types, color map, or slope map modifiers.
When used as a normal, bumps uses a specialized normal perturbation function. This means that the bumps pattern cannot be used with normal map, slope map or wave type modifiers in a normal statement.
When used as a pigment pattern or texture pattern, the bumps pattern is identical to bozo or spotted and is similar to normal bumps but is not identical as are most normals when compared to pigments. When used as pigment or texture statements the bumps pattern uses the ramp_wave wave type by default but may use any wave type. The pattern may be used with color_map , pigment_map , and texture_map .
The checker pattern is actually a series of cubes that are one unit in size. Imagine a bunch of 1 inch cubes made from two different colors of modeling clay. Now imagine arranging the cubes in an alternating check pattern and stacking them in layer after layer so that the colors still alternate in every direction. Eventually you would have a larger cube. The pattern of checks on each side is what the POV-Ray checker pattern produces when applied to a box object. Finally imagine cutting away at the cube until it is carved into a smooth sphere or any other shape. This is what the checker pattern would look like on an object of any kind.
You may also use pigment statements in place of the colors. For example:
When used with normals, the syntax is
Where BUMP_FLOAT is an optional bump size float value. You may also use full normal statements. For example:
When used with textures, the syntax is...
This use of checker as a texture pattern replaces the special tiles texture in previous versions of POV-Ray. You may still use tiles but it may be phased out in future versions so checker textures are best.
This is a block pattern which cannot use wave types, color map, or slope map modifiers.
Mathematically, the set crackle(p)=0 is a 3D Voronoi diagram of a field of semi random points and crackle(p) < 0 is the distance from the set along the shortest path (a Voronoi diagram is the locus of points equidistant from their two nearest neighbors from a set of disjoint points, like the membranes in suds are to the centers of the bubbles).
The crackle pattern uses the ramp_wave wave type by default but may use any wave type. The pattern may be used with color_map , pigment_map , normal_map , slope_map and texture_map .
When used as a normal pattern, dents uses a specialized normal perturbation function. This means that the dents pattern cannot be used with normal map, slope map or wave type modifiers in a normal statement.
When used as a pigment pattern or texture pattern, the dents pattern is similar to normal dents but is not identical as are most normals when compared to pigments. When used in pigment or texture statements the dents pattern uses the ramp_wave wave type by default but may use any wave type. The pattern may be used with color_map , pigment_map and texture_map .
where VECTOR is a vector pointing in the direction that the colors blend. For example
produces a series of smooth bands of color that look like layers of colors next to each other. Points at x=0 are the first color in the color map. As the x location increases it smoothly turns to the last color at x=1. Then it starts over with the first again and gradually turns into the last color at x=2. The pattern reverses for negative values of x. Using gradient y or gradient z makes the colors blend along the y- or z-axis. Any vector may be used but x, y and z are most common.
As a normal pattern, gradient generates a saw-tooth or ramped wave appearance. The syntax is
where the VECTOR giving the orientation is a required parameter but the BUMP_FLOAT bump size which follows is optional.
The pattern uses the ramp_wave wave type by default but may use any wave type. The pattern may be used with color_map , pigment_map , normal_map , slope_map and texture_map .
As a normal pattern it creates an extremely bumpy surface that looks like a gravel driveway or rough stone.
The pattern uses the ramp_wave wave type by default but may use any wave type. The pattern may be used with color_map , pigment_map , normal_map , slope_map and texture_map .

The three colors will repeat the hexagonal pattern with hexagon COLOR_1 centered at the origin, COLOR_2 in the +z-direction and COLOR_3 to either side. Each side of the hexagon is one unit long. The hexagonal rods of color extend infinitely in the +y- and -y-directions. If no colors are specified then default blue, green and red colors are used.
You may also use pigment statements in place of the colors. For example:
When used with normals, the syntax is
Where BUMP_FLOAT is an optional bump size float value. You may also use full normal statements. For example:
When used with textures, the syntax is...
This is a block pattern which cannot use wave types, color map, or slope map modifiers.
The pattern uses the ramp_wave wave type by default but may use any wave type. The pattern may be used with color_map , pigment_map , normal_map , slope_map and texture_map .