ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/lib/adobe.cal
Revision: 1.1
Committed: Wed Mar 12 17:45:47 2003 UTC (21 years, 3 months ago) by greg
Branch: MAIN
Log Message:
Added the rest of the missing files to ray/lib/

File Contents

# User Rev Content
1 greg 1.1 {
2     Adobe texture.
3    
4     Applies to any large, flat surface.
5    
6     A1 - overall magnitude
7     }
8    
9     { Basic texture is scaled gradient of 3D Perlin noise function.
10     Additional perturbation is added when in_crack is true. }
11     dx = A1 * noise3a(Px, Py, Pz) + if(in_crack, cdx, 0);
12     dy = A1 * noise3b(Px, Py, Pz) + if(in_crack, cdy, 0);
13     dz = A1 * noise3c(Px, Py, Pz) + if(in_crack, cdz, 0);
14    
15     { First, compute crack coordinate system, which is at 3 times original
16     bump scale and has additional fractal noise through in for irregularity
17     over an even larger scale. }
18     fn3 = fnoise3(Px, Py, Pz);
19     cu = Px/3 + fn3/30;
20     cv = Py/3 + fn3/30;
21     cw = Pz/3 + fn3/30;
22    
23     { Test in_crack returns true (positive) when sum of [-1,1] Perlin noise in
24     crack coordinate system is about -.4 times the fractal noise function at
25     the same point. }
26     in_crack = inside(-.02, noise3(cu, cv, cw) + .4*fnoise3(cu, cv, cw), .02);
27    
28     { Final crack perturbation is 5 times as large as normal gradient at that
29     point in Perlin function, meaning it will yank the surface normal one way
30     or the other along that wiggly line where in_crack is true, yielding an
31     apparent discontinuity in the surface. }
32     cdx = 5*A1*noise3a(cu, cv, cw);
33     cdy = 5*A1*noise3b(cu, cv, cw);
34     cdz = 5*A1*noise3c(cu, cv, cw);