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.65 by greg, Thu Dec 5 19:23:43 2024 UTC vs.
Revision 2.68 by greg, Fri Dec 20 16:29:50 2024 UTC

# Line 118 | Line 118 | diraniso(              /* compute source contribution */
118                   */
119                                                  /* add source width if flat */
120                  if (np->specfl & SP_FLAT)
121 <                        au2 = av2 = omega * (0.25/PI);
121 >                        au2 = av2 = (1. - dstrsrc) * omega * (0.25/PI);
122                  else
123                          au2 = av2 = 0.0;
124                  au2 += np->u_alpha*np->u_alpha;
# Line 160 | Line 160 | diraniso(              /* compute source contribution */
160                  if (dtmp > FTINY*FTINY) {
161                          dtmp1 = DOT(h,np->pnorm);
162                          dtmp = 1.0 - dtmp1*dtmp1/dtmp;
163 <                        if (dtmp > FTINY*FTINY) {
164 <                                dtmp1 = DOT(h,np->u);
165 <                                dtmp1 *= dtmp1 / au2;
166 <                                dtmp2 = DOT(h,np->v);
167 <                                dtmp2 *= dtmp2 / av2;
168 <                                dtmp = (dtmp1 + dtmp2) / dtmp;
169 <                        }
163 >                }
164 >                if (dtmp > FTINY*FTINY) {
165 >                        dtmp1 = DOT(h,np->u);
166 >                        dtmp1 *= dtmp1 / au2;
167 >                        dtmp2 = DOT(h,np->v);
168 >                        dtmp2 *= dtmp2 / av2;
169 >                        dtmp = (dtmp1 + dtmp2) / dtmp;
170 >                        dtmp = exp(-dtmp);
171                  } else
172 <                        dtmp = 0.0;
172 >                        dtmp = 1.0;
173                                                  /* Gaussian */
174 <                dtmp = exp(-dtmp) * (1.0/PI) * sqrt(-ldot/(np->pdot*au2*av2));
174 >                dtmp *= (1.0/PI) * sqrt(-ldot/(np->pdot*au2*av2));
175                                                  /* worth using? */
176                  if (dtmp > FTINY) {
177                          copyscolor(sctmp, np->mcolor);
# Line 264 | Line 265 | m_aniso(                       /* shade ray that hit something anisotropic
265                                                  /* diffuse reflection */
266          nd.rdiff = 1.0 - nd.trans - nd.rspec;
267  
268 <        if (r->ro != NULL && isflat(r->ro->otype))
268 >        if (r->ro != NULL && isflat(r->ro->otype) &&
269 >                        DOT(r->pert,r->pert) <= FTINY*FTINY)
270                  nd.specfl |= SP_FLAT;
271  
272          getacoords(&nd);                        /* set up coordinates */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines