--- ray/src/util/rad.c 2021/01/21 21:36:28 2.128 +++ ray/src/util/rad.c 2025/06/07 05:09:46 2.135 @@ -1,5 +1,5 @@ #ifndef lint -static const char RCSid[] = "$Id: rad.c,v 2.128 2021/01/21 21:36:28 greg Exp $"; +static const char RCSid[] = "$Id: rad.c,v 2.135 2025/06/07 05:09:46 greg Exp $"; #endif /* * Executive program for oconv, rpict and pfilt @@ -14,7 +14,6 @@ static const char RCSid[] = "$Id: rad.c,v 2.128 2021/0 #include "platform.h" #include "rtprocess.h" #include "view.h" -#include "paths.h" #include "vars.h" #if defined(_WIN32) || defined(_WIN64) @@ -64,7 +63,7 @@ static const char RCSid[] = "$Id: rad.c,v 2.128 2021/0 int NVARS = 31; VARIABLE vv[] = { /* variable-value pairs */ - {"AMBFILE", 3, 0, NULL, onevalue}, + {"AMBFILE", 3, 0, NULL, strvalue}, {"DETAIL", 3, 0, NULL, qualvalue}, {"EXPOSURE", 3, 0, NULL, fltvalue}, {"EYESEP", 3, 0, NULL, fltvalue}, @@ -75,15 +74,15 @@ VARIABLE vv[] = { /* variable-value pairs */ {"mkpmap", 3, 0, NULL, catvalues}, {"objects", 3, 0, NULL, catvalues}, {"oconv", 3, 0, NULL, catvalues}, - {"OCTREE", 3, 0, NULL, onevalue}, - {"OPTFILE", 3, 0, NULL, onevalue}, - {"PCMAP", 2, 0, NULL, onevalue}, + {"OCTREE", 3, 0, NULL, strvalue}, + {"OPTFILE", 3, 0, NULL, strvalue}, + {"PCMAP", 2, 0, NULL, strvalue}, {"PENUMBRAS", 3, 0, NULL, boolvalue}, {"pfilt", 2, 0, NULL, catvalues}, - {"PGMAP", 2, 0, NULL, onevalue}, - {"PICTURE", 3, 0, NULL, onevalue}, + {"PGMAP", 2, 0, NULL, strvalue}, + {"PICTURE", 3, 0, NULL, strvalue}, {"QUALITY", 3, 0, NULL, qualvalue}, - {"RAWFILE", 3, 0, NULL, onevalue}, + {"RAWFILE", 3, 0, NULL, strvalue}, {"render", 3, 0, NULL, catvalues}, {"REPORT", 3, 0, NULL, onevalue}, {"RESOLUTION", 3, 0, NULL, onevalue}, @@ -93,7 +92,7 @@ VARIABLE vv[] = { /* variable-value pairs */ {"UP", 2, 0, NULL, onevalue}, {"VARIABILITY", 3, 0, NULL, qualvalue}, {"view", 2, 0, NULL, NULL}, - {"ZFILE", 2, 0, NULL, onevalue}, + {"ZFILE", 2, 0, NULL, strvalue}, {"ZONE", 2, 0, NULL, onevalue}, }; @@ -131,6 +130,7 @@ char *viewselect = NULL; /* specific view only */ #define DEF_RPICT_PATH "rpict" /* default rpict path */ +#define R_CMDMAX (5*PATH_MAX+512) /* command paths */ char c_oconv[256] = "oconv"; char c_mkillum[256] = "mkillum"; @@ -144,7 +144,6 @@ int overture = 0; /* overture calculation needed */ int children_running = 0; /* set negative in children */ -char *progname; /* global argv[0] */ char *rifname; /* global rad input file name */ char radname[PATH_MAX]; /* root Radiance file name */ @@ -197,8 +196,8 @@ main( char ropts[512]; char popts[64]; int i; - - progname = argv[0]; + /* set global progname */ + fixargv0(argv[0]); /* get options */ for (i = 1; i < argc && argv[i][0] == '-'; i++) switch (argv[i][1]) { @@ -242,12 +241,18 @@ main( /* load variable values */ loadvars(rifname); /* get any additional assignments */ - for (i++; i < argc; i++) - if (setvariable(argv[i], matchvar) < 0) { - fprintf(stderr, "%s: unknown variable: %s\n", + for (i++; i < argc; i++) { + int rv = setvariable(argv[i], matchvar); + if (rv < 0) { + fprintf(stderr, "%s: unknown setting: %s\n", progname, argv[i]); quit(1); } + if (!rv) + fprintf(stderr, + "%s: bad variable assignment: %s (ignored)\n", + progname, argv[i]); + } /* check assignments */ checkvalues(); /* check files and dates */ @@ -522,7 +527,7 @@ static void oconv(void) /* run oconv and mkillum if necessary */ { static char illumtmp[] = "ilXXXXXX"; - char combuf[PATH_MAX], ocopts[64], mkopts[1024]; + char combuf[R_CMDMAX], ocopts[64], mkopts[1024]; oconvopts(ocopts); /* get options */ if (octreedate < scenedate) { /* check date on original octree */ @@ -924,7 +929,7 @@ lowqopts( /* low quality rendering options */ d = ambval(); sprintf(op, " -av %.2g %.2g %.2g", d, d, d); op += strlen(op); - op = addarg(op, "-lr 6 -lw .003"); + op = addarg(op, "-lr 6 -lw .001"); } @@ -1078,7 +1083,7 @@ hiqopts( /* high quality rendering options */ d = ambval(); sprintf(op, " -av %.2g %.2g %.2g", d, d, d); op += strlen(op); - op = addarg(op, "-lr 12 -lw 1e-5"); + op = addarg(op, "-lr 12 -lw 5e-6"); } @@ -1409,7 +1414,7 @@ rvu( /* run rvu with first view */ ) { char *vw; - char combuf[PATH_MAX]; + char combuf[R_CMDMAX]; /* build command */ if (touchonly || (vw = getview(0, NULL)) == NULL) return; @@ -1607,8 +1612,8 @@ rpict( /* run rpict and pfilt for each view */ } else { if (overture) { /* run overture calculation */ sprintf(combuf, - "%s%s %s%s -x 64 -y 64 -ps 1 %s > %s", - c_rpict, rep, vw, opts, + "%s%s %s%s%s -x 64 -y 64 -ps 1 %s > %s", + c_rpict, rep, vw, opts, po, oct1name, overfile); if (!do_rpiece || !next_process(0)) { if (runcom(combuf)) {