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

Comparing ray/src/util/rad.c (file contents):
Revision 2.123 by greg, Wed Oct 28 02:52:17 2015 UTC vs.
Revision 2.133 by greg, Mon Dec 23 01:39:27 2024 UTC

# Line 17 | Line 17 | static const char      RCSid[] = "$Id$";
17   #include "paths.h"
18   #include "vars.h"
19  
20 < #ifdef _WIN32
20 > #if defined(_WIN32) || defined(_WIN64)
21    #define DELCMD "del"
22    #define RENAMECMD "rename"
23   #else
# Line 64 | Line 64 | static const char      RCSid[] = "$Id$";
64   int NVARS = 31;
65  
66   VARIABLE        vv[] = {                /* variable-value pairs */
67 <        {"AMBFILE",     3,      0,      NULL,   onevalue},
67 >        {"AMBFILE",     3,      0,      NULL,   strvalue},
68          {"DETAIL",      3,      0,      NULL,   qualvalue},
69          {"EXPOSURE",    3,      0,      NULL,   fltvalue},
70          {"EYESEP",      3,      0,      NULL,   fltvalue},
# Line 75 | Line 75 | VARIABLE       vv[] = {                /* variable-value pairs */
75          {"mkpmap",      3,      0,      NULL,   catvalues},
76          {"objects",     3,      0,      NULL,   catvalues},
77          {"oconv",       3,      0,      NULL,   catvalues},
78 <        {"OCTREE",      3,      0,      NULL,   onevalue},
79 <        {"OPTFILE",     3,      0,      NULL,   onevalue},
80 <        {"PCMAP",       2,      0,      NULL,   onevalue},
78 >        {"OCTREE",      3,      0,      NULL,   strvalue},
79 >        {"OPTFILE",     3,      0,      NULL,   strvalue},
80 >        {"PCMAP",       2,      0,      NULL,   strvalue},
81          {"PENUMBRAS",   3,      0,      NULL,   boolvalue},
82          {"pfilt",       2,      0,      NULL,   catvalues},
83 <        {"PGMAP",       2,      0,      NULL,   onevalue},
84 <        {"PICTURE",     3,      0,      NULL,   onevalue},
83 >        {"PGMAP",       2,      0,      NULL,   strvalue},
84 >        {"PICTURE",     3,      0,      NULL,   strvalue},
85          {"QUALITY",     3,      0,      NULL,   qualvalue},
86 <        {"RAWFILE",     3,      0,      NULL,   onevalue},
86 >        {"RAWFILE",     3,      0,      NULL,   strvalue},
87          {"render",      3,      0,      NULL,   catvalues},
88          {"REPORT",      3,      0,      NULL,   onevalue},
89          {"RESOLUTION",  3,      0,      NULL,   onevalue},
# Line 93 | Line 93 | VARIABLE       vv[] = {                /* variable-value pairs */
93          {"UP",          2,      0,      NULL,   onevalue},
94          {"VARIABILITY", 3,      0,      NULL,   qualvalue},
95          {"view",        2,      0,      NULL,   NULL},
96 <        {"ZFILE",       2,      0,      NULL,   onevalue},
96 >        {"ZFILE",       2,      0,      NULL,   strvalue},
97          {"ZONE",        2,      0,      NULL,   onevalue},
98   };
99  
# Line 131 | Line 131 | char   *viewselect = NULL;     /* specific view only */
131  
132   #define DEF_RPICT_PATH  "rpict"         /* default rpict path */
133  
134 + #define R_CMDMAX        (5*PATH_MAX+512)
135                                  /* command paths */
136   char    c_oconv[256] = "oconv";
137   char    c_mkillum[256] = "mkillum";
# Line 242 | Line 243 | main(
243                                  /* load variable values */
244          loadvars(rifname);
245                                  /* get any additional assignments */
246 <        for (i++; i < argc; i++)
247 <                if (setvariable(argv[i], matchvar) < 0) {
248 <                        fprintf(stderr, "%s: unknown variable: %s\n",
246 >        for (i++; i < argc; i++) {
247 >                int     rv = setvariable(argv[i], matchvar);
248 >                if (rv < 0) {
249 >                        fprintf(stderr, "%s: unknown setting: %s\n",
250                                          progname, argv[i]);
251                          quit(1);
252                  }
253 +                if (!rv)
254 +                        fprintf(stderr,
255 +                        "%s: bad variable assignment: %s (ignored)\n",
256 +                                        progname, argv[i]);
257 +        }
258                                  /* check assignments */
259          checkvalues();
260                                  /* check files and dates */
# Line 522 | Line 529 | static void
529   oconv(void)                             /* run oconv and mkillum if necessary */
530   {
531          static char     illumtmp[] = "ilXXXXXX";
532 <        char    combuf[PATH_MAX], ocopts[64], mkopts[1024];
532 >        char    combuf[R_CMDMAX], ocopts[64], mkopts[1024];
533  
534          oconvopts(ocopts);              /* get options */
535          if (octreedate < scenedate) {   /* check date on original octree */
# Line 556 | Line 563 | oconv(void)                            /* run oconv and mkillum if necessary *
563                  return;
564                                                  /* make octree0 */
565          if ((oct0date < scenedate) | (oct0date < illumdate)) {
566 <                if (touchonly && oct0date)
567 <                        touch(oct0name);
568 <                else {                          /* build command */
566 >                if (touchonly && (oct0date || oct1date)) {
567 >                        if (oct0date)
568 >                                touch(oct0name);
569 >                } else {                        /* build command */
570                          if (octreedate)
571                                  sprintf(combuf, "%s%s -i %s %s > %s", c_oconv,
572                                          ocopts, vval(OCTREE),
# Line 583 | Line 591 | oconv(void)                            /* run oconv and mkillum if necessary *
591                          oct0date = octreedate;
592                  if (oct0date < illumdate)       /* ditto */
593                          oct0date = illumdate;
594 <                }
594 >        }
595          if (touchonly && oct1date)
596                  touch(oct1name);
597          else {
# Line 752 | Line 760 | mkpmapopts(                            /* get mkpmap options */
760   {
761          /* BEWARE:  This may be called via setdefaults(), so no assumptions */
762  
763 <        *mo = '\0';
763 >        if (nprocs > 1)
764 >                sprintf(mo, " -n %d", nprocs);
765 >        else
766 >                *mo = '\0';
767          if (!vdef(MKPMAP))
768                  return;
769          if (vval(MKPMAP)[0] != '-') {
# Line 786 | Line 797 | ambval(void)                           /* compute ambient value */
797   {
798          if (vdef(EXPOSURE)) {
799                  if (vval(EXPOSURE)[0] == '+' || vval(EXPOSURE)[0] == '-')
800 <                        return(.5/pow(2.,vflt(EXPOSURE)));
801 <                return(.5/vflt(EXPOSURE));
800 >                        return(.18/pow(2.,vflt(EXPOSURE)));
801 >                return(.18/vflt(EXPOSURE));
802          }
803          if (vlet(ZONE) == 'E')
804                  return(10.);
# Line 830 | Line 841 | renderopts(                    /* set rendering options */
841                  op = addarg(addarg(op, "-ap"), pmapf);
842                  if (atoi(bw) > 0) op = addarg(op, bw);
843          }
844 <        if (vdef(RENDER))
844 >        if (vdef(RENDER)) {
845                  op = addarg(op, vval(RENDER));
846 +                bw = strstr(vval(RENDER), "-aa ");
847 +                if (bw != NULL && atof(bw+4) <= FTINY)
848 +                        overture = 0;
849 +        }
850          if (rvdevice != NULL) {
851                  if (vdef(RVU)) {
852                          if (vval(RVU)[0] != '-') {
# Line 916 | Line 931 | lowqopts(                      /* low quality rendering options */
931          d = ambval();
932          sprintf(op, " -av %.2g %.2g %.2g", d, d, d);
933          op += strlen(op);
934 <        op = addarg(op, "-lr 6 -lw .003");
934 >        op = addarg(op, "-lr 6 -lw .001");
935   }
936  
937  
# Line 1070 | Line 1085 | hiqopts(                               /* high quality rendering options */
1085          d = ambval();
1086          sprintf(op, " -av %.2g %.2g %.2g", d, d, d);
1087          op += strlen(op);
1088 <        op = addarg(op, "-lr 12 -lw 1e-5");
1088 >        op = addarg(op, "-lr 12 -lw 5e-6");
1089   }
1090  
1091  
1092 < #ifdef _WIN32
1092 > #if defined(_WIN32) || defined(_WIN64)
1093   static void
1094   setenv(                 /* set an environment variable */
1095          char    *vname,
# Line 1121 | Line 1136 | xferopts(                              /* transfer options if indicated */
1136                          syserr(vval(OPTFILE));
1137                  sprintf(ro, " @%s", vval(OPTFILE));
1138          }
1139 < #ifdef _WIN32
1139 > #if defined(_WIN32) || defined(_WIN64)
1140          else if (n > 50) {
1141                  setenv("ROPT", ro+1);
1142                  strcpy(ro, " $ROPT");
# Line 1299 | Line 1314 | specview(                              /* get proper view spec from vs */
1314          if (cp == viewopts)             /* append any additional options */
1315                  vs++;           /* skip prefixed space if unneeded */
1316          strcpy(cp, vs);
1317 < #ifdef _WIN32
1317 > #if defined(_WIN32) || defined(_WIN64)
1318          if (strlen(viewopts) > 40) {
1319                  setenv("VIEW", viewopts);
1320                  return("$VIEW");
# Line 1367 | Line 1382 | myprintview(                   /* print out selected view */
1382          VIEW    vwr;
1383          char    buf[128];
1384          char    *cp;
1385 < #ifdef _WIN32
1385 > #if defined(_WIN32) || defined(_WIN64)
1386   /* XXX Should we allow something like this for all platforms? */
1387   /* XXX Or is it still required at all? */
1388   again:
1389   #endif
1390          if (vopts == NULL)
1391                  return(-1);
1392 < #ifdef _WIN32
1392 > #if defined(_WIN32) || defined(_WIN64)
1393          if (vopts[0] == '$') {
1394                  vopts = getenv(vopts+1);
1395                  goto again;
# Line 1401 | Line 1416 | rvu(                           /* run rvu with first view */
1416   )
1417   {
1418          char    *vw;
1419 <        char    combuf[PATH_MAX];
1419 >        char    combuf[R_CMDMAX];
1420                                          /* build command */
1421          if (touchonly || (vw = getview(0, NULL)) == NULL)
1422                  return;
# Line 1599 | Line 1614 | rpict(                         /* run rpict and pfilt for each view */
1614                  } else {
1615                          if (overture) {         /* run overture calculation */
1616                                  sprintf(combuf,
1617 <                                        "%s%s %s%s -x 64 -y 64 -ps 1 %s > %s",
1618 <                                                c_rpict, rep, vw, opts,
1617 >                                        "%s%s %s%s%s -x 64 -y 64 -ps 1 %s > %s",
1618 >                                                c_rpict, rep, vw, opts, po,
1619                                                  oct1name, overfile);
1620                                  if (!do_rpiece || !next_process(0)) {
1621                                          if (runcom(combuf)) {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines