--- ray/src/rt/rpict.c 1994/08/29 15:42:34 2.38 +++ ray/src/rt/rpict.c 1996/01/23 16:27:31 2.42 @@ -1,4 +1,4 @@ -/* Copyright (c) 1993 Regents of the University of California */ +/* Copyright (c) 1995 Regents of the University of California */ #ifndef lint static char SCCSid[] = "$SunId$ LBL"; @@ -64,9 +64,16 @@ int vspretest = 512; /* virtual source pretest dens int directvis = 1; /* sources visible? */ double srcsizerat = .25; /* maximum ratio source size/dist. */ +COLOR cextinction = BLKCOLOR; /* global extinction coefficient */ +double salbedo = 0.; /* global scattering albedo */ +double seccg = 0.; /* global scattering eccentricity */ +double ssampdist = 0.; /* scatter sampling distance */ + double specthresh = .15; /* specular sampling threshold */ double specjitter = 1.; /* specular sampling jitter */ +int backvis = 1; /* back face visibility */ + int maxdepth = 6; /* maximum recursion depth */ double minweight = 5e-3; /* minimum ray weight */ @@ -391,6 +398,8 @@ char *zfile, *oldfile; fprtresolu(hres, vres, stdout); /* recover file and compute first */ i = salvage(oldfile); + if (i >= vres) + goto alldone; if (zfd != -1 && i > 0 && lseek(zfd, (long)i*hres*sizeof(float), 0) == -1) error(SYSTEM, "z-file seek error in render"); @@ -446,18 +455,19 @@ char *zfile, *oldfile; } /* clean up */ signal(SIGCONT, SIG_IGN); - if (zfd != -1) { - if (write(zfd, (char *)zbar[0], hres*sizeof(float)) + if (zfd != -1 && write(zfd, (char *)zbar[0], hres*sizeof(float)) < hres*sizeof(float)) - goto writerr; + goto writerr; + fwritescan(scanbar[0], hres, stdout); + if (fflush(stdout) == EOF) + goto writerr; +alldone: + if (zfd != -1) { if (close(zfd) == -1) goto writerr; for (i = 0; i <= psample; i++) free((char *)zbar[i]); } - fwritescan(scanbar[0], hres, stdout); - if (fflush(stdout) == EOF) - goto writerr; for (i = 0; i <= psample; i++) free((char *)scanbar[i]); if (sampdens != NULL) @@ -602,8 +612,8 @@ int x, y; /* pixel position */ { static RAY thisray; - if (viewray(thisray.rorg, thisray.rdir, &ourview, - (x+pixjitter())/hres, (y+pixjitter())/vres) < 0) { + if ((thisray.rmax = viewray(thisray.rorg, thisray.rdir, &ourview, + (x+pixjitter())/hres, (y+pixjitter())/vres)) < -FTINY) { setcolor(col, 0.0, 0.0, 0.0); return(0.0); }