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

Comparing ray/src/rt/m_bsdf.c (file contents):
Revision 2.25 by greg, Wed Jan 22 16:39:57 2014 UTC vs.
Revision 2.30 by greg, Wed Sep 2 18:59:01 2015 UTC

# Line 13 | Line 13 | static const char RCSid[] = "$Id$";
13   #include  "func.h"
14   #include  "bsdf.h"
15   #include  "random.h"
16 + #include  "pmapmat.h"
17  
18   /*
19   *      Arguments to this material include optional diffuse colors.
# Line 200 | Line 201 | dir_bsdf(
201                  scalecolor(ctmp, dtmp);
202                  addcolor(cval, ctmp);
203          }
204 +        if (ambRayInPmap(np->pr))
205 +                return;         /* specular already in photon map */
206          /*
207           *  Compute scattering coefficient using BSDF.
208           */
# Line 255 | Line 258 | dir_brdf(
258                  scalecolor(ctmp, dtmp);
259                  addcolor(cval, ctmp);
260          }
261 +        if (ambRayInPmap(np->pr))
262 +                return;         /* specular already in photon map */
263          /*
264           *  Compute reflection coefficient using BSDF.
265           */
# Line 304 | Line 309 | dir_btdf(
309                  scalecolor(ctmp, dtmp);
310                  addcolor(cval, ctmp);
311          }
312 +        if (ambRayInPmap(np->pr))
313 +                return;         /* specular already in photon map */
314          /*
315           *  Compute scattering coefficient using BSDF.
316           */
# Line 457 | Line 464 | m_bsdf(OBJREC *m, RAY *r)
464                          raytrans(r);            /* pass-through */
465                  return(1);                      /* or shadow */
466          }
467 +                                                /* check backface visibility */
468 +        if (!hitfront & !backvis) {
469 +                raytrans(r);
470 +                return(1);
471 +        }
472                                                  /* check other rays to pass */
473          if (nd.thick != 0 && (!(r->crtype & (SPECULAR|AMBIENT)) ||
474 <                                nd.thick > 0 ^ hitfront)) {
474 >                                (nd.thick > 0) ^ hitfront)) {
475                  raytrans(r);                    /* hide our proxy */
476                  return(1);
477          }
# Line 474 | Line 486 | m_bsdf(OBJREC *m, RAY *r)
486                                          m->oargs.farg[1],
487                                          m->oargs.farg[2]);
488          } else {
489 <                if (m->oargs.nfargs < 6) {      /* check invisible backside */
478 <                        if (!backvis && (nd.sd->rb == NULL) &
479 <                                        (nd.sd->tb == NULL)) {
480 <                                SDfreeCache(nd.sd);
481 <                                raytrans(r);
482 <                                return(1);
483 <                        }
489 >                if (m->oargs.nfargs < 6)
490                          setcolor(nd.rdiff, .0, .0, .0);
491 <                } else
491 >                else
492                          setcolor(nd.rdiff, m->oargs.farg[3],
493                                          m->oargs.farg[4],
494                                          m->oargs.farg[5]);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines