Difference between revisions of "Reference:Crackle Pattern"
Jholsenback (talk | contribs) m (1 revision: Initial Load (TF)) |
Jholsenback (talk | contribs) m (version changes) |
||
(4 intermediate revisions by 3 users not shown) | |||
Line 15: | Line 15: | ||
{{#indexentry:metric}} | {{#indexentry:metric}} | ||
{{#indexentry:solid}} | {{#indexentry:solid}} | ||
+ | {{#indexentry:keyword, repeat}} | ||
+ | {{#indexentry:repeat, crackle}} | ||
<p>The <code>crackle</code> 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.</p> | <p>The <code>crackle</code> 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.</p> | ||
Line 91: | Line 93: | ||
<li>The default offset is zero.</li> | <li>The default offset is zero.</li> | ||
</ul> | </ul> | ||
+ | |||
+ | <p><strong>Repeat</strong></p> | ||
+ | <pre> | ||
+ | pigment { | ||
+ | crackle repeat VECTOR | ||
+ | [PIGMENT_ITEMS ...] | ||
+ | } | ||
+ | |||
+ | normal { | ||
+ | crackle [Bump_Size] | ||
+ | repeat VECTOR | ||
+ | [NORMAL_ITEMS ...] | ||
+ | } | ||
+ | </pre> | ||
+ | <p>{{New}} to version 3.8 <code>repeat</code> 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 <code><0,0,0></code>, i.e. no repetition.</p> | ||
<p><strong>Solid</strong></p> | <p><strong>Solid</strong></p> | ||
Line 107: | Line 124: | ||
<p>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 | <p>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.</p> | standard crackle texture with a solid one. The default for this parameter is off.</p> | ||
+ | |||
+ | <table class="centered" width="420px" cellpadding="0" cellspacing="10"> | ||
+ | <tr> | ||
+ | <td>[[Image:RefImgCracklePigment.png|center|200px<!--centered--->]]</td> | ||
+ | <td>[[Image:RefImgCrackleNormal.png|center|200px<!--centered--->]]</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td colspan="2"><p class="caption">crackle pattern used as pigment and normal respectively</p></td> | ||
+ | </tr> | ||
+ | </table> |
Latest revision as of 10:14, 26 June 2017
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.