--- ray/src/rt/raycalls.c 2003/05/15 05:13:35 2.3 +++ ray/src/rt/raycalls.c 2004/03/30 16:13:01 2.9 @@ -1,5 +1,5 @@ #ifndef lint -static const char RCSid[] = "$Id: raycalls.c,v 2.3 2003/05/15 05:13:35 greg Exp $"; +static const char RCSid[] = "$Id: raycalls.c,v 2.9 2004/03/30 16:13:01 schorsch Exp $"; #endif /* * raycalls.c - interface for running Radiance rendering as a library @@ -90,18 +90,14 @@ static const char RCSid[] = "$Id: raycalls.c,v 2.3 200 * same as the defaults for rtrace.) */ -#include "ray.h" +#include +#include "ray.h" #include "source.h" - #include "ambient.h" - #include "otypes.h" - #include "random.h" - #include "data.h" - #include "font.h" char *progname = "unknown_app"; /* caller sets to argv[0] */ @@ -119,14 +115,13 @@ int samplendx = 0; /* index for this sample */ void (*trace)() = NULL; /* trace call */ -extern void ambnotify(); -void (*addobjnotify[])() = {ambnotify, NULL}; +void (*addobjnotify[8])() = {ambnotify, NULL}; int do_irrad = 0; /* compute irradiance? */ double dstrsrc = 0.0; /* square source distribution */ -double shadthresh = .05; /* shadow threshold */ -double shadcert = .5; /* shadow certainty */ +double shadthresh = .03; /* shadow threshold */ +double shadcert = .75; /* shadow certainty */ int directrelay = 2; /* number of source relays */ int vspretest = 512; /* virtual source pretest density */ int directvis = 1; /* sources visible? */ @@ -142,24 +137,25 @@ double specjitter = 1.; /* specular sampling jitter * int backvis = 1; /* back face visibility */ -int maxdepth = 6; /* maximum recursion depth */ -double minweight = 4e-3; /* minimum ray weight */ +int maxdepth = 8; /* maximum recursion depth */ +double minweight = 2e-3; /* minimum ray weight */ char *ambfile = NULL; /* ambient file name */ COLOR ambval = BLKCOLOR; /* ambient value */ int ambvwt = 0; /* initial weight for ambient value */ -double ambacc = 0.2; /* ambient accuracy */ -int ambres = 128; /* ambient resolution */ -int ambdiv = 512; /* ambient divisions */ -int ambssamp = 0; /* ambient super-samples */ +double ambacc = 0.1; /* ambient accuracy */ +int ambres = 256; /* ambient resolution */ +int ambdiv = 1024; /* ambient divisions */ +int ambssamp = 512; /* ambient super-samples */ int ambounce = 0; /* ambient bounces */ char *amblist[AMBLLEN+1]; /* ambient include/exclude list */ int ambincl = -1; /* include == 1, exclude == 0 */ -void -ray_init(otnm) /* initialize ray-tracing calculation */ -char *otnm; +extern void +ray_init( /* initialize ray-tracing calculation */ + char *otnm +) { if (nobjects > 0) /* free old scene data */ ray_done(0); @@ -167,8 +163,7 @@ char *otnm; if (ofun[OBJ_SPHERE].funp == o_default) initotypes(); /* initialize urand */ - if (urperm == NULL) - initurand(2048); + initurand(2048); /* read scene octree */ readoct(octname = otnm, ~(IO_FILES|IO_INFO), &thescene, NULL); nsceneobjs = nobjects; @@ -179,9 +174,10 @@ char *otnm; /* ready to go... */ } -void -ray_trace(r) /* trace a primary ray */ -RAY *r; +extern void +ray_trace( /* trace a primary ray */ + RAY *r +) { rayorigin(r, NULL, PRIMARY, 1.0); samplendx++; @@ -189,9 +185,10 @@ RAY *r; } -void -ray_done(freall) /* free ray-tracing data */ -int freall; +extern void +ray_done( /* free ray-tracing data */ + int freall +) { retainfonts = 1; ambdone(); @@ -209,16 +206,17 @@ int freall; initurand(0); } if (nobjects > 0) { - sprintf(errmsg, "%d objects left after call to ray_done()", + sprintf(errmsg, "%ld objects left after call to ray_done()", nobjects); error(WARNING, errmsg); } } -void -ray_save(rp) /* save current parameter settings */ -RAYPARAMS *rp; +extern void +ray_save( /* save current parameter settings */ + RAYPARAMS *rp +) { int i, ndx; @@ -242,7 +240,7 @@ RAYPARAMS *rp; rp->maxdepth = maxdepth; rp->minweight = minweight; copycolor(rp->ambval, ambval); - bzero(rp->ambfile, sizeof(rp->ambfile)); + memset(rp->ambfile, '\0', sizeof(rp->ambfile)); if (ambfile != NULL) strncpy(rp->ambfile, ambfile, sizeof(rp->ambfile)-1); rp->ambvwt = ambvwt; @@ -252,7 +250,7 @@ RAYPARAMS *rp; rp->ambssamp = ambssamp; rp->ambounce = ambounce; rp->ambincl = ambincl; - bzero(rp->amblval, sizeof(rp->amblval)); + memset(rp->amblval, '\0', sizeof(rp->amblval)); ndx = 0; for (i = 0; i < AMBLLEN && amblist[i] != NULL; i++) { int len = strlen(amblist[i]); @@ -266,9 +264,10 @@ RAYPARAMS *rp; } -void -ray_restore(rp) /* restore parameter settings */ -RAYPARAMS *rp; +extern void +ray_restore( /* restore parameter settings */ + RAYPARAMS *rp +) { register int i; @@ -333,9 +332,10 @@ RAYPARAMS *rp; } -void -ray_defaults(rp) /* get default parameter values */ -RAYPARAMS *rp; +extern void +ray_defaults( /* get default parameter values */ + RAYPARAMS *rp +) { int i; @@ -344,8 +344,8 @@ RAYPARAMS *rp; rp->do_irrad = 0; rp->dstrsrc = 0.0; - rp->shadthresh = .05; - rp->shadcert = .5; + rp->shadthresh = .03; + rp->shadcert = .75; rp->directrelay = 2; rp->vspretest = 512; rp->directvis = 1; @@ -357,18 +357,18 @@ RAYPARAMS *rp; rp->specthresh = .15; rp->specjitter = 1.; rp->backvis = 1; - rp->maxdepth = 6; - rp->minweight = 4e-3; + rp->maxdepth = 8; + rp->minweight = 2e-3; setcolor(rp->ambval, 0., 0., 0.); - bzero(rp->ambfile, sizeof(rp->ambfile)); + memset(rp->ambfile, '\0', sizeof(rp->ambfile)); rp->ambvwt = 0; - rp->ambres = 128; - rp->ambacc = 0.2; - rp->ambdiv = 512; - rp->ambssamp = 0; + rp->ambres = 256; + rp->ambacc = 0.1; + rp->ambdiv = 1024; + rp->ambssamp = 512; rp->ambounce = 0; rp->ambincl = -1; - bzero(rp->amblval, sizeof(rp->amblval)); + memset(rp->amblval, '\0', sizeof(rp->amblval)); for (i = AMBLLEN+1; i--; ) rp->amblndx[i] = -1; }