| 21 |
|
int ndims = 0; /* number of sampling dimensions */ |
| 22 |
|
int samplendx = 0; /* index for this sample */ |
| 23 |
|
|
| 24 |
< |
static void trace_contrib(RAY *r); /* our trace callback */ |
| 25 |
< |
void (*trace)() = trace_contrib; |
| 24 |
> |
void (*trace)() = NULL; /* trace call (NULL before rcinit) */ |
| 25 |
|
|
| 26 |
|
int do_irrad = 0; /* compute irradiance? */ |
| 27 |
|
|
| 28 |
|
int rand_samp = 1; /* pure Monte Carlo sampling? */ |
| 29 |
|
|
| 30 |
|
double dstrsrc = 0.9; /* square source distribution */ |
| 31 |
< |
double shadthresh = .03; /* shadow threshold */ |
| 31 |
> |
double shadthresh = 0.; /* shadow threshold */ |
| 32 |
|
double shadcert = .75; /* shadow certainty */ |
| 33 |
|
int directrelay = 3; /* number of source relays */ |
| 34 |
|
int vspretest = 512; /* virtual source pretest density */ |
| 51 |
|
char *ambfile = NULL; /* ambient file name */ |
| 52 |
|
COLOR ambval = BLKCOLOR; /* ambient value */ |
| 53 |
|
int ambvwt = 0; /* initial weight for ambient value */ |
| 54 |
< |
double ambacc = 0; /* ambient accuracy */ |
| 54 |
> |
double ambacc = 0.; /* ambient accuracy */ |
| 55 |
|
int ambres = 256; /* ambient resolution */ |
| 56 |
|
int ambdiv = 350; /* ambient divisions */ |
| 57 |
|
int ambssamp = 0; /* ambient super-samples */ |
| 66 |
|
RNUMBER lastray = 0; /* last ray number sent */ |
| 67 |
|
RNUMBER lastdone = 0; /* last ray output */ |
| 68 |
|
|
| 69 |
+ |
static void trace_contrib(RAY *r); /* our trace callback */ |
| 70 |
+ |
|
| 71 |
|
static void mcfree(void *p) { epfree((*(MODCONT *)p).binv); free(p); } |
| 72 |
|
|
| 73 |
|
LUTAB modconttab = LU_SINIT(NULL,mcfree); /* modifier lookup table */ |
| 179 |
|
{ |
| 180 |
|
if (nchild > 0) /* close children if any */ |
| 181 |
|
end_children(code != 0); |
| 182 |
+ |
else if (nchild < 0) |
| 183 |
+ |
_exit(code); /* avoid flush() in child */ |
| 184 |
|
exit(code); |
| 185 |
|
} |
| 186 |
|
|
| 199 |
|
/* set shared memory boundary */ |
| 200 |
|
shm_boundary = strcpy((char *)malloc(16), "SHM_BOUNDARY"); |
| 201 |
|
} |
| 202 |
+ |
trace = trace_contrib; /* set up trace call-back */ |
| 203 |
|
for (i = 0; i < nsources; i++) /* tracing to sources as well */ |
| 204 |
|
source[i].sflags |= SFOLLOW; |
| 205 |
|
if (yres > 0) { /* set up flushing & ray counts */ |
| 283 |
|
thisray.rmax = 0.0; |
| 284 |
|
rayorigin(&thisray, PRIMARY, NULL, NULL); |
| 285 |
|
/* pretend we hit surface */ |
| 286 |
< |
thisray.rt = thisray.rot = 1e-5; |
| 286 |
> |
thisray.rxt = thisray.rot = 1e-5; |
| 287 |
|
thisray.rod = 1.0; |
| 288 |
|
VCOPY(thisray.ron, dir); |
| 289 |
|
VSUM(thisray.rop, org, dir, 1e-4); |