ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/rt/rayinit.cal
(Generate patch)

Comparing ray/src/rt/rayinit.cal (file contents):
Revision 2.1 by greg, Tue Nov 12 17:10:31 1991 UTC vs.
Revision 2.11 by greg, Thu Oct 31 11:05:35 1996 UTC

# Line 9 | Line 9
9          Nx, Ny, Nz                      - surface normal
10          Px, Py, Pz                      - intersection point
11          T                               - distance from start
12 +        Ts                              - single ray (shadow) distance
13          Rdot                            - ray dot product
14          S                               - world scale
15          Tx, Ty, Tz                      - world origin
# Line 23 | Line 24
24          RdotP                           - perturbed ray dot product
25          CrP, CgP, CbP                   - perturbed material color
26  
27 +        For prism1 and prism2 types, the following are available:
28 +
29 +        DxA, DyA, DzA                   - direction to target light source
30 +
31          Library functions:
32  
33          if(a, b, c)                     - if a positive, return b, else c
# Line 45 | Line 50
50  
51          hermite(p0,p1,r0,r1,t)          - 1-dimensional hermite polynomial
52  
53 <        noise3(x,y,z), noise3a(x,y,z),
54 <        noise3b(x,y,z), noise3c(x,y,z)  - noise function with gradient (-1 to 1)
53 >        noise3(x,y,z), noise3x(x,y,z),
54 >        noise3y(x,y,z), noise3z(x,y,z)  - noise function with gradient (-1 to 1)
55  
56          fnoise3(x,y,z)                  - fractal noise function (-1 to 1)
57   }
# Line 56 | Line 61 | AC = arg(0);
61   A1 = arg(1); A2 = arg(2); A3 = arg(3); A4 = arg(4); A5 = arg(5);
62   A6 = arg(6); A7 = arg(7); A8 = arg(8); A9 = arg(9); A10 = arg(10);
63  
64 + noise3a(x,y,z) : noise3x(x,y,z);
65 + noise3b(x,y,z) : noise3y(x,y,z);
66 + noise3c(x,y,z) : noise3z(x,y,z);
67 +
68                          { Forward compatibility (?) }
69   D(i) = select(i, Dx, Dy, Dz);
70   N(i) = select(i, Nx, Ny, Nz);
71   P(i) = select(i, Px, Py, Pz);
72 < noise3d(i,x,y,z) = select(i, noise3a(x,y,z), noise3b(x,y,z), noise3c(x,y,z));
72 > noise3d(i,x,y,z) : select(i, noise3x(x,y,z), noise3y(x,y,z), noise3z(x,y,z));
73  
74                          { More robust versions of library functions }
75   bound(a,x,b) : if(a-x, a, if(x-b, b, x));
76   Acos(x) : acos(bound(-1,x,1));
77   Asin(x) : asin(bound(-1,x,1));
78 < Exp(x) : if(-x-60, 0, exp(x));
78 > Atan2(y,x) : if(x*x+y*y, atan2(y,x), 0);
79 > Exp(x) : if(-x-100, 0, exp(x));
80   Sqrt(x) : if(x, sqrt(x), 0);
81  
82                          { Useful constants }
# Line 95 | Line 105 | noneg(v) = if(v,v,0);
105   red(r,g,b) = if(r,r,0);
106   green(r,g,b) = if(g,g,0);
107   blue(r,g,b) = if(b,b,0);
108 < grey(r,g,b) = .3*r + .59*g + .11*b;
108 > grey(r,g,b) = noneg(.265074126*r + .670114631*g + .064811243*b);
109   clip_r(r,g,b) = bound(0,r,1);
110   clip_g(r,g,b) = bound(0,g,1);
111   clip_b(r,g,b) = bound(0,b,1);
112 < clipgrey(r,g,b) = bound(0,grey(r,g,b),1);
112 > clipgrey(r,g,b) = min(grey(r,g,b),1);
113  
114   dot(v1,v2) : v1(1)*v2(1) + v1(2)*v2(2) + v1(3)*v2(3);
115   cross(i,v1,v2) : select(i,      v1(2)*v2(3) - v1(3)*v2(2),
# Line 122 | Line 132 | bspline(pp, p0, p1, pn, t) =   pp * (1/6+t*(-.5+t*(.5-1/
132   turbulence(x,y,z,s) = if( s-1.01, 0, abs(noise3(x/s,y/s,z/s)*s) +
133                                                  turbulence(x,y,z,2*s) );
134   turbulencea(x,y,z,s) = if( s-1.01, 0,
135 <                        sgn(noise3(x/s,y/s,z/s))*noise3a(x/s,y/s,z/s) +
135 >                        sgn(noise3(x/s,y/s,z/s))*noise3x(x/s,y/s,z/s) +
136                          turbulencea(x,y,z,2*s) );
137   turbulenceb(x,y,z,s) = if( s-1.01, 0,
138 <                        sgn(noise3(x/s,y/s,z/s))*noise3b(x/s,y/s,z/s) +
138 >                        sgn(noise3(x/s,y/s,z/s))*noise3y(x/s,y/s,z/s) +
139                          turbulenceb(x,y,z,2*s) );
140   turbulencec(x,y,z,s) = if( s-1.01, 0,
141 <                        sgn(noise3(x/s,y/s,z/s))*noise3c(x/s,y/s,z/s) +
141 >                        sgn(noise3(x/s,y/s,z/s))*noise3z(x/s,y/s,z/s) +
142                          turbulencec(x,y,z,2*s) );
143  
144                          { Normal distribution from uniform range (0,1) }
145  
146   un2`private(t) : t - (2.515517+t*(.802853+t*.010328))/
147                  (1+t*(1.432788+t*(.189269+t*.001308))) ;
148 < un1`private(p) : un2`private(sqrt(log(1/p/p))) ;
148 > un1`private(p) : un2`private(sqrt(-2*log(p))) ;
149  
150 < unif2norm(p) : if( .5-p, un1`private(p), -un1`private(1-p) ) ;
150 > unif2norm(p) : if( .5-p, -un1`private(p), un1`private(1-p) ) ;
151  
152   nrand(x) = unif2norm(rand(x));
153  
154                          { Local (u,v) coordinates for planar surfaces }
155   crosslen`private = Nx*Nx + Ny*Ny;
156 <                        { U is distance from origin in XY-plane }
156 >                        { U is distance from projected Z-axis }
157   U = if( crosslen`private - FTINY,
158                  (Py*Nx - Px*Ny)/crosslen`private,
159                  Px);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines