# Crackle PatternReference

The `crackle`

pattern is a set of random tiled multifaceted cells. The crackle pattern is only semi-procedural, requiring random values to be computed and cached for subsequent queries, with a fixed amount of data per unit-cube in crackle pattern coordinate space. Scaled smaller than the density of actual ray-object-intersections computed, it will eventually lead to a separate crackle cache entry being created for each and every intersection. After the cache reaches a certain size (currently 30mb per thread), new entries for that particular block will be discarded after they are calculated. Starting a new block will allow the caching to resume working again. While discarding the data is of course inefficient, it's still preferable to chewing up 100% of the available physical RAM and then hitting the swap-file.

There is a choice between different types:

**Standard Crackle**

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

- With a large scale and no turbulence it makes a pretty good stone wall or floor.
- With a small scale and no turbulence it makes a pretty good crackle ceramic glaze.
- Using high turbulence it makes a good marble that avoids the problem of apparent parallel layers in traditional marble.

**Form**

pigment { crackle form <FORM_VECTOR> [PIGMENT_ITEMS ...] } normal { crackle [Bump_Size] form <FORM_VECTOR> [NORMAL_ITEMS ...] }

Form determines the linear combination of distances used to create the pattern. Form is a vector.

- The first component determines the multiple of the distance to the closest point to be used in determining the value of the pattern at a particular point.
- The second component determines the coefficient applied to the second-closest distance.
- The third component corresponds to the third-closest distance.

The standard form is <-1,1,0> (also the default), corresponding to the difference in the distances to the closest and second-closest points in the cell array. Another commonly-used form is <1,0,0>, corresponding to the distance to the closest point, which produces a pattern that looks roughly like a random collection of intersecting spheres or cells.

- Other forms can create very interesting effects, but it is best to keep the sum of the coefficients low.
- If the final computed value is too low or too high, the resultant pigment will be saturated with the color at the low or high end of the
`color_map`

. In this case, try multiplying the form vector by a constant.

**Metric**

pigment { crackle metric METRIC_VALUE [PIGMENT_ITEMS ...] } normal { crackle [Bump_Size] metric METRIC_VALUE [NORMAL_ITEMS ...] }

Changing the metric changes the function used to determine which cell center is closer, for purposes of determining which cell a particular point falls in. The standard Euclidean distance function has a metric of 2. Changing the metric value changes the boundaries of the cells. A metric value of 3, for example, causes the boundaries to curve, while a very large metric constrains the boundaries to a very small set of possible orientations.

- The default for metric is 2, as used by the standard crackle texture.
- Metrics other than 1 or 2 can lead to substantially longer render times, as the method used to calculate such metrics is not as efficient.

**Offset**

pigment { crackle offset OFFSET_VALUE [PIGMENT_ITEMS ...] } normal { crackle [Bump_Size] offset OFFSET_VALUE [NORMAL_ITEMS ...] }

The offset is used to displace the pattern from the standard xyz space along a fourth dimension.

- It can be used to round off the
*pointy*parts of a cellular normal texture or procedural heightfield by keeping the distances from becoming zero. - It can also be used to move the calculated values into a specific range if the result is saturated at one end of the color_map.
- The default offset is zero.

**Repeat**

pigment { crackle repeat VECTOR [PIGMENT_ITEMS ...] } normal { crackle [Bump_Size] repeat VECTOR [NORMAL_ITEMS ...] }

New to version 3.8 `repeat`

causes the pattern to repeat seamlessly at regular intervals along the X, Y and/or Z axis, as specified by the corresponding components of the specified vector. Values of 0 indicate no repetition along the corresponding axis. For technical reasons, only integer intervals are supported. The default for this parameter is `<0,0,0>`

, i.e. no repetition.

**Solid**

pigment { crackle solid [PIGMENT_ITEMS ...] } normal { crackle [Bump_Size] solid [NORMAL_ITEMS ...] }

Causes the same value to be generated for every point within a specific cell. This has practical applications in making easy stained-glass windows or flagstones. There is no provision for mortar, but mortar may be created by layering or texture-mapping a standard crackle texture with a solid one. The default for this parameter is off.