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

Comparing ray/src/rt/aniso.c (file contents):
Revision 2.25 by greg, Thu May 27 15:27:57 1993 UTC vs.
Revision 2.28 by greg, Wed Dec 21 09:51:44 1994 UTC

# Line 19 | Line 19 | static char SCCSid[] = "$SunId$ LBL";
19   extern double  specthresh;              /* specular sampling threshold */
20   extern double  specjitter;              /* specular sampling jitter */
21  
22 < static  agaussamp();
22 > extern int  backvis;                    /* back faces visible? */
23  
24 + static  agaussamp(), getacoords();
25 +
26   /*
27   *      This routine implements the anisotropic Gaussian
28   *  model described by Ward in Siggraph `92 article.
# Line 185 | Line 187 | register RAY  *r;
187          register int  i;
188                                                  /* easy shadow test */
189          if (r->crtype & SHADOW)
190 <                return;
190 >                return(1);
191  
192          if (m->oargs.nfargs != (m->otype == MAT_TRANS2 ? 8 : 6))
193                  objerror(m, USER, "bad number of real arguments");
# Line 201 | Line 203 | register RAY  *r;
203          nd.v_alpha = m->oargs.farg[5];
204          if (nd.u_alpha < FTINY || nd.v_alpha <= FTINY)
205                  objerror(m, USER, "roughness too small");
206 <                                                /* reorient if necessary */
207 <        if (r->rod < 0.0)
208 <                flipsurface(r);
206 >                                                /* check for back side */
207 >        if (r->rod < 0.0) {
208 >                if (!backvis && m->otype != MAT_TRANS2) {
209 >                        raytrans(r);
210 >                        return(1);
211 >                }
212 >                flipsurface(r);                 /* reorient if backvis */
213 >        }
214                                                  /* get modifiers */
215          raytexture(r, m->omod);
216          nd.pdot = raynormal(nd.pnorm, r);       /* perturb normal */
# Line 287 | Line 294 | register RAY  *r;
294          }
295                                          /* add direct component */
296          direct(r, diraniso, &nd);
297 +
298 +        return(1);
299   }
300  
301  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines