119 |
|
|
120 |
|
void (*addobjnotify[8])() = {ambnotify, NULL}; |
121 |
|
|
122 |
+ |
int castonly = 0; /* only doing ray-casting? */ |
123 |
+ |
|
124 |
|
int do_irrad = 0; /* compute irradiance? */ |
125 |
|
|
126 |
|
int rand_samp = 1; /* pure Monte Carlo sampling? */ |
183 |
|
initotypes(); |
184 |
|
/* initialize urand */ |
185 |
|
reset_random(); |
186 |
< |
/* read scene octree */ |
187 |
< |
readoct(octname = otnm, ~(IO_FILES|IO_INFO), &thescene, NULL); |
186 |
> |
|
187 |
> |
octname = savqstr(otnm); /* read scene octree */ |
188 |
> |
readoct(octname, ~(IO_FILES|IO_INFO), &thescene, NULL); |
189 |
|
nsceneobjs = nobjects; |
190 |
< |
/* PMAP: Init & load photon maps */ |
191 |
< |
ray_init_pmap(); |
192 |
< |
/* find and mark sources */ |
193 |
< |
marksources(); |
194 |
< |
/* initialize ambient calculation */ |
195 |
< |
setambient(); |
196 |
< |
/* ready to go... (almost) */ |
190 |
> |
|
191 |
> |
if (!castonly) { /* any actual ray traversal to do? */ |
192 |
> |
|
193 |
> |
ray_init_pmap(); /* PMAP: set up & load photon maps */ |
194 |
> |
|
195 |
> |
marksources(); /* find and mark sources */ |
196 |
> |
|
197 |
> |
setambient(); /* initialize ambient calculation */ |
198 |
> |
} else |
199 |
> |
distantsources(); /* else mark only distant sources */ |
200 |
|
} |
201 |
|
|
202 |
|
|
224 |
|
donesets(); |
225 |
|
octdone(); |
226 |
|
thescene.cutree = EMPTY; |
227 |
< |
octname = NULL; |
227 |
> |
freeqstr(octname); octname = NULL; |
228 |
|
retainfonts = 0; |
229 |
|
if (freall) { |
230 |
|
freefont(NULL); |
388 |
|
rp->do_irrad = 0; |
389 |
|
rp->rand_samp = 1; |
390 |
|
rp->dstrsrc = 0.0; |
391 |
< |
rp->shadthresh = .03; |
392 |
< |
rp->shadcert = .75; |
391 |
> |
rp->shadthresh = 0.03; |
392 |
> |
rp->shadcert = 0.75; |
393 |
|
rp->directrelay = 2; |
394 |
|
rp->vspretest = 512; |
395 |
|
rp->directvis = 1; |
398 |
|
setcolor(rp->salbedo, 0., 0., 0.); |
399 |
|
rp->seccg = 0.; |
400 |
|
rp->ssampdist = 0.; |
401 |
< |
rp->specthresh = .15; |
401 |
> |
rp->specthresh = 0.15; |
402 |
|
rp->specjitter = 1.; |
403 |
|
rp->backvis = 1; |
404 |
|
rp->maxdepth = -10; |
405 |
< |
rp->minweight = 2e-3; |
405 |
> |
rp->minweight = 1e-4; |
406 |
|
memset(rp->ambfile, '\0', sizeof(rp->ambfile)); |
407 |
|
setcolor(rp->ambval, 0., 0., 0.); |
408 |
|
rp->ambvwt = 0; |
409 |
|
rp->ambres = 256; |
410 |
< |
rp->ambacc = 0.15; |
410 |
> |
rp->ambacc = 0.1; |
411 |
|
rp->ambdiv = 1024; |
412 |
|
rp->ambssamp = 512; |
413 |
|
rp->ambounce = 0; |