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

Comparing ray/src/cv/bsdf2ttree.c (file contents):
Revision 2.56 by greg, Fri Nov 13 19:21:11 2020 UTC vs.
Revision 2.64 by greg, Sat Jun 7 05:09:45 2025 UTC

# Line 12 | Line 12 | static const char RCSid[] = "$Id$";
12   #include <math.h>
13   #include <ctype.h>
14   #include "random.h"
15 #include "platform.h"
16 #include "paths.h"
15   #include "rtio.h"
16   #include "calcomp.h"
17   #include "bsdfrep.h"
20                                /* global argv[0] */
21 char                    *progname;
18                                  /* reciprocity averaging option */
19 < static const char       *recip = " -a";
19 > static const char       *recip = "";
20                                  /* percentage to cull (<0 to turn off) */
21   static double           pctcull = 90.;
22                                  /* sampling order */
# Line 28 | Line 24 | static int             samp_order = 6;
24                                  /* super-sampling threshold */
25   static double           ssamp_thresh = 0.35;
26                                  /* number of super-samples */
27 < static int              nssamp = 256;
27 > static int              nssamp = 64;
28                                  /* limit on number of RBF lobes */
29   static int              lobe_lim = 15000;
30                                  /* progress bar length */
# Line 135 | Line 131 | eval_isotropic(char *funame)
131          int             assignD = 0;
132          char            cmd[128];
133          int             ix, ox, oy;
134 <        double          iovec[6];
134 >        RREAL           iovec[6];
135          float           bsdf, uv[2];
136  
137          if (pctcull >= 0) {
# Line 208 | Line 204 | eval_isotropic(char *funame)
204                          rbf = advect_rbf(iovec, lobe_lim);
205                                                  /* presample first row */
206                  for (oy = 0; oy < sqres; oy++) {
207 <                    SDsquare2disk(iovec+3, .5*sqfact, (oy+.5)*sqfact);
207 >                    square2disk(iovec+3, .5*sqfact, (oy+.5)*sqfact);
208                      iovec[5] = output_orient *
209                                  sqrt(1. - iovec[3]*iovec[3] - iovec[4]*iovec[4]);
210                      if (funame == NULL) {
# Line 230 | Line 226 | eval_isotropic(char *funame)
226                       */
227                      for (oy = 0; oy < sqres; oy++) {
228                          if (ox < sqres-1) {     /* keeping one row ahead... */
229 <                            SDsquare2disk(iovec+3, (ox+1.5)*sqfact, (oy+.5)*sqfact);
229 >                            square2disk(iovec+3, (ox+1.5)*sqfact, (oy+.5)*sqfact);
230                              iovec[5] = output_orient *
231                                  sqrt(1. - iovec[3]*iovec[3] - iovec[4]*iovec[4]);
232                          }
# Line 250 | Line 246 | eval_isotropic(char *funame)
246                                  for (ssi = nssamp; ssi--; ) {
247                                      SDmultiSamp(ssa, 2, (ssi+frandom()) /
248                                                          (double)nssamp);
249 <                                    SDsquare2disk(iovec+3, (ox+ssa[0])*sqfact,
249 >                                    square2disk(iovec+3, (ox+ssa[0])*sqfact,
250                                                          (oy+ssa[1])*sqfact);
251                                      iovec[5] = output_orient *
252                                          sqrt(1. - iovec[3]*iovec[3] - iovec[4]*iovec[4]);
# Line 268 | Line 264 | eval_isotropic(char *funame)
264                                      uv[0] = usum / (sum+FTINY);
265                                      uv[1] = vsum / (sum+FTINY);
266                                  }
267 <                            } else
272 <                            if (rbf_colorimetry == RBCtristimulus) {
267 >                            } else if (rbf_colorimetry == RBCtristimulus) {
268                                  uv[0] = uv[1] = 1. /
269                                      (-2.*sdv.spec.cx + 12.*sdv.spec.cy + 3.);
270                                  uv[0] *= 4.*sdv.spec.cx;
# Line 306 | Line 301 | eval_isotropic(char *funame)
301                                          ssvec[2] = 1. - ssvec[0]*ssvec[0];
302                                      }
303                                      ssvec[2] = input_orient * sqrt(ssvec[2]);
304 <                                    SDsquare2disk(ssvec+3, (ox+ssa[2])*sqfact,
304 >                                    square2disk(ssvec+3, (ox+ssa[2])*sqfact,
305                                                  (oy+ssa[3])*sqfact);
306                                      ssvec[5] = output_orient *
307                                                  sqrt(1. - ssvec[3]*ssvec[3] -
# Line 400 | Line 395 | eval_anisotropic(char *funame)
395          int             assignD = 0;
396          char            cmd[128];
397          int             ix, iy, ox, oy;
398 <        double          iovec[6];
398 >        RREAL           iovec[6];
399          float           bsdf, uv[2];
400  
401          if (pctcull >= 0) {
# Line 470 | Line 465 | eval_anisotropic(char *funame)
465          for (ix = 0; ix < sqres; ix++)
466              for (iy = 0; iy < sqres; iy++) {
467                  RBFNODE *rbf = NULL;            /* Klems reversal */
468 <                SDsquare2disk(iovec, 1.-(ix+.5)*sqfact, 1.-(iy+.5)*sqfact);
468 >                square2disk(iovec, 1.-(ix+.5)*sqfact, 1.-(iy+.5)*sqfact);
469                  iovec[2] = input_orient *
470                                  sqrt(1. - iovec[0]*iovec[0] - iovec[1]*iovec[1]);
471                  if (funame == NULL)
472                          rbf = advect_rbf(iovec, lobe_lim);
473                                                  /* presample first row */
474                  for (oy = 0; oy < sqres; oy++) {
475 <                    SDsquare2disk(iovec+3, .5*sqfact, (oy+.5)*sqfact);
475 >                    square2disk(iovec+3, .5*sqfact, (oy+.5)*sqfact);
476                      iovec[5] = output_orient *
477                                  sqrt(1. - iovec[3]*iovec[3] - iovec[4]*iovec[4]);
478                      if (funame == NULL) {
# Line 499 | Line 494 | eval_anisotropic(char *funame)
494                       */
495                      for (oy = 0; oy < sqres; oy++) {
496                          if (ox < sqres-1) {     /* keeping one row ahead... */
497 <                            SDsquare2disk(iovec+3, (ox+1.5)*sqfact, (oy+.5)*sqfact);
497 >                            square2disk(iovec+3, (ox+1.5)*sqfact, (oy+.5)*sqfact);
498                              iovec[5] = output_orient *
499                                  sqrt(1. - iovec[3]*iovec[3] - iovec[4]*iovec[4]);
500                          }
# Line 519 | Line 514 | eval_anisotropic(char *funame)
514                                  for (ssi = nssamp; ssi--; ) {
515                                      SDmultiSamp(ssa, 2, (ssi+frandom()) /
516                                                          (double)nssamp);
517 <                                    SDsquare2disk(iovec+3, (ox+ssa[0])*sqfact,
517 >                                    square2disk(iovec+3, (ox+ssa[0])*sqfact,
518                                                          (oy+ssa[1])*sqfact);
519                                      iovec[5] = output_orient *
520                                          sqrt(1. - iovec[3]*iovec[3] - iovec[4]*iovec[4]);
# Line 537 | Line 532 | eval_anisotropic(char *funame)
532                                      uv[0] = usum / (sum+FTINY);
533                                      uv[1] = vsum / (sum+FTINY);
534                                  }
535 <                            } else
541 <                            if (rbf_colorimetry == RBCtristimulus) {
535 >                            } else if (rbf_colorimetry == RBCtristimulus) {
536                                  uv[0] = uv[1] = 1. /
537                                      (-2.*sdv.spec.cx + 12.*sdv.spec.cy + 3.);
538                                  uv[0] *= 4.*sdv.spec.cx;
# Line 566 | Line 560 | eval_anisotropic(char *funame)
560                                  for (ssi = nssamp; ssi--; ) {
561                                      SDmultiSamp(ssa, 4, (ssi+frandom()) /
562                                                          (double)nssamp);
563 <                                    SDsquare2disk(ssvec, 1.-(ix+ssa[0])*sqfact,
563 >                                    square2disk(ssvec, 1.-(ix+ssa[0])*sqfact,
564                                                  1.-(iy+ssa[1])*sqfact);
565                                      ssvec[2] = input_orient *
566                                                  sqrt(1. - ssvec[0]*ssvec[0] -
567                                                          ssvec[1]*ssvec[1]);
568 <                                    SDsquare2disk(ssvec+3, (ox+ssa[2])*sqfact,
568 >                                    square2disk(ssvec+3, (ox+ssa[2])*sqfact,
569                                                  (oy+ssa[3])*sqfact);
570                                      ssvec[5] = output_orient *
571                                                  sqrt(1. - ssvec[3]*ssvec[3] -
# Line 748 | Line 742 | main(int argc, char *argv[])
742          int                     nsirs = 0;
743          char                    buf[1024];
744          int                     i;
745 <
746 <        progname = argv[0];
745 >                                                /* set global progname */
746 >        fixargv0(argv[0]);
747          esupport |= E_VARIABLE|E_FUNCTION|E_RCONST;
748          esupport &= ~(E_INCHAN|E_OUTCHAN);
749          scompile("PI:3.14159265358979323846", NULL, 0);
# Line 767 | Line 761 | main(int argc, char *argv[])
761                                  single_plane_incident = 0;
762                          break;
763                  case 'f':
764 <                        if (!argv[i][2]) {
764 >                        if ((argv[i][0] == '-') & !argv[i][2]) {
765                                  if (strchr(argv[++i], '=') != NULL) {
766                                          add_wbsdf("-f", 1);
767                                          add_wbsdf(argv[i], 1);
# Line 880 | Line 874 | main(int argc, char *argv[])
874                          fprintf(stderr, "\tor 3 arguments using Dx,Dy,Dz: bsdf(ix,iy,iz)\n");
875                          goto userr;
876                  }
877 +                doptimize(1);                   /* optimize definitions */
878                  ++eclock;
879                  add_wbsdf("-a", 1);
880                  add_wbsdf(tfmt[single_plane_incident], 1);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines