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

Comparing ray/src/cv/mgf2rad.c (file contents):
Revision 2.6 by greg, Fri Jul 1 18:06:36 1994 UTC vs.
Revision 2.7 by greg, Fri Jul 8 16:10:09 1994 UTC

# Line 100 | Line 100 | r_comment(ac, av)              /* repeat a comment verbatim */
100   register int    ac;
101   register char   **av;
102   {
103 <        fputs("\n#", stdout);   /* use Radiance comment character */
103 >        putchar('#');           /* use Radiance comment character */
104          while (--ac) {
105                  putchar(' ');
106                  fputs(*++av, stdout);
# Line 426 | Line 426 | material()                     /* get (and print) current material */
426          }
427          d = c_cmaterial->rd + c_cmaterial->td +
428                          c_cmaterial->rs + c_cmaterial->ts;
429 <        if (d <= 0. | d >= 1.)
429 >        if (d < 0. | d > 1.)
430                  return(NULL);
431                                          /* check for trans */
432          if (c_cmaterial->td > .01 || c_cmaterial->ts > .01) {
# Line 435 | Line 435 | material()                     /* get (and print) current material */
435                  if (c_cmaterial->sided) {
436                          ts = sqrt(c_cmaterial->ts);     /* approximate */
437                          a5 = .5;
438 <                } else
438 >                } else {
439 >                        ts = c_cmaterial->ts;
440                          a5 = 1.;
441 +                }
442                                                  /* average colors */
443                  d = c_cmaterial->rd + c_cmaterial->td + ts;
444                  cvtcolor(radrgb, &c_cmaterial->rd_c, c_cmaterial->rd/d);
# Line 450 | Line 452 | material()                     /* get (and print) current material */
452                                          (c_cmaterial->rs + ts);
453                  a6 = (c_cmaterial->td + ts) /
454                                  (c_cmaterial->rd + c_cmaterial->td + ts);
455 <                if (a6 < .999) {
455 >                if (a6 < .999)
456                          d = c_cmaterial->rd/(1. - c_cmaterial->rs)/(1. - a6);
457 <                        scalecolor(radrgb, d);
458 <                }
457 >                else
458 >                        d = c_cmaterial->td + ts;
459 >                scalecolor(radrgb, d);
460                  printf("\nvoid trans %s\n0\n0\n", mname);
461                  printf("7 %f %f %f\n", colval(radrgb,RED),
462                                  colval(radrgb,GRN), colval(radrgb,BLU));
# Line 462 | Line 465 | material()                     /* get (and print) current material */
465                  return(mname);
466          }
467                                          /* check for plastic */
468 <        if (c_cmaterial->rs < .01 || c_isgrey(&c_cmaterial->rs_c)) {
469 <                if (c_cmaterial->rs > .999)
470 <                        cvtcolor(radrgb, &c_cmaterial->rd_c, 1.);
468 <                else
469 <                        cvtcolor(radrgb, &c_cmaterial->rd_c,
468 >        if (c_cmaterial->rs < .1 && (c_cmaterial->rs < .01 ||
469 >                                        c_isgrey(&c_cmaterial->rs_c))) {
470 >                cvtcolor(radrgb, &c_cmaterial->rd_c,
471                                          c_cmaterial->rd/(1.-c_cmaterial->rs));
472                  printf("\nvoid plastic %s\n0\n0\n", mname);
473                  printf("5 %f %f %f %f %f\n", colval(radrgb,RED),
# Line 475 | Line 476 | material()                     /* get (and print) current material */
476                  return(mname);
477          }
478                                          /* else it's metal */
479 <        d = c_cmaterial->rd + c_cmaterial->rs;  /* average colors */
480 <        cvtcolor(radrgb, &c_cmaterial->rd_c, c_cmaterial->rd/d);
481 <        cvtcolor(c2, &c_cmaterial->rs_c, c_cmaterial->rs/d);
479 >                                                /* average colors */
480 >        cvtcolor(radrgb, &c_cmaterial->rd_c, c_cmaterial->rd);
481 >        cvtcolor(c2, &c_cmaterial->rs_c, c_cmaterial->rs);
482          addcolor(radrgb, c2);
482        if (c_cmaterial->rs < .999) {
483                d = c_cmaterial->rd/(1. - c_cmaterial->rs);
484                scalecolor(radrgb, d);
485        }
483          printf("\nvoid metal %s\n0\n0\n", mname);
484          printf("5 %f %f %f %f %f\n", colval(radrgb,RED),
485                          colval(radrgb,GRN), colval(radrgb,BLU),
486 <                        c_cmaterial->rs, c_cmaterial->rs_a);
486 >                        c_cmaterial->rs/(c_cmaterial->rd + c_cmaterial->rs),
487 >                        c_cmaterial->rs_a);
488          return(mname);
489   }
490  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines