ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/rt/pmap.c
(Generate patch)

Comparing ray/src/rt/pmap.c (file contents):
Revision 2.2 by greg, Tue Apr 21 19:16:51 2015 UTC vs.
Revision 2.7 by greg, Fri May 22 14:09:01 2015 UTC

# Line 4 | Line 4
4  
5     Roland Schregle (roland.schregle@{hslu.ch, gmail.com})
6     (c) Fraunhofer Institute for Solar Energy Systems,
7 <       Lucerne University of Applied Sciences & Arts  
7 >   (c) Lucerne University of Applied Sciences and Arts,
8 >   supported by the Swiss National Science Foundation (SNSF, #147053)
9     ==================================================================
10    
11     $Id$
# Line 64 | Line 65 | void loadPmaps (PhotonMap **pmaps, const PhotonMapPara
65     for (t = 0; t < NUM_PMAP_TYPES; t++)
66        if (setPmapParam(&pm, parm + t)) {        
67           /* Check if photon map newer than octree */
68 <         if (!stat(pm -> fileName, &pmstat) && !stat(octname, &octstat) &&
68 >         if (pm -> fileName && octname &&
69 >             !stat(pm -> fileName, &pmstat) && !stat(octname, &octstat) &&
70               octstat.st_mtime > pmstat.st_mtime) {
71              sprintf(errmsg, "photon map in file %s may be stale",
72                      pm -> fileName);
# Line 99 | Line 101 | void savePmaps (const PhotonMap **pmaps, int argc, cha
101    
102     for (t = 0; t < NUM_PMAP_TYPES; t++) {
103        if (pmaps [t])
104 <         savePhotonMap(pmaps [t], pmaps [t] -> fileName, t, argc, argv);
104 >         savePhotonMap(pmaps [t], pmaps [t] -> fileName, argc, argv);
105     }
106   }                  
107  
# Line 204 | Line 206 | void tracePhoton (RAY *ray)
206     OBJREC* mat;
207  
208     if (ray -> rlvl > photonMaxBounce) {
209 + #ifdef PMAP_RUNAWAY_WARN  
210        error(WARNING, "runaway photon!");
211 + #endif      
212        return;
213     }
214 <  
214 >  
215     if (colorAvg(ray -> cext) > FTINY && !photonParticipate(ray))
216        return;
217        
# Line 263 | Line 267 | static void preComputeGlobal (PhotonMap *pmap)
267    
268     /* Record start time, baby */
269     repStartTime = time(NULL);
270 <   signal(SIGCONT, pmapPreCompReport);
270 >   #ifdef SIGCONT
271 >      signal(SIGCONT, pmapPreCompReport);
272 >   #endif
273     repProgress = 0;
274     memcpy(nuHeap, pmap -> heap, nuHeapSize * sizeof(Photon));
275    
# Line 284 | Line 290 | static void preComputeGlobal (PhotonMap *pmap)
290        
291        if (photonRepTime > 0 && time(NULL) >= repLastTime + photonRepTime)
292           pmapPreCompReport();
293 < #ifndef BSD
294 <      else signal(SIGCONT, pmapPreCompReport);
295 < #endif
293 >      #ifdef SIGCONT
294 >         else signal(SIGCONT, pmapPreCompReport);
295 >      #endif
296     }
297    
298 <   signal(SIGCONT, SIG_DFL);
298 >   #ifdef SIGCONT  
299 >      signal(SIGCONT, SIG_DFL);
300 >   #endif
301    
302     /* Replace & rebuild heap */
303     free(pmap -> heap);
# Line 400 | Line 408 | void distribPhotons (PhotonMap **pmaps)
408  
409     /* Record start time and enable progress report signal handler */
410     repStartTime = time(NULL);
411 <   signal(SIGCONT, pmapDistribReport);
411 >   #ifdef SIGCONT
412 >      signal(SIGCONT, pmapDistribReport);
413 >   #endif
414     repProgress = prePassCnt = 0;
415    
416     if (photonRepTime)
# Line 499 | Line 509 | void distribPhotons (PhotonMap **pmaps)
509        for (srcIdx = 0; srcIdx < nsources; srcIdx++) {
510           unsigned portCnt = 0;
511           emap.src = source + srcIdx;
512 <                  
512 >
513           do {
514              emap.port = emap.src -> sflags & SDISTANT ? photonPorts + portCnt
515                                                        : NULL;
# Line 560 | Line 570 | void distribPhotons (PhotonMap **pmaps)
570                    if (photonRepTime > 0 &&
571                        time(NULL) >= repLastTime + photonRepTime)
572                       pmapDistribReport();
573 <                  #ifndef BSD
573 >                  #ifdef SIGCONT
574                       else signal(SIGCONT, pmapDistribReport);
575                    #endif
576                 }
# Line 590 | Line 600 | void distribPhotons (PhotonMap **pmaps)
600     /* ===================================================================
601      * POST-DISTRIBUTION - Set photon flux and build kd-tree, etc.
602      * =================================================================== */
603 <   signal(SIGCONT, SIG_DFL);
603 >   #ifdef SIGCONT    
604 >      signal(SIGCONT, SIG_DFL);
605 >   #endif
606     free(emap.samples);
607    
608     /* Set photon flux (repProgress is total num emitted) */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines