| 1 |  | #ifndef lint | 
| 2 | < | static const char       RCSid[] = "$Id$"; | 
| 2 | > | static const char RCSid[] = "$Id$"; | 
| 3 |  | #endif | 
| 4 |  | /* | 
| 5 |  | *  source.c - routines dealing with illumination sources. | 
| 54 |  | /* initialize dispatch table */ | 
| 55 |  | initstypes(); | 
| 56 |  | /* find direct sources */ | 
| 57 | < | for (i = 0; i < nobjects; i++) { | 
| 57 | > | for (i = 0; i < nsceneobjs; i++) { | 
| 58 |  |  | 
| 59 |  | o = objptr(i); | 
| 60 |  |  | 
| 250 |  | for (i = 0; i < 3; i++) | 
| 251 |  | r->ron[i] = -r->rdir[i]; | 
| 252 |  | r->rod = 1.0; | 
| 253 | + | r->pert[0] = r->pert[1] = r->pert[2] = 0.0; | 
| 254 | + | r->uv[0] = r->uv[1] = 0.0; | 
| 255 |  | r->rox = NULL; | 
| 256 |  | return(1); | 
| 257 |  | } | 
| 293 |  | for (sn = 0; srcray(&sr, r, &si); sn++) { | 
| 294 |  | if (sn >= maxcntr) { | 
| 295 |  | maxcntr = sn + MAXSPART; | 
| 296 | < | srccnt = (CONTRIB *)realloc((char *)srccnt, | 
| 296 | > | srccnt = (CONTRIB *)realloc((void *)srccnt, | 
| 297 |  | maxcntr*sizeof(CONTRIB)); | 
| 298 | < | cntord = (CNTPTR *)realloc((char *)cntord, | 
| 298 | > | cntord = (CNTPTR *)realloc((void *)cntord, | 
| 299 |  | maxcntr*sizeof(CNTPTR)); | 
| 300 |  | if (srccnt == NULL | cntord == NULL) | 
| 301 |  | error(SYSTEM, "out of memory in direct"); | 
| 355 |  | rayorigin(&sr, r, SHADOW, 1.0); | 
| 356 |  | VCOPY(sr.rdir, scp->dir); | 
| 357 |  | sr.rsrc = scp->sno; | 
| 358 | < | source[scp->sno].ntests++;      /* keep statistics */ | 
| 358 | > | /* keep statistics */ | 
| 359 | > | if (source[scp->sno].ntests++ > 0xfffffff0) { | 
| 360 | > | source[scp->sno].ntests >>= 1; | 
| 361 | > | source[scp->sno].nhits >>= 1; | 
| 362 | > | } | 
| 363 |  | if (localhit(&sr, &thescene) && | 
| 364 |  | ( sr.ro != source[scp->sno].so || | 
| 365 |  | source[scp->sno].sflags & SFOLLOW )) { |