--- ray/src/rt/raycalls.c 2004/10/21 23:40:04 2.10 +++ ray/src/rt/raycalls.c 2005/06/21 00:26:44 2.15 @@ -1,5 +1,5 @@ #ifndef lint -static const char RCSid[] = "$Id: raycalls.c,v 2.10 2004/10/21 23:40:04 greg Exp $"; +static const char RCSid[] = "$Id: raycalls.c,v 2.15 2005/06/21 00:26:44 greg Exp $"; #endif /* * raycalls.c - interface for running Radiance rendering as a library @@ -90,6 +90,7 @@ static const char RCSid[] = "$Id: raycalls.c,v 2.10 20 */ #include +#include #include "ray.h" #include "source.h" @@ -118,6 +119,8 @@ void (*addobjnotify[8])() = {ambnotify, NULL}; int do_irrad = 0; /* compute irradiance? */ +int rand_samp = 0; /* pure Monte Carlo sampling? */ + double dstrsrc = 0.0; /* square source distribution */ double shadthresh = .03; /* shadow threshold */ double shadcert = .75; /* shadow certainty */ @@ -162,6 +165,7 @@ ray_init( /* initialize ray-tracing calculation */ if (ofun[OBJ_SPHERE].funp == o_default) initotypes(); /* initialize urand */ + srandom(rand_samp ? (long)time(0) : 0L); initurand(2048); /* read scene octree */ readoct(octname = otnm, ~(IO_FILES|IO_INFO), &thescene, NULL); @@ -178,8 +182,8 @@ ray_trace( /* trace a primary ray */ RAY *r ) { - rayorigin(r, NULL, PRIMARY, 1.0); - samplendx++; + rayorigin(r, PRIMARY, NULL, NULL); + samplendx = rand_samp ? random() : samplendx+1; rayvalue(r); /* assumes origin and direction are set */ }