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

Comparing ray/src/rt/pmapmat.h (file contents):
Revision 2.7 by rschregle, Wed Jul 29 18:54:20 2015 UTC vs.
Revision 2.13 by rschregle, Mon Feb 4 18:20:27 2019 UTC

# Line 1 | Line 1
1 + /* RCSid $Id$ */
2   /*
3 <   ==================================================================
3 >   ======================================================================
4     Photon map support routines for scattering by materials.
5    
6     Roland Schregle (roland.schregle@{hslu.ch, gmail.com})
7     (c) Fraunhofer Institute for Solar Energy Systems,
8     (c) Lucerne University of Applied Sciences and Arts,
9 <   supported by the Swiss National Science Foundation (SNSF, #147053)
10 <   ==================================================================
9 >       supported by the Swiss National Science Foundation (SNSF, #147053)
10 >   ======================================================================
11    
11   $Id$
12   */
13  
14  
# Line 20 | Line 20
20     /*
21        Check for paths already accounted for in photon map to avoid
22        double-counting during backward raytracing.
23 <    
23 >      
24 >      ambRayInPmap():      Check for DIFFUSE -> (DIFFUSE|SPECULAR) -> *  
25 >                           subpaths.  These occur during the backward pass      
26 >                           when an ambient ray spawns an indirect diffuse or    
27 >                           specular ray.  These subpaths are already    
28 >                           accounted for in the global photon map.
29 >   */
30 >   #define ambRayInPmap(r) ((r) -> crtype & AMBIENT && photonMapping && \
31 >                              (ambounce < 0 || (r) -> rlvl > 1))
32 >
33 >   /*
34        shadowRayInPmap():   Check for DIFFUSE -> SPECULAR -> LIGHT
35                             subpaths. These occur during the backward pass
36                             when a shadow ray is transferred through a
37                             transparent material. These subpaths are already
38                             accounted for by caustic photons in the global,
39                             contrib, or dedicated caustic photon map.
40 +      
41 +      !!! DISABLED FOR TESTING PENDING REPLACEMENT BY srcRayInPmap() !!!                          
42     */
43 < /*
44 <   #define ambRayInPmap(r)    ((r) -> crtype & AMBIENT && \
45 <                               ((photonMapping && \
46 <                                 (ambounce < 0 || (r) -> rlvl > 1)) || \
47 <                                 causticPhotonMapping || contribPhotonMapping))
48 < */
49 <   #define ambRayInPmap(r)    0
50 <   #define shadowRayInPmap(r) ((r) -> crtype & SHADOW && \
51 <                                (ambounce < 0 || ((r) -> crtype & AMBIENT ? \
52 <                                        photonMapping : causticPhotonMapping)))
53 <  
54 <   /* Check if scattered ray spawns a caustic photon */
55 <   #define PMAP_CAUSTICRAY(r) ((r) -> rtype & SPECULAR)
43 > #if 1
44 >   #define shadowRayInPmap(r) 0
45 > #else  
46 >   #define shadowRayInPmap(r) (((globalPmap && ambounce < 0) || \
47 >                                 causticPmap || contribPmap) && \
48 >                                 (r) -> crtype & SHADOW)
49 > #endif
50 >
51 >   /* srcRayInPmap():      Check whether a source ray transferred through
52 >    *                      medium (e.g.  glass/dielectric) is already
53 >    *                      accounted for in the photon map.  This is used by
54 >    *                      badcomponent() in source.c when checking source
55 >    *                      hits (glows and lights, hence ambient and shadow
56 >    *                      rays).
57 >    */
58 >   #define srcRayInPmap(r)    (((globalPmap && ambounce < 0) || \
59 >                                 causticPmap || contribPmap) && \
60 >                                 (r) -> crtype & (AMBIENT | SHADOW) && \
61 >                                 (r) -> rtype & (TRANS | REFRACTED))
62 >
63 >   /* Check if scattered ray spawns a caustic photon;
64 >    * !!! NOTE this returns a single bit as boolean value (0|1), rather
65 >    * !!! than the original short int, hence the explicit test against zero.
66 >    * !!! This allows the macro the be used in a conditional statement
67 >    * !!! and when setting a photon's caustic flag in newPhoton(). */
68 >   #define PMAP_CAUSTICRAY(r)    (((r) -> rtype & SPECULAR) != 0)
69  
70  
71     /* Scattered photon ray types for photonRay() */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines