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

Comparing ray/src/rt/m_brdf.c (file contents):
Revision 2.9 by greg, Thu Nov 18 09:43:04 1993 UTC vs.
Revision 2.11 by greg, Wed Dec 21 09:51:46 1994 UTC

# Line 16 | Line 16 | static char SCCSid[] = "$SunId$ LBL";
16  
17   #include  "func.h"
18  
19 + extern int  backvis;                    /* back faces visible? */
20 +
21   /*
22   *      Arguments to this material include the color and specularity.
23   *  String arguments include the reflection function and files.
# Line 268 | Line 270 | register RAY  *r;
270                  transdist = r->rot + sr.rt;
271          }
272          if (r->crtype & SHADOW)                 /* the rest is shadow */
273 <                return;
273 >                return(1);
274                                                  /* compute reflected ray */
275          setbrdfunc(&nd);
276          errno = 0;
# Line 308 | Line 310 | register RAY  *r;
310                                                  /* check distance */
311          if (transtest > bright(r->rcol))
312                  r->rt = transdist;
313 +
314 +        return(1);
315   }
316  
317  
# Line 321 | Line 325 | register RAY  *r;
325          double  dtmp;
326                                                  /* always a shadow */
327          if (r->crtype & SHADOW)
328 <                return;
328 >                return(1);
329                                                  /* check arguments */
330          if (m->oargs.nsargs < (hasdata(m->otype)?4:2) | m->oargs.nfargs <
331                          (m->otype==MAT_TFUNC|m->otype==MAT_TDATA?6:4))
# Line 347 | Line 351 | register RAY  *r;
351                                                  /* compute reflectance */
352          dtmp = 1.0 - nd.trans - nd.rspec;
353          setcolor(nd.rdiff, dtmp, dtmp, dtmp);
354 <                                                /* fix orientation */
355 <        if (r->rod < 0.0)
356 <                flipsurface(r);
354 >                                                /* check for back side */
355 >        if (r->rod < 0.0) {
356 >                if (!backvis && m->otype != MAT_TFUNC
357 >                                && m->otype != MAT_TDATA) {
358 >                        raytrans(r);
359 >                        return(1);
360 >                }
361 >                flipsurface(r);                 /* reorient if backvis */
362 >        }
363                                                  /* get modifiers */
364          raytexture(r, m->omod);
365          nd.pdot = raynormal(nd.pnorm, r);       /* perturb normal */
# Line 381 | Line 391 | register RAY  *r;
391          }
392                                                  /* add direct component */
393          direct(r, dirbrdf, &nd);
394 +
395 +        return(1);
396   }
397  
398  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines