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.9 by greg, Tue Aug 18 18:45:55 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 51 | Line 54 | static void checkPmapContribs (const PhotonMap *pmap,
54        if (primary -> srcIdx < 0 || primary -> srcIdx >= nsources)
55           error(INTERNAL, "invalid light source index in photon map");
56          
57 <      srcMod = objptr(source [primary -> srcIdx].so -> omod);
57 >      srcMod = findmaterial(source [primary -> srcIdx].so);
58        if ((MODCONT*)lu_find(srcContrib, srcMod -> oname) -> data)
59           ++found;
60     }
# Line 154 | Line 157 | void photonContrib (PhotonMap *pmap, RAY *ray, COLOR i
157        if (pmap -> srcContrib) {
158           const PhotonPrimary *primary = pmap -> primary +
159                                          sq -> photon -> primary;
160 <         SRCREC *sp = &source[primary -> srcIdx];
161 <         OBJREC *srcMod = objptr(sp -> so -> omod);
160 >         const SRCREC *sp = &source[primary -> srcIdx];
161 >         OBJREC *srcMod = findmaterial(sp -> so);
162           MODCONT *srcContrib = (MODCONT*)lu_find(pmap -> srcContrib,
163                                                   srcMod -> oname) -> data;
164           if (!srcContrib)
# Line 174 | Line 177 | void photonContrib (PhotonMap *pmap, RAY *ray, COLOR i
177              rayorigin(&srcRay, SHADOW, NULL, NULL);
178              srcRay.rsrc = primary -> srcIdx;
179              VCOPY(srcRay.rorg, primary -> pos);
180 <            VCOPY(srcRay.rdir, primary -> dir);
181 <            if (!(source [primary -> srcIdx].sflags & SDISTANT ?
182 <                        sourcehit(&srcRay) :
183 <                        (*ofun[sp -> so -> otype].funp)(sp -> so, &srcRay)))
180 >            decodedir(srcRay.rdir, primary -> dir);
181 >
182 >            if (!(sp->sflags & SDISTANT ? sourcehit(&srcRay)
183 >                        : (*ofun[sp -> so -> otype].funp)(sp -> so, &srcRay)))
184                  continue;               /* XXX shouldn't happen! */
185 +
186              worldfunc(RCCONTEXT, &srcRay);
187              set_eparams((char *)srcContrib -> params);
188           }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines