ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/util/rfluxmtx.c
(Generate patch)

Comparing ray/src/util/rfluxmtx.c (file contents):
Revision 2.19 by greg, Thu Dec 4 05:26:28 2014 UTC vs.
Revision 2.25 by greg, Fri Mar 20 15:19:22 2015 UTC

# Line 362 | Line 362 | parse_params(PARAMS *p, char *pargs)
362                  case ' ':
363                  case '\t':
364                  case '\r':
365                        continue;
365                  case '\n':
366 +                        continue;
367                  case '\0':
368                          return(nparams);
369                  default:
# Line 417 | Line 417 | finish_receiver(void)
417          }
418                                          /* determine sample type/bin */
419          if (tolower(curparams.hemis[0]) == 'u' | curparams.hemis[0] == '1') {
420 <                binv = "0";             /* uniform sampling -- one bin */
420 >                sprintf(sbuf, "if(-Dx*%g-Dy*%g-Dz*%g,0,-1)",
421 >                        curparams.nrm[0], curparams.nrm[1], curparams.nrm[2]);
422 >                binv = savqstr(sbuf);
423 >                nbins = "1";            /* uniform sampling -- one bin */
424                  uniform = 1;
425          } else if (tolower(curparams.hemis[0]) == 's' &&
426                                  tolower(curparams.hemis[1]) == 'c') {
# Line 1080 | Line 1083 | static int
1083   add_send_object(FILE *fp)
1084   {
1085          int             st;
1086 <        char            otype[32], oname[128];
1086 >        char            thismod[128], otype[32], oname[128];
1087          int             n;
1088  
1089 <        if (fscanf(fp, "%*s %s %s", otype, oname) != 2)
1089 >        if (fscanf(fp, "%s %s %s", thismod, otype, oname) != 3)
1090                  return(0);              /* must have hit EOF! */
1091          if (!strcmp(otype, "alias")) {
1092                  fscanf(fp, "%*s");      /* skip alias */
# Line 1096 | Line 1099 | add_send_object(FILE *fp)
1099                          fputs(": cannot use source as a sender!\n", stderr);
1100                          return(-1);
1101                  }
1102 +                if (strcmp(thismod, curmod)) {
1103 +                        if (curmod[0]) {
1104 +                                fputs(progname, stderr);
1105 +                                fputs(": warning - multiple modifiers in sender\n",
1106 +                                                stderr);
1107 +                        }
1108 +                        strcpy(curmod, thismod);
1109 +                }
1110                  parse_params(&curparams, newparams);
1111                  newparams[0] = '\0';
1112                  add_surface(st, oname, fp);     /* read & store surface */
# Line 1330 | Line 1341 | main(int argc, char *argv[])
1341                  return(my_exec(rcarg)); /* rcontrib does everything */
1342          }
1343          clear_params(&curparams, 0);    /* else load sender surface & params */
1344 +        curmod[0] = '\0';
1345          if (load_scene(sendfn, add_send_object) < 0)
1346                  return(1);
1347          if ((nsbins = prepare_sampler()) <= 0)
# Line 1347 | Line 1359 | main(int argc, char *argv[])
1359   #ifdef getc_unlocked
1360          flockfile(rcfp);
1361   #endif
1362 <        if (verbose) {
1362 >        if (verbose > 0) {
1363                  fprintf(stderr, "%s: sampling %d directions", progname, nsbins);
1364                  if (curparams.nsurfs > 1)
1365                          fprintf(stderr, " (%d elements)\n", curparams.nsurfs);
# Line 1357 | Line 1369 | main(int argc, char *argv[])
1369          for (i = 0; i < nsbins; i++)    /* send rcontrib ray samples */
1370                  if (!(*curparams.sample_basis)(&curparams, i, rcfp))
1371                          return(1);
1372 <        return(pclose(rcfp) == 0);      /* all finished! */
1372 >        return(pclose(rcfp) < 0);       /* all finished! */
1373   userr:
1374          if (a < argc-2)
1375                  fprintf(stderr, "%s: unsupported option '%s'", progname, argv[a]);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines