--- ray/src/rt/raytrace.c 1993/01/26 09:28:00 2.3 +++ ray/src/rt/raytrace.c 1993/12/09 09:34:08 2.8 @@ -25,8 +25,8 @@ extern int maxdepth; /* maximum recursion depth */ extern double minweight; /* minimum ray weight */ extern int do_irrad; /* compute irradiance? */ -long raynum = 0L; /* next unique ray number */ -long nrays = 0L; /* number of calls to localhit */ +unsigned long raynum = 0; /* next unique ray number */ +unsigned long nrays = 0; /* number of calls to localhit */ static FLOAT Lambfa[5] = {PI, PI, PI, 0.0, 0.0}; OBJREC Lamb = { @@ -34,6 +34,8 @@ OBJREC Lamb = { {0, 5, NULL, Lambfa}, NULL, }; /* a Lambertian surface */ +static int raymove(), checkset(), checkhit(); + #define MAXLOOP 128 /* modifier loop detection */ #define RAYHIT (-1) /* return value for intercepted ray */ @@ -103,7 +105,8 @@ RAY *r; raycont(r) /* check for clipped object and continue */ register RAY *r; { - if (r->clipset != NULL && inset(r->clipset, r->ro->omod)) + if ((r->clipset != NULL && inset(r->clipset, r->ro->omod)) || + r->ro->omod == OVOID) raytrans(r); else rayshade(r, r->ro->omod); @@ -328,9 +331,9 @@ register CUBE *scene; sflags = 0; for (i = 0; i < 3; i++) { curpos[i] = r->rorg[i]; - if (r->rdir[i] > FTINY) + if (r->rdir[i] > 1e-7) sflags |= 1 << i; - else if (r->rdir[i] < -FTINY) + else if (r->rdir[i] < -1e-7) sflags |= 0x10 << i; } if (sflags == 0)