--- ray/src/rt/rv2.c 1991/10/22 11:58:17 1.31 +++ ray/src/rt/rv2.c 1992/01/15 16:55:21 2.5 @@ -18,9 +18,11 @@ static char SCCSid[] = "$SunId$ LBL"; #include "rpaint.h" +#include "resolu.h" + #include -#define CTRL(c) ('c'-'@') +#define CTRL(c) ((c)-'@') extern char VersionID[]; extern char *progname; @@ -73,7 +75,7 @@ char *s; sprintf(buf, "view type (%c): ", ourview.type); (*dev->comout)(buf); (*dev->comin)(buf, NULL); - if (buf[0] == CTRL(C)) return; + if (buf[0] == CTRL('C')) return; if (buf[0] && buf[0] != ourview.type) { nv.type = buf[0]; change++; @@ -83,7 +85,7 @@ char *s; ourview.vp[0], ourview.vp[1], ourview.vp[2]); (*dev->comout)(buf); (*dev->comin)(buf, NULL); - if (buf[0] == CTRL(C)) return; + if (buf[0] == CTRL('C')) return; if (sscanf(buf, "%lf %lf %lf", &nv.vp[0], &nv.vp[1], &nv.vp[2]) == 3) change++; else @@ -92,7 +94,7 @@ char *s; ourview.vdir[0], ourview.vdir[1], ourview.vdir[2]); (*dev->comout)(buf); (*dev->comin)(buf, NULL); - if (buf[0] == CTRL(C)) return; + if (buf[0] == CTRL('C')) return; if (sscanf(buf,"%lf %lf %lf",&nv.vdir[0],&nv.vdir[1],&nv.vdir[2]) == 3) change++; else @@ -101,7 +103,7 @@ char *s; ourview.vup[0], ourview.vup[1], ourview.vup[2]); (*dev->comout)(buf); (*dev->comin)(buf, NULL); - if (buf[0] == CTRL(C)) return; + if (buf[0] == CTRL('C')) return; if (sscanf(buf,"%lf %lf %lf",&nv.vup[0],&nv.vup[1],&nv.vup[2]) == 3) change++; else @@ -110,7 +112,7 @@ char *s; ourview.horiz, ourview.vert); (*dev->comout)(buf); (*dev->comin)(buf, NULL); - if (buf[0] == CTRL(C)) return; + if (buf[0] == CTRL('C')) return; if (sscanf(buf, "%lf %lf", &nv.horiz, &nv.vert) == 2) change++; else { @@ -120,7 +122,7 @@ char *s; ourview.hoff, ourview.voff); (*dev->comout)(buf); (*dev->comin)(buf, NULL); - if (buf[0] == CTRL(C)) return; + if (buf[0] == CTRL('C')) return; if (sscanf(buf, "%lf %lf", &nv.hoff, &nv.voff) == 2) change++; else { @@ -142,7 +144,7 @@ char *s; if (sscanf(s, "%s", buf) == 1) { /* get parameters from a file */ copystruct(&nv, &stdview); if ((fname = getpath(buf, NULL, 0)) == NULL || - (success = viewfile(fname, &nv, 0, 0)) == -1) { + (success = viewfile(fname, &nv, NULL)) == -1) { sprintf(errmsg, "cannot open \"%s\"", buf); error(COMMAND, errmsg); return; @@ -244,7 +246,6 @@ register char *s; getexposure(s) /* get new exposure */ char *s; { - double atof(), pow(), fabs(); char buf[128]; register char *cp; register PNODE *p; @@ -339,7 +340,7 @@ register union {int i; double d; COLOR C;} *ptr; case 'b': /* boolean */ if (sscanf(str, "%1s", buf) != 1) { (*dev->comout)(dsc); - sprintf(buf, " (%c): ", ptr->i ? 'y' : 'n'); + sprintf(buf, "? (%c): ", ptr->i ? 'y' : 'n'); (*dev->comout)(buf); (*dev->comin)(buf, NULL); if (buf[0] == '\0' || @@ -386,11 +387,13 @@ register char *s; extern int directinvis; extern double srcsizerat; extern int do_irrad; + extern double specjitter; + extern double specthresh; char buf[128]; if (s[0] == '\0') { (*dev->comout)( - "aa ab ad ar as av b dc di dj ds dt i lr lw sp st: "); + "aa ab ad ar as av b dc di dj ds dt i lr lw ps pt sj st: "); (*dev->comin)(buf, NULL); s = buf; } @@ -461,20 +464,32 @@ register char *s; goto badparam; } break; - case 's': /* sample */ + case 'p': /* pixel */ switch (s[1]) { - case 'p': /* pixel */ - if (getparam(s+2, "sample pixel", 'i', &psample)) + case 's': /* sample */ + if (getparam(s+2, "pixel sample", 'i', &psample)) pdepth = 0; break; case 't': /* threshold */ - if (getparam(s+2, "sample threshold", 'r', &maxdiff)) + if (getparam(s+2, "pixel threshold", 'r', &maxdiff)) pdepth = 0; break; default: goto badparam; } break; + case 's': /* specular */ + switch (s[1]) { + case 'j': /* jitter */ + getparam(s+2, "specular jitter", 'r', &specjitter); + break; + case 't': /* threshold */ + getparam(s+2, "specular threshold", 'r', &specthresh); + break; + default: + goto badparam; + } + break; case '\0': /* nothing */ break; default:; @@ -536,10 +551,11 @@ char *s; (*dev->comout)(buf); } (*dev->comin)(buf, NULL); - sprintf(buf, "with value (%.6g %.6g %.6g)", + sprintf(buf, "value (%.5g %.5g %.5g) (%.1fL)", colval(thisray.rcol,RED), colval(thisray.rcol,GRN), - colval(thisray.rcol,BLU)); + colval(thisray.rcol,BLU), + luminance(thisray.rcol)); (*dev->comout)(buf); } (*dev->comin)(buf, NULL); @@ -582,7 +598,7 @@ char *s; fputaspect(dev->pixaspect, fp); fputformat(COLRFMT, fp); putc('\n', fp); - fputresolu(YMAJOR|YDECR, hresolu, vresolu, fp); + fprtresolu(hresolu, vresolu, fp); scanline = (COLR *)malloc(hresolu*sizeof(COLR)); if (scanline == NULL) {