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

Comparing ray/src/gen/mkillum2.c (file contents):
Revision 2.40 by greg, Thu May 21 05:54:54 2015 UTC vs.
Revision 2.41 by greg, Thu Sep 15 22:34:41 2016 UTC

# Line 92 | Line 92 | void
92   srcsamps(                       /* sample sources from this surface position */
93          struct illum_args *il,
94          FVECT org,
95 <        FVECT nrm,
95 >        double eps,
96          MAT4 ixfm
97   )
98   {
# Line 111 | Line 111 | srcsamps(                      /* sample sources from this surface positi
111          initsrcindex(&si);                      /* loop over (sub)sources */
112          for ( ; ; ) {
113                  VCOPY(sr.rorg, org);            /* pick side to shoot from */
114                d = 5.*FTINY;
115                VSUM(sr.rorg, sr.rorg, nrm, d);
114                  samplendx++;                    /* increment sample counter */
115                  if (!srcray(&sr, NULL, &si))
116                          break;                  /* end of sources */
# Line 122 | Line 120 | srcsamps(                      /* sample sources from this surface positi
120                  else
121                          VCOPY(v, sr.rdir);
122                  if (v[2] >= -FTINY)
123 <                        continue;       /* only sample transmission */
123 >                        continue;               /* only sample transmission */
124                  v[0] = -v[0]; v[1] = -v[1]; v[2] = -v[2];
125                  sr.rno = flatindex(v, nalt, nazi);
126                  d = nalt*nazi*(1./PI) * v[2];
127                  d *= si.dom;                    /* solid angle correction */
128                  scalecolor(sr.rcoef, d);
129 +                VSUM(sr.rorg, sr.rorg, sr.rdir, -eps);
130                  process_ray(&sr, ray_pqueue(&sr));
131          }
132   }
# Line 238 | Line 237 | my_face(               /* make an illum face */
237          FVECT  dn, org, dir;
238          FVECT  u, v;
239          double  ur[2], vr[2];
240 +        double  epsilon;
241          MAT4  xfm;
242          char  xfrot[64];
243          int  nallow;
# Line 287 | Line 287 | my_face(               /* make an illum face */
287          dim[0] = random();
288                                  /* sample polygon */
289          nallow = 5*n*il->nsamps;
290 +        epsilon = .005*sqrt(fa->area);
291          for (dim[1] = 0; dim[1] < n; dim[1]++)
292                  for (i = 0; i < il->nsamps; i++) {
293                                          /* randomize direction */
# Line 314 | Line 315 | my_face(               /* make an illum face */
315                          freeface(ob);
316                          return(my_default(ob, il, nm));
317                      }
318 <                    r1 = 5.*FTINY;
318 <                    for (j = 0; j < 3; j++)
319 <                        org[j] += r1*fa->norm[j];
318 >                    VSUM(org, org, dir, -epsilon);
319                                          /* send sample */
320                      raysamp(dim[1], org, dir);
321                  }
# Line 351 | Line 350 | my_face(               /* make an illum face */
350                          return(my_default(ob, il, nm));
351                      }
352                                          /* sample source rays */
353 <                    srcsamps(il, org, fa->norm, ixfm);
353 >                    srcsamps(il, org, epsilon, ixfm);
354                  }
355          }
356                                  /* wait for all rays to finish */
# Line 518 | Line 517 | my_ring(               /* make an illum ring */
517                      for (j = 0; j < 3; j++)
518                          org[j] = CO_P0(co)[j] + r1*u[j] + r2*v[j];
519                                          /* sample source rays */
520 <                    srcsamps(il, org, co->ad, ixfm);
520 >                    srcsamps(il, org, 5.*FTINY, ixfm);
521                  }
522          }
523                                  /* wait for all rays to finish */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines