--- ray/src/rt/rtrace.c 1991/05/01 11:16:58 1.13 +++ ray/src/rt/rtrace.c 1991/11/12 17:09:39 2.1 @@ -30,6 +30,10 @@ static char SCCSid[] = "$SunId$ LBL"; #include "otypes.h" +int dimlist[MAXDIM]; /* sampling dimensions */ +int ndims = 0; /* number of sampling dimensions */ +int samplendx = 0; /* index for this sample */ + int imm_irrad = 0; /* compute immediate irradiance? */ int inform = 'a'; /* input format */ @@ -42,6 +46,10 @@ int vresolu = 0; /* vertical resolution */ double dstrsrc = 0.0; /* square source distribution */ double shadthresh = .05; /* shadow threshold */ double shadcert = .5; /* shadow certainty */ +int directrelay = 1; /* number of source relays */ +int vspretest = 512; /* virtual source pretest density */ +int directinvis = 0; /* sources invisible? */ +double srcsizerat = .25; /* maximum ratio source size/dist. */ int maxdepth = 6; /* maximum recursion depth */ double minweight = 4e-3; /* minimum ray weight */ @@ -106,6 +114,7 @@ char *fname; fflush(stdout); continue; } + samplendx++; /* compute and print */ if (imm_irrad) irrad(orig, direc); @@ -227,12 +236,20 @@ register FVECT vec; int fmt; FILE *fp; { + extern char *fgetword(); + extern double atof(); static float vf[3]; + char buf[32]; + register int i; switch (fmt) { case 'a': /* ascii */ - if (fscanf(fp, "%lf %lf %lf", vec, vec+1, vec+2) != 3) - return(-1); + for (i = 0; i < 3; i++) { + if (fgetword(buf, sizeof(buf), fp) == NULL || + !isflt(buf)) + return(-1); + vec[i] = atof(buf); + } break; case 'f': /* binary float */ if (fread((char *)vf, sizeof(float), 3, fp) != 3)