| 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 |
|
|
| 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 */ |
| 197 |
|
/* set shared memory boundary */ |
| 198 |
|
shm_boundary = strcpy((char *)malloc(16), "SHM_BOUNDARY"); |
| 199 |
|
} |
| 200 |
+ |
trace = trace_contrib; /* set up trace call-back */ |
| 201 |
|
for (i = 0; i < nsources; i++) /* tracing to sources as well */ |
| 202 |
|
source[i].sflags |= SFOLLOW; |
| 203 |
|
if (yres > 0) { /* set up flushing & ray counts */ |
| 281 |
|
thisray.rmax = 0.0; |
| 282 |
|
rayorigin(&thisray, PRIMARY, NULL, NULL); |
| 283 |
|
/* pretend we hit surface */ |
| 284 |
< |
thisray.rt = thisray.rot = 1e-5; |
| 284 |
> |
thisray.rxt = thisray.rot = 1e-5; |
| 285 |
|
thisray.rod = 1.0; |
| 286 |
|
VCOPY(thisray.ron, dir); |
| 287 |
|
VSUM(thisray.rop, org, dir, 1e-4); |