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

Comparing ray/src/cv/bsdf2klems.c (file contents):
Revision 2.8 by greg, Fri Aug 2 20:56:19 2013 UTC vs.
Revision 2.9 by greg, Sun Aug 11 14:32:34 2013 UTC

# Line 154 | Line 154 | static void
154   eval_bsdf(const char *fname)
155   {
156          ANGLE_BASIS     *abp = get_basis(kbasis);
157        float           *trans_mtx = NULL;
157          SDData          bsd;
158          SDError         ec;
159          FVECT           vin, vout;
# Line 210 | Line 209 | eval_bsdf(const char *fname)
209          }
210                                                  /* front transmission */
211          if (bsd.tf != NULL || bsd.tLamb.cieY > .002) {
213            if (bsd.tb == NULL)
214                trans_mtx = (float *)malloc(sizeof(float) *
215                                                abp->nangles*abp->nangles);
212              input_orient = 1; output_orient = -1;
213              data_prologue();
214              for (j = 0; j < abp->nangles; j++) {
# Line 227 | Line 223 | eval_bsdf(const char *fname)
223                          sum += sv.cieY;
224                      }
225                      printf("\t%.3e\n", sum/npsamps);
230                    if (trans_mtx != NULL)
231                        trans_mtx[j*abp->nangles + i] = sum/npsamps;
226                  }
227                  putchar('\n');                  /* extra space between rows */
228              }
229              data_epilogue();
230          }
231                                                  /* back transmission */
232 <        if (bsd.tb != NULL || trans_mtx != NULL) {
239 <            if (bsd.tf == NULL)
240 <                trans_mtx = (float *)malloc(sizeof(float) *
241 <                                                abp->nangles*abp->nangles);
232 >        if ((bsd.tb != NULL) | (bsd.tf != NULL)) {
233              input_orient = -1; output_orient = 1;
234              data_prologue();
235              for (j = 0; j < abp->nangles; j++) {
236 <                for (i = 0; i < abp->nangles; i++)
237 <                    if (bsd.tb != NULL) {       /* use tb if we have it */
238 <                        sum = 0;                /* average over patches */
239 <                        for (n = npsamps; n-- > 0; ) {
240 <                            fo_getvec(vout, j+(n+frandom())/npsamps, abp);
241 <                            bi_getvec(vin, i+urand(n), abp);
242 <                            ec = SDevalBSDF(&sv, vout, vin, &bsd);
252 <                            if (ec != SDEnone)
236 >                for (i = 0; i < abp->nangles; i++) {
237 >                    sum = 0;            /* average over patches */
238 >                    for (n = npsamps; n-- > 0; ) {
239 >                        fo_getvec(vout, j+(n+frandom())/npsamps, abp);
240 >                        bi_getvec(vin, i+urand(n), abp);
241 >                        ec = SDevalBSDF(&sv, vout, vin, &bsd);
242 >                        if (ec != SDEnone)
243                                  goto err;
244 <                            sum += sv.cieY;
255 <                        }
256 <                        printf("\t%.3e\n", sum/npsamps);
257 <                        if (trans_mtx != NULL)
258 <                            trans_mtx[i*abp->nangles + j] = sum/npsamps;
259 <                    } else {                    /* else transpose tf */
260 <                        printf("\t%.3e\n", trans_mtx[i*abp->nangles + j]);
244 >                        sum += sv.cieY;
245                      }
246 +                    printf("\t%.3e\n", sum/npsamps);
247 +                }
248                  putchar('\n');                  /* extra space between rows */
249              }
250              data_epilogue();
251          }
266                                                /* derived front transmission */
267        if (bsd.tf == NULL && trans_mtx != NULL) {
268            input_orient = 1; output_orient = -1;
269            data_prologue();
270            for (j = 0; j < abp->nangles; j++) {
271                for (i = 0; i < abp->nangles; i++)
272                    printf("\t%.3e\n", trans_mtx[j*abp->nangles + i]);
273                putchar('\n');                  /* extra space between rows */
274            }
275            data_epilogue();
276        }
252          SDfreeBSDF(&bsd);                       /* all done */
278        if (trans_mtx != NULL)
279                free(trans_mtx);
253          return;
254   err:
255          SDreportError(ec, stderr);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines