| 110 |
|
int explicate = 0; /* explicate variables */ |
| 111 |
|
int silent = 0; /* do work silently */ |
| 112 |
|
int noaction = 0; /* don't do anything */ |
| 113 |
< |
int vwonly = 0; /* print view only */ |
| 113 |
> |
int sayview = 0; /* print view out */ |
| 114 |
|
char *rvdevice = NULL; /* rview output device */ |
| 115 |
|
char *viewselect = NULL; /* specific view only */ |
| 116 |
|
|
| 117 |
|
int overture = 0; /* overture calculation needed */ |
| 118 |
|
|
| 119 |
|
char *progname; /* global argv[0] */ |
| 120 |
+ |
char *rifname; /* global rad input file name */ |
| 121 |
|
|
| 122 |
|
char radname[MAXPATH]; /* root Radiance file name */ |
| 123 |
|
|
| 146 |
|
rvdevice = argv[++i]; |
| 147 |
|
break; |
| 148 |
|
case 'V': |
| 149 |
< |
vwonly++; |
| 150 |
< |
/* fall through */ |
| 149 |
> |
sayview++; |
| 150 |
> |
break; |
| 151 |
|
case 'v': |
| 152 |
|
viewselect = argv[++i]; |
| 153 |
|
break; |
| 156 |
|
} |
| 157 |
|
if (i >= argc) |
| 158 |
|
goto userr; |
| 159 |
+ |
rifname = argv[i]; |
| 160 |
|
/* assign Radiance root file name */ |
| 161 |
< |
rootname(radname, argv[i]); |
| 161 |
> |
rootname(radname, rifname); |
| 162 |
|
/* load variable values */ |
| 163 |
< |
load(argv[i]); |
| 163 |
> |
load(rifname); |
| 164 |
|
/* get any additional assignments */ |
| 165 |
|
for (i++; i < argc; i++) |
| 166 |
|
setvariable(argv[i]); |
| 173 |
|
/* print all values if requested */ |
| 174 |
|
if (explicate) |
| 175 |
|
printvals(); |
| 174 |
– |
/* print view and exit? */ |
| 175 |
– |
if (vwonly) |
| 176 |
– |
exit(printview()==0 ? 0 : 1); |
| 176 |
|
/* build octree */ |
| 177 |
|
oconv(); |
| 178 |
|
/* check date on ambient file */ |
| 612 |
|
d *= 3./(siz[0]+siz[1]+siz[2]); |
| 613 |
|
switch (vscale(DETAIL)) { |
| 614 |
|
case LOW: |
| 615 |
< |
op = addarg(op, "-ps 16 -dp 16"); |
| 615 |
> |
op = addarg(op, "-ps 16 -dp 64"); |
| 616 |
|
sprintf(op, " -ar %d", (int)(4*d)); |
| 617 |
|
op += strlen(op); |
| 618 |
|
break; |
| 619 |
|
case MEDIUM: |
| 620 |
< |
op = addarg(op, "-ps 8 -dp 32"); |
| 620 |
> |
op = addarg(op, "-ps 8 -dp 128"); |
| 621 |
|
sprintf(op, " -ar %d", (int)(8*d)); |
| 622 |
|
op += strlen(op); |
| 623 |
|
break; |
| 624 |
|
case HIGH: |
| 625 |
< |
op = addarg(op, "-ps 4 -dp 64"); |
| 625 |
> |
op = addarg(op, "-ps 4 -dp 256"); |
| 626 |
|
sprintf(op, " -ar %d", (int)(16*d)); |
| 627 |
|
op += strlen(op); |
| 628 |
|
break; |
| 674 |
|
switch (vscale(DETAIL)) { |
| 675 |
|
case LOW: |
| 676 |
|
op = addarg(op, vbool(PENUMBRAS) ? "-ps 4" : "-ps 8"); |
| 677 |
< |
op = addarg(op, "-dp 64"); |
| 677 |
> |
op = addarg(op, "-dp 256"); |
| 678 |
|
sprintf(op, " -ar %d", (int)(8*d)); |
| 679 |
|
op += strlen(op); |
| 680 |
|
break; |
| 681 |
|
case MEDIUM: |
| 682 |
|
op = addarg(op, vbool(PENUMBRAS) ? "-ps 3" : "-ps 6"); |
| 683 |
< |
op = addarg(op, "-dp 128"); |
| 683 |
> |
op = addarg(op, "-dp 512"); |
| 684 |
|
sprintf(op, " -ar %d", (int)(16*d)); |
| 685 |
|
op += strlen(op); |
| 686 |
|
break; |
| 687 |
|
case HIGH: |
| 688 |
|
op = addarg(op, vbool(PENUMBRAS) ? "-ps 2" : "-ps 4"); |
| 689 |
< |
op = addarg(op, "-dp 256"); |
| 689 |
> |
op = addarg(op, "-dp 1024"); |
| 690 |
|
sprintf(op, " -ar %d", (int)(32*d)); |
| 691 |
|
op += strlen(op); |
| 692 |
|
break; |
| 741 |
|
switch (vscale(DETAIL)) { |
| 742 |
|
case LOW: |
| 743 |
|
op = addarg(op, vbool(PENUMBRAS) ? "-ps 1" : "-ps 8"); |
| 744 |
< |
op = addarg(op, "-dp 256"); |
| 744 |
> |
op = addarg(op, "-dp 1024"); |
| 745 |
|
sprintf(op, " -ar %d", (int)(16*d)); |
| 746 |
|
op += strlen(op); |
| 747 |
|
break; |
| 748 |
|
case MEDIUM: |
| 749 |
|
op = addarg(op, vbool(PENUMBRAS) ? "-ps 1" : "-ps 5"); |
| 750 |
< |
op = addarg(op, "-dp 512"); |
| 750 |
> |
op = addarg(op, "-dp 2048"); |
| 751 |
|
sprintf(op, " -ar %d", (int)(32*d)); |
| 752 |
|
op += strlen(op); |
| 753 |
|
break; |
| 754 |
|
case HIGH: |
| 755 |
|
op = addarg(op, vbool(PENUMBRAS) ? "-ps 1" : "-ps 3"); |
| 756 |
< |
op = addarg(op, "-dp 1024"); |
| 756 |
> |
op = addarg(op, "-dp 4096"); |
| 757 |
|
sprintf(op, " -ar %d", (int)(64*d)); |
| 758 |
|
op += strlen(op); |
| 759 |
|
break; |
| 1012 |
|
} |
| 1013 |
|
|
| 1014 |
|
|
| 1015 |
< |
printview() /* print out selected view */ |
| 1015 |
> |
printview(vopts) /* print out selected view */ |
| 1016 |
> |
register char *vopts; |
| 1017 |
|
{ |
| 1018 |
< |
extern char *atos(); |
| 1018 |
> |
extern char *atos(), *getenv(); |
| 1019 |
|
char buf[256]; |
| 1020 |
|
FILE *fp; |
| 1021 |
< |
register char *vopts, *cp; |
| 1021 |
> |
register char *cp; |
| 1022 |
|
|
| 1023 |
– |
vopts = getview(0, NULL); |
| 1023 |
|
if (vopts == NULL) |
| 1024 |
|
return(-1); |
| 1025 |
|
fputs("VIEW=", stdout); |
| 1050 |
|
while (isspace(*vopts)) |
| 1051 |
|
vopts++; |
| 1052 |
|
putchar(' '); |
| 1053 |
< |
while (*vopts && !isspace(*vopts)) |
| 1054 |
< |
putchar(*vopts++); |
| 1053 |
> |
#ifdef MSDOS |
| 1054 |
> |
if (*vopts == '$') { /* expand env. var. */ |
| 1055 |
> |
if (!*atos(buf, sizeof(buf), vopts+1)) |
| 1056 |
> |
return(-1); |
| 1057 |
> |
if ((cp = getenv(buf)) == NULL) |
| 1058 |
> |
return(-1); |
| 1059 |
> |
fputs(cp, stdout); |
| 1060 |
> |
vopts = sskip(vopts); |
| 1061 |
> |
} else |
| 1062 |
> |
#endif |
| 1063 |
> |
while (*vopts && !isspace(*vopts)) |
| 1064 |
> |
putchar(*vopts++); |
| 1065 |
|
} |
| 1066 |
|
} while (*vopts++); |
| 1067 |
|
putchar('\n'); |
| 1072 |
|
rview(opts) /* run rview with first view */ |
| 1073 |
|
char *opts; |
| 1074 |
|
{ |
| 1075 |
+ |
char *vw; |
| 1076 |
|
char combuf[512]; |
| 1077 |
|
/* build command */ |
| 1078 |
< |
sprintf(combuf, "rview %s%s ", getview(0, NULL), opts); |
| 1078 |
> |
if ((vw = getview(0, NULL)) == NULL) |
| 1079 |
> |
return; |
| 1080 |
> |
if (sayview) |
| 1081 |
> |
printview(vw); |
| 1082 |
> |
sprintf(combuf, "rview %s%s -R %s ", vw, opts, rifname); |
| 1083 |
|
if (rvdevice != NULL) |
| 1084 |
|
sprintf(combuf+strlen(combuf), "-o %s ", rvdevice); |
| 1085 |
|
strcat(combuf, vval(OCTREE)); |
| 1134 |
|
/* do each view */ |
| 1135 |
|
vn = 0; |
| 1136 |
|
while ((vw = getview(vn++, vs)) != NULL) { |
| 1137 |
+ |
if (sayview) |
| 1138 |
+ |
printview(vw); |
| 1139 |
|
if (!vs[0]) |
| 1140 |
|
sprintf(vs, "%d", vn); |
| 1141 |
|
sprintf(picfile, "%s_%s.pic", vval(PICTURE), vs); |