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.15 by greg, Mon Mar 25 16:10:00 2013 UTC vs.
Revision 2.19 by greg, Mon Jun 10 13:56:52 2019 UTC

# Line 37 | Line 37
37  
38          select(N, a1, a2, ..)           - return aN
39  
40 +        min(a1, a2, ..)                 - return minimum argument
41 +        max(a1, a2, ..)                 - return maximum argument
42 +
43          sqrt(x)                         - square root function
44  
45          sin(x), cos(x), tan(x),
# Line 51 | Line 54
54  
55          rand(x)                         - pseudo-random function (0 to 1)
56  
54        hermite(p0,p1,r0,r1,t)          - 1-dimensional hermite polynomial
55
57          noise3(x,y,z), noise3x(x,y,z),
58          noise3y(x,y,z), noise3z(x,y,z)  - noise function with gradient (-1 to 1)
59  
# Line 95 | Line 96 | xor(a,b) : if( a, not(b), b );
96   abs(x) : if( x, x, -x );
97   sgn(x) : if( x, 1, if(-x, -1, 0) );
98   sq(x) : x*x;
98 max(a,b) : if( a-b, a, b );
99 min(a,b) : if( a-b, b, a );
99   inside(a,x,b) : and(x-a,b-x);
100   frac(x) : x - floor(x);
101   mod(n,d) : n - floor(n/d)*d;
# Line 123 | Line 122 | cross(i,v1,v2) : select(i,     v1(2)*v2(3) - v1(3)*v2(2),
122   fade(near_val,far_val,dist) : far_val +
123                  if (16-dist, (near_val-far_val)/(1+dist*dist), 0);
124  
125 + hermite(p0,p1,r0,r1,t) :        p0 * ((2*t-3)*t*t+1) +
126 +                                p1 * (-2*t+3)*t*t +
127 +                                r0 * (((t-2)*t+1)*t) +
128 +                                r1 * ((t-1)*t*t);
129 +
130   bezier(p1, p2, p3, p4, t) :     p1 * (1+t*(-3+t*(3-t))) +
131                                  p2 * 3*t*(1+t*(-2+t)) +
132                                  p3 * 3*t*t*(1-t) +
# Line 147 | Line 151 | turbulencez(x,y,z,s) : if( s-1.01, 0,
151  
152                          { Normal distribution from uniform range (0,1) }
153  
154 < un2`P(t) : t - (2.515517+t*(.802853+t*.010328))/
154 > un2`P.(t) : t - (2.515517+t*(.802853+t*.010328))/
155                  (1+t*(1.432788+t*(.189269+t*.001308))) ;
156 < un1`P(p) : un2`P(sqrt(-2*log(p))) ;
156 > un1`P.(p) : un2`P.(sqrt(-2*log(p))) ;
157  
158 < unif2norm(p) : if( .5-p, -un1`P(p), un1`P(1-p) ) ;
158 > unif2norm(p) : if( .5-p, -un1`P.(p), un1`P.(1-p) ) ;
159  
160   nrand(x) = unif2norm(rand(x));
161  
162                          { Local (u,v) coordinates for planar surfaces }
163 < crosslen`P = Nx*Nx + Ny*Ny;
163 > crosslen`P. = Nx*Nx + Ny*Ny;
164                          { U is distance from projected Z-axis }
165 < U = if( crosslen`P - FTINY,
166 <                (Py*Nx - Px*Ny)/crosslen`P,
165 > U = if( crosslen`P. - FTINY,
166 >                (Py*Nx - Px*Ny)/crosslen`P.,
167                  Px);
168                          { V is defined so that N = U x V }
169 < V = if( crosslen`P - FTINY,
170 <                Pz - Nz*(Px*Nx + Py*Ny)/crosslen`P,
169 > V = if( crosslen`P. - FTINY,
170 >                Pz - Nz*(Px*Nx + Py*Ny)/crosslen`P.,
171                  Py);
172 +
173 +                        { Local hemisphere direction for *func & *data types }
174 +                        { last 3 real args = unnormalized up-vector }
175 + Vux`P. = arg(AC-1)*NzP - arg(AC)*NyP;
176 + Vuy`P. = arg(AC)*NxP - arg(AC-2)*NzP;
177 + Vuz`P. = arg(AC-2)*NyP - arg(AC-1)*NxP;
178 + vnorm`P. = 1/sqrt(Vux`P.*Vux`P. + Vuy`P.*Vuy`P. + Vuz`P.*Vuz`P.);
179 + Vnx`P. = Vux`P.*vnorm`P.;
180 + Vny`P. = Vuy`P.*vnorm`P.;
181 + Vnz`P. = Vuz`P.*vnorm`P.;
182 + Unx`P. = NyP*Vnz`P. - NzP*Vny`P.;
183 + Uny`P. = NzP*Vnx`P. - NxP*Vnz`P.;
184 + Unz`P. = NxP*Vny`P. - NyP*Vnx`P.;
185 +                        { Transform vectors, normalized (dx,dy,dz) away from surf }
186 + Ldx(dx,dy,dz) = dx*Unx`P. + dy*Uny`P. + dz*Unz`P.;
187 + Ldy(dx,dy,dz) = dx*Vnx`P. + dy*Vny`P. + dz*Vnz`P.;
188 + Ldz(dx,dy,dz) = dx*NxP + dy*NyP + dz*NzP;
189 +                        { Incident vector transformed to our coords }
190 + Idx = Ldx(-Dx,-Dy,-Dz);
191 + Idy = Ldy(-Dx,-Dy,-Dz);
192 + Idz = RdotP;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines