--- ray/src/rt/ambient.c 2014/05/09 16:40:01 2.87 +++ ray/src/rt/ambient.c 2014/06/06 00:57:46 2.90 @@ -1,5 +1,5 @@ #ifndef lint -static const char RCSid[] = "$Id: ambient.c,v 2.87 2014/05/09 16:40:01 greg Exp $"; +static const char RCSid[] = "$Id: ambient.c,v 2.90 2014/06/06 00:57:46 greg Exp $"; #endif /* * ambient.c - routines dealing with ambient (inter-reflected) component. @@ -109,12 +109,12 @@ setambres( /* set ambient resolution */ /* set min & max radii */ if (ar <= 0) { minarad = 0; - maxarad = thescene.cusize*0.5; + maxarad = thescene.cusize*0.2; } else { minarad = thescene.cusize / ar; maxarad = 64.0 * minarad; /* heuristic */ - if (maxarad > thescene.cusize*0.5) - maxarad = thescene.cusize*0.5; + if (maxarad > thescene.cusize*0.2) + maxarad = thescene.cusize*0.2; } if (minarad <= FTINY) minarad = 10.0*FTINY; @@ -165,7 +165,7 @@ setambient(void) /* initialize calculation */ initambfile(0); /* file exists */ lastpos = ftell(ambfp); while (readambval(&amb, ambfp)) - avinsert(avstore(&amb)); + avstore(&amb); nambshare = nambvals; /* share loaded values */ if (readonly) { sprintf(errmsg, @@ -960,7 +960,7 @@ avsave( /* insert and save an ambient value */ AMBVAL *av ) { - avinsert(avstore(av)); + avstore(av); if (ambfp == NULL) return; if (writambval(av, ambfp) < 0) @@ -975,7 +975,7 @@ writerr: static AMBVAL * -avstore( /* allocate memory and store aval */ +avstore( /* allocate memory and save aval */ AMBVAL *aval ) { @@ -993,6 +993,7 @@ avstore( /* allocate memory and store aval */ avsum += log(d); navsum++; } + avinsert(av); /* insert in our cache tree */ return(av); } @@ -1193,8 +1194,8 @@ sortambvals( /* resort ambient values */ if (i_avlist < nambvals) error(CONSISTENCY, "missing ambient values in sortambvals"); #endif - qsort((char *)avlist1, nambvals, sizeof(struct avl), &alatcmp); - qsort((char *)avlist2, nambvals, sizeof(AMBVAL *), &aposcmp); + qsort((char *)avlist1, nambvals, sizeof(struct avl), alatcmp); + qsort((char *)avlist2, nambvals, sizeof(AMBVAL *), aposcmp); for (i = 0; i < nambvals; i++) { if (avlist1[i].p == NULL) continue; @@ -1275,7 +1276,7 @@ ambsync(void) /* synchronize ambient file */ error(WARNING, errmsg); break; } - avinsert(avstore(&avs)); + avstore(&avs); n -= AMBVALSIZ; } lastpos = flen - n;