--- ray/src/rt/rpict.c 1994/12/21 09:51:56 2.40 +++ ray/src/rt/rpict.c 1996/02/07 16:35:18 2.43 @@ -1,4 +1,4 @@ -/* Copyright (c) 1994 Regents of the University of California */ +/* Copyright (c) 1995 Regents of the University of California */ #ifndef lint static char SCCSid[] = "$SunId$ LBL"; @@ -20,7 +20,6 @@ static char SCCSid[] = "$SunId$ LBL"; #include #else #include -#include #include #endif #endif @@ -64,6 +63,11 @@ 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 */ @@ -135,15 +139,13 @@ int code; #ifndef NIX report() /* report progress */ { + extern char *myhostname(); double u, s; #ifdef BSD - char hostname[257]; struct rusage rubuf; #else struct tms tbuf; - struct utsname nambuf; double period; -#define hostname nambuf.nodename #endif tlastrept = time((time_t *)NULL); @@ -154,7 +156,6 @@ report() /* report progress */ getrusage(RUSAGE_CHILDREN, &rubuf); u += rubuf.ru_utime.tv_sec + rubuf.ru_utime.tv_usec/1e6; s += rubuf.ru_stime.tv_sec + rubuf.ru_stime.tv_usec/1e6; - gethostname(hostname, sizeof(hostname)); #else times(&tbuf); #ifdef _SC_CLK_TCK @@ -164,17 +165,15 @@ report() /* report progress */ #endif u = ( tbuf.tms_utime + tbuf.tms_cutime ) * period; s = ( tbuf.tms_stime + tbuf.tms_cstime ) * period; - uname(&nambuf); #endif sprintf(errmsg, "%lu rays, %4.2f%% after %.3fu %.3fs %.3fr hours on %s\n", nrays, pctdone, u/3600., s/3600., - (tlastrept-tstart)/3600., hostname); + (tlastrept-tstart)/3600., myhostname()); eputs(errmsg); #ifndef BSD signal(SIGCONT, report); -#undef hostname #endif } #else @@ -393,6 +392,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"); @@ -448,18 +449,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)