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.21 by greg, Fri Sep 21 05:53:21 2007 UTC vs.
Revision 2.22 by greg, Sun Sep 30 19:05:26 2007 UTC

# Line 184 | Line 184 | my_face(               /* make an illum face */
184                  return(my_default(ob, il, nm));
185          }
186                                  /* set up sampling */
187        if (il->sampdens <= 0) {
188                nalt = nazi = 1;        /* diffuse assumption */
189        } else {
190                n = PI * il->sampdens;
191                nalt = sqrt(n/PI) + .5;
192                nazi = PI*nalt + .5;
193        }
187          if (il->sd != NULL) {
188                  if (!getBSDF_xfm(xfm, fa->norm, il->udir)) {
189                          objerror(ob, WARNING, "illegal up direction");
# Line 198 | Line 191 | my_face(               /* make an illum face */
191                          return(my_default(ob, il, nm));
192                  }
193                  n = il->sd->ninc;
194 <        } else
194 >        } else {
195 >                if (il->sampdens <= 0) {
196 >                        nalt = nazi = 1;        /* diffuse assumption */
197 >                } else {
198 >                        n = PI * il->sampdens;
199 >                        nalt = sqrt(n/PI) + .5;
200 >                        nazi = PI*nalt + .5;
201 >                }
202                  n = nazi*nalt;
203 +        }
204          newdist(n);
205                                  /* take first edge >= sqrt(area) */
206          for (j = fa->nv-1, i = 0; i < fa->nv; j = i++) {
# Line 270 | Line 271 | my_face(               /* make an illum face */
271                      raysamp(dim[1], org, dir);
272                  }
273          rayclean();
274 <        if (il->sd != NULL)     /* run distribution through BSDF */
274 >        if (il->sd != NULL) {   /* run distribution through BSDF */
275 >                nalt = sqrt(il->sd->nout/PI) + .5;
276 >                nazi = PI*nalt + .5;
277                  redistribute(il->sd, nalt, nazi, u, v, fa->norm, xfm);
278 +        }
279                                  /* write out the face and its distribution */
280          if (average(il, distarr, n)) {
281                  if (il->sampdens > 0)
# Line 374 | Line 378 | my_ring(               /* make an illum ring */
378                                  /* get/check arguments */
379          co = getcone(ob, 0);
380                                  /* set up sampling */
377        if (il->sampdens <= 0)
378                nalt = nazi = 1;
379        else {
380                n = PI * il->sampdens;
381                nalt = sqrt(n/PI) + .5;
382                nazi = PI*nalt + .5;
383        }
381          if (il->sd != NULL) {
382                  if (!getBSDF_xfm(xfm, co->ad, il->udir)) {
383                          objerror(ob, WARNING, "illegal up direction");
# Line 388 | Line 385 | my_ring(               /* make an illum ring */
385                          return(my_default(ob, il, nm));
386                  }
387                  n = il->sd->ninc;
388 <        } else
388 >        } else {
389 >                if (il->sampdens <= 0) {
390 >                        nalt = nazi = 1;        /* diffuse assumption */
391 >                } else {
392 >                        n = PI * il->sampdens;
393 >                        nalt = sqrt(n/PI) + .5;
394 >                        nazi = PI*nalt + .5;
395 >                }
396                  n = nazi*nalt;
397 +        }
398          newdist(n);
399          mkaxes(u, v, co->ad);
400          dim[0] = random();
# Line 428 | Line 433 | my_ring(               /* make an illum ring */
433                      raysamp(dim[1], org, dir);
434                  }
435          rayclean();
436 <        if (il->sd != NULL)     /* run distribution through BSDF */
436 >        if (il->sd != NULL) {   /* run distribution through BSDF */
437 >                nalt = sqrt(il->sd->nout/PI) + .5;
438 >                nazi = PI*nalt + .5;
439                  redistribute(il->sd, nalt, nazi, u, v, co->ad, xfm);
440 +        }
441                                  /* write out the ring and its distribution */
442          if (average(il, distarr, n)) {
443                  if (il->sampdens > 0)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines