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

Comparing ray/src/px/pinterp.c (file contents):
Revision 2.24 by greg, Thu Sep 14 13:40:17 1995 UTC vs.
Revision 2.30 by gregl, Mon Oct 20 16:36:32 1997 UTC

# Line 39 | Line 39 | static char SCCSid[] = "$SunId$ LBL";
39  
40   #define PACKSIZ         256             /* max. calculation packet size */
41  
42 < #define RTCOM           "rtrace -h- -ovl -fff "
42 > #define RTCOM           "rtrace -h- -ovl -fff -ld- -i- -I- "
43  
44   #define ABS(x)          ((x)>0?(x):-(x))
45  
# Line 61 | Line 61 | COLR   *ourpict;                       /* output picture (COLR's) */
61   COLOR   *ourspict;                      /* output pixel sums (averaging) */
62   float   *ourweigh = NULL;               /* output pixel weights (averaging) */
63   float   *ourzbuf;                       /* corresponding z-buffer */
64 < COLOR   *ourbpict = NULL;               /* blurred picture */
64 > COLOR   *ourbpict = NULL;               /* blurred picture (view averaging) */
65  
66   VIEW    avgview;                        /* average view for -B option */
67   int     nvavg;                          /* number of views averaged */
# Line 76 | Line 76 | COLR   backcolr = BLKCOLR;             /* background color */
76   COLOR   backcolor = BLKCOLOR;           /* background color (float) */
77   double  backz = 0.0;                    /* background z value */
78   int     normdist = 1;                   /* i/o normalized distance? */
79 + char    ourfmt[LPICFMT+1] = PICFMT;     /* original picture format */
80   double  ourexp = -1;                    /* original picture exposure */
81   int     expadj = 0;                     /* exposure adjustment (f-stops) */
82   double  rexpadj = 1;                    /* real exposure adjustment */
# Line 92 | Line 93 | int    PDesc[3] = {-1,-1,-1};          /* rtrace process descript
93   #define childpid        (PDesc[2])
94   unsigned short  queue[PACKSIZ][2];      /* pending pixels */
95   int     packsiz;                        /* actual packet size */
96 < int     queuesiz;                       /* number of pixels pending */
96 > int     queuesiz = 0;                   /* number of pixels pending */
97  
98   extern double   movepixel();
99  
# Line 251 | Line 252 | char   *argv[];
252                                  rexpadj = pow(2.0, (double)expadj);
253                  }
254                                                  /* set view */
255 <        if (nextview(doblur ? stdin : NULL) == EOF) {
255 >        if (nextview(doblur ? stdin : (FILE *)NULL) == EOF) {
256                  fprintf(stderr, "%s: no view on standard input!\n",
257                                  progname);
258                  exit(1);
# Line 308 | Line 309 | char   *argv[];
309                  ourexp = rexpadj;
310          if (ourexp < .995 | ourexp > 1.005)
311                  fputexpos(ourexp, stdout);
312 <        fputformat(COLRFMT, stdout);
312 >        if (strcmp(ourfmt, PICFMT))             /* print format if known */
313 >                fputformat(ourfmt, stdout);
314          putc('\n', stdout);
315                                                          /* write picture */
316          writepicture();
# Line 334 | Line 336 | char   *s;
336          if (isheadid(s))
337                  return;
338          if (formatval(fmt, s)) {
339 <                wrongformat = strcmp(fmt, COLRFMT);
339 >                if (globmatch(ourfmt, fmt)) {
340 >                        wrongformat = 0;
341 >                        strcpy(ourfmt, fmt);
342 >                } else
343 >                        wrongformat = 1;
344                  return;
345          }
346          if (nvavg < 2) {
# Line 516 | Line 522 | register VIEW  *vw1, *vw2;
522   {
523          double  m4t[4][4];
524  
525 <        if (vw1->type != VT_PER && vw1->type != VT_PAR)
525 >        if (vw1->type != VT_PER & vw1->type != VT_PAR)
526                  return(0);
527 <        if (vw2->type != VT_PER && vw2->type != VT_PAR)
527 >        if (vw2->type != VT_PER & vw2->type != VT_PAR)
528                  return(0);
529          setident4(xfmat);
530          xfmat[0][0] = vw1->hvec[0];
# Line 635 | Line 641 | double z;
641                  y1 = p0->y + c1*s1y/l1;
642                  for (c2 = l2; c2-- > 0; ) {
643                          x = x1 + c2*s2x/l2;
644 <                        if (x < 0 || x >= hresolu)
644 >                        if (x < 0 | x >= hresolu)
645                                  continue;
646                          y = y1 + c2*s2y/l2;
647 <                        if (y < 0 || y >= vresolu)
647 >                        if (y < 0 | y >= vresolu)
648                                  continue;
649                          if (averaging) {
650                                  if (zscan(y)[x] <= 0 || zscan(y)[x]-z
# Line 673 | Line 679 | register FVECT pos;
679          if (usematrix) {
680                  pos[0] += theirview.hoff - .5;
681                  pos[1] += theirview.voff - .5;
682 <                if (normdist && theirview.type == VT_PER)
682 >                if (normdist & theirview.type == VT_PER)
683                          d = sqrt(1. + pos[0]*pos[0]*theirview.hn2
684                                          + pos[1]*pos[1]*theirview.vn2);
685                  else
# Line 707 | Line 713 | register FVECT pos;
713                  if (pos[2] <= 0)
714                          return(0);
715          }
716 <        if (pos[0] < 0 || pos[0] >= 1-FTINY || pos[1] < 0 || pos[1] >= 1-FTINY)
716 >        if (pos[0] < 0 | pos[0] >= 1-FTINY | pos[1] < 0 | pos[1] >= 1-FTINY)
717                  return(0);
718          if (!averaging)
719                  return(1);
# Line 924 | Line 930 | int    (*fill)();
930                  for (x = 0; x < hresolu; x++)
931                          if (zscan(y)[x] <= 0)
932                                  (*fill)(x,y);
933 +        if (fill == rcalfill)
934 +                clearqueue();
935   }
936  
937  
# Line 1161 | Line 1169 | clearqueue()                           /* process queue */
1169          }
1170                                          /* mark end and get results */
1171          bzero((char *)fbp, 6*sizeof(float));
1172 <        if (process(PDesc, fbuf, fbuf, 4*sizeof(float)*queuesiz,
1172 >        if (process(PDesc, fbuf, fbuf, 4*sizeof(float)*(queuesiz+1),
1173                          6*sizeof(float)*(queuesiz+1)) !=
1174 <                        4*sizeof(float)*queuesiz) {
1174 >                        4*sizeof(float)*(queuesiz+1)) {
1175                  fprintf(stderr, "%s: error reading from rtrace process\n",
1176                                  progname);
1177                  exit(1);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines