ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/rt/rxcmain.cpp
(Generate patch)

Comparing ray/src/rt/rxcmain.cpp (file contents):
Revision 2.4 by greg, Wed Oct 30 17:26:13 2024 UTC vs.
Revision 2.10 by greg, Fri Dec 13 21:12:40 2024 UTC

# Line 41 | Line 41 | static void
41   printdefaults(void)                     /* print default values to stdout */
42   {
43          printf("-c %-5d\t\t\t# accumulated rays per record\n", myRCmanager.accum);
44 <        printf("-V%c\t\t\t\t# output %s\n", contrib ? '+' : '-',
45 <                        contrib ? "contributions" : "coefficients");
44 >        printf(myRCmanager.HasFlag(RCcontrib) ?
45 >                        "-V+\t\t\t\t# output contributions\n" :
46 >                        "-V-\t\t\t\t# output coefficients\n");
47          if (myRCmanager.HasFlag(RTimmIrrad))
48                  printf("-I+\t\t\t\t# immediate irradiance on\n");
49          printf("-n %-2d\t\t\t\t# number of rendering processes\n", nproc);
50 <        if (xres > 0)
51 <                printf("-x %-9d\t\t\t# x resolution\n", xres);
52 <        printf("-y %-9d\t\t\t# y resolution\n", yres);
50 >        if (myRCmanager.xres > 0)
51 >                printf("-x %-9d\t\t\t# x resolution\n", myRCmanager.xres);
52 >        printf("-y %-9d\t\t\t# y resolution\n", myRCmanager.yres);
53          printf(myRCmanager.HasFlag(RTlimDist) ?
54                          "-ld+\t\t\t\t# limit distance on\n" :
55                          "-ld-\t\t\t\t# limit distance off\n");
# Line 95 | Line 96 | sigdie(                        /* set fatal signal */
96          sigerr[signo] = msg;
97   }
98  
98 const char *
99 formstr(int f)                          // return format identifier
100 {
101        switch (f) {
102        case 'a': return("ascii");
103        case 'f': return("float");
104        case 'd': return("double");
105        case 'c': return(NCSAMP==3 ? COLRFMT : SPECFMT);
106        }
107        return("unknown");
108 }
109
99   /* set input/output format */
100   static void
101   setformat(const char *fmt)
# Line 143 | Line 132 | fmterr:
132          error(USER, errmsg);
133   }
134  
135 + /* Set default options */
136 + static void
137 + default_options(void)
138 + {
139 +        rand_samp = 1;
140 +        dstrsrc = 0.9;
141 +        directrelay = 3;
142 +        vspretest = 512;
143 +        srcsizerat = .2;
144 +        specthresh = .02;
145 +        specjitter = 1.;
146 +        maxdepth = -10;
147 +        minweight = 2e-3;
148 +        ambres = 256;
149 +        ambdiv = 350;
150 +        ambounce = 1;
151 + }
152  
153   /* Set overriding options */
154   static void
# Line 153 | Line 159 | override_options(void)
159          ambacc = 0;
160   }
161  
156
162   int
163   main(int argc, char *argv[])
164   {
# Line 184 | Line 189 | main(int argc, char *argv[])
189                                          /* initialize calcomp routines early */
190          initfunc();
191          calcontext(RCCONTEXT);
192 +                                        /* set rcontrib defaults */
193 +        default_options();
194                                          /* option city */
195          for (i = 1; i < argc; i++) {
196                                                  /* expand arguments */
# Line 218 | Line 225 | main(int argc, char *argv[])
225                                  nproc = 1;
226                          break;
227                  case 'V':                       /* output contributions? */
228 <                        check_bool(2,contrib);
228 >                        rval = myRCmanager.HasFlag(RCcontrib);
229 >                        check_bool(2,rval);
230 >                        myRCmanager.SetFlag(RCcontrib, rval);
231                          break;
232                  case 'x':                       /* x resolution */
233                          check(2,"i");
234 <                        xres = atoi(argv[++i]);
234 >                        myRCmanager.xres = atoi(argv[++i]);
235                          break;
236                  case 'y':                       /* y resolution */
237                          check(2,"i");
238 <                        yres = atoi(argv[++i]);
238 >                        myRCmanager.yres = atoi(argv[++i]);
239                          break;
240                  case 'w':                       /* warnings on/off */
241                          rval = (erract[WARNING].pf != NULL);
# Line 346 | Line 355 | main(int argc, char *argv[])
355                                          // rval = # rows recovered
356          rval = myRCmanager.PrepOutput();
357                                          // check if recovered everything
358 <        if (recover && rval >= myRCmanager.GetRowMax()) {
358 >        if (rval >= myRCmanager.GetRowMax()) {
359                  error(WARNING, "nothing left to compute");
360                  quit(0);
361          }                               // add processes as requested
# Line 491 | Line 500 | rxcontrib(const int rstart)
500                  }
501                  last_report = tstart = time(0);
502          }
503 <        while (r < totRows) {           // getting to work...
503 >        while (r < totRows) {           // loop until done
504                  time_t  tnow;
505                  if (!getRayBundle(odarr))
506                          goto readerr;
507 <                if (myRCmanager.ComputeRecord(odarr) < 0)
507 >                if (myRCmanager.ComputeRecord(odarr) <= 0)
508                          return;         // error reported, hopefully...
509                  r++;
510                  if (report_intvl <= 0)
511                          continue;
512 <                if ((r < totRows) & ((tnow = time(0)) < last_report+report_intvl))
512 >                tnow = time(0);         // time to report progress?
513 >                if (r == totRows)
514 >                        myRCmanager.FlushQueue();
515 >                else if (tnow < last_report+report_intvl)
516                          continue;
517                  sprintf(errmsg, "%.2f%% done after %.3f hours\n",
518 <                                100.*r/totRows, (1./3600.)*(tnow - tstart));
518 >                                100.*myRCmanager.GetRowFinished()/totRows,
519 >                                (1./3600.)*(tnow - tstart));
520                  eputs(errmsg);
521                  last_report = tnow;
522          }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines