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

Comparing ray/src/rt/pmapcontrib.c (file contents):
Revision 2.6 by greg, Wed May 20 13:43:28 2015 UTC vs.
Revision 2.10 by greg, Tue Sep 1 16:27:52 2015 UTC

# Line 1 | Line 1
1 + #ifndef lint
2 + static const char RCSid[] = "$Id$";
3 + #endif
4   /*
5     ==================================================================
6     Photon map support for light source contributions
# Line 7 | Line 10
10     supported by the Swiss National Science Foundation (SNSF, #147053)
11     ==================================================================
12    
10   $Id$
13   */
14  
15  
# Line 51 | Line 53 | static void checkPmapContribs (const PhotonMap *pmap,
53        if (primary -> srcIdx < 0 || primary -> srcIdx >= nsources)
54           error(INTERNAL, "invalid light source index in photon map");
55          
56 <      srcMod = objptr(source [primary -> srcIdx].so -> omod);
56 >      srcMod = findmaterial(source [primary -> srcIdx].so);
57        if ((MODCONT*)lu_find(srcContrib, srcMod -> oname) -> data)
58           ++found;
59     }
# Line 154 | Line 156 | void photonContrib (PhotonMap *pmap, RAY *ray, COLOR i
156        if (pmap -> srcContrib) {
157           const PhotonPrimary *primary = pmap -> primary +
158                                          sq -> photon -> primary;
159 <         SRCREC *sp = &source[primary -> srcIdx];
160 <         OBJREC *srcMod = objptr(sp -> so -> omod);
159 >         const SRCREC *sp = &source[primary -> srcIdx];
160 >         OBJREC *srcMod = findmaterial(sp -> so);
161           MODCONT *srcContrib = (MODCONT*)lu_find(pmap -> srcContrib,
162                                                   srcMod -> oname) -> data;
163           if (!srcContrib)
# Line 174 | Line 176 | void photonContrib (PhotonMap *pmap, RAY *ray, COLOR i
176              rayorigin(&srcRay, SHADOW, NULL, NULL);
177              srcRay.rsrc = primary -> srcIdx;
178              VCOPY(srcRay.rorg, primary -> pos);
179 <            VCOPY(srcRay.rdir, primary -> dir);
180 <            if (!(source [primary -> srcIdx].sflags & SDISTANT ?
181 <                        sourcehit(&srcRay) :
182 <                        (*ofun[sp -> so -> otype].funp)(sp -> so, &srcRay)))
179 >            decodedir(srcRay.rdir, primary -> dir);
180 >
181 >            if (!(sp->sflags & SDISTANT ? sourcehit(&srcRay)
182 >                        : (*ofun[sp -> so -> otype].funp)(sp -> so, &srcRay)))
183                  continue;               /* XXX shouldn't happen! */
184 +
185              worldfunc(RCCONTEXT, &srcRay);
186              set_eparams((char *)srcContrib -> params);
187           }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines