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.31 by gwlarson, Tue Oct 27 09:08:26 1998 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 326 | Line 328 | userr:
328   }
329  
330  
331 + int
332   headline(s)                             /* process header string */
333   char    *s;
334   {
335          char    fmt[32];
336  
337          if (isheadid(s))
338 <                return;
338 >                return(0);
339          if (formatval(fmt, s)) {
340 <                wrongformat = strcmp(fmt, COLRFMT);
341 <                return;
340 >                if (globmatch(ourfmt, fmt)) {
341 >                        wrongformat = 0;
342 >                        strcpy(ourfmt, fmt);
343 >                } else
344 >                        wrongformat = 1;
345 >                return(0);
346          }
347          if (nvavg < 2) {
348                  putc('\t', stdout);
# Line 343 | Line 350 | char   *s;
350          }
351          if (isexpos(s)) {
352                  theirexp *= exposval(s);
353 <                return;
353 >                return(0);
354          }
355          if (isview(s) && sscanview(&theirview, s) > 0)
356                  gotview++;
357 +        return(0);
358   }
359  
360  
# Line 516 | Line 524 | register VIEW  *vw1, *vw2;
524   {
525          double  m4t[4][4];
526  
527 <        if (vw1->type != VT_PER && vw1->type != VT_PAR)
527 >        if (vw1->type != VT_PER & vw1->type != VT_PAR)
528                  return(0);
529 <        if (vw2->type != VT_PER && vw2->type != VT_PAR)
529 >        if (vw2->type != VT_PER & vw2->type != VT_PAR)
530                  return(0);
531          setident4(xfmat);
532          xfmat[0][0] = vw1->hvec[0];
# Line 635 | Line 643 | double z;
643                  y1 = p0->y + c1*s1y/l1;
644                  for (c2 = l2; c2-- > 0; ) {
645                          x = x1 + c2*s2x/l2;
646 <                        if (x < 0 || x >= hresolu)
646 >                        if (x < 0 | x >= hresolu)
647                                  continue;
648                          y = y1 + c2*s2y/l2;
649 <                        if (y < 0 || y >= vresolu)
649 >                        if (y < 0 | y >= vresolu)
650                                  continue;
651                          if (averaging) {
652                                  if (zscan(y)[x] <= 0 || zscan(y)[x]-z
# Line 673 | Line 681 | register FVECT pos;
681          if (usematrix) {
682                  pos[0] += theirview.hoff - .5;
683                  pos[1] += theirview.voff - .5;
684 <                if (normdist && theirview.type == VT_PER)
684 >                if (normdist & theirview.type == VT_PER)
685                          d = sqrt(1. + pos[0]*pos[0]*theirview.hn2
686                                          + pos[1]*pos[1]*theirview.vn2);
687                  else
# Line 707 | Line 715 | register FVECT pos;
715                  if (pos[2] <= 0)
716                          return(0);
717          }
718 <        if (pos[0] < 0 || pos[0] >= 1-FTINY || pos[1] < 0 || pos[1] >= 1-FTINY)
718 >        if (pos[0] < 0 | pos[0] >= 1-FTINY | pos[1] < 0 | pos[1] >= 1-FTINY)
719                  return(0);
720          if (!averaging)
721                  return(1);
# Line 924 | Line 932 | int    (*fill)();
932                  for (x = 0; x < hresolu; x++)
933                          if (zscan(y)[x] <= 0)
934                                  (*fill)(x,y);
935 +        if (fill == rcalfill)
936 +                clearqueue();
937   }
938  
939  
# Line 1161 | Line 1171 | clearqueue()                           /* process queue */
1171          }
1172                                          /* mark end and get results */
1173          bzero((char *)fbp, 6*sizeof(float));
1174 <        if (process(PDesc, fbuf, fbuf, 4*sizeof(float)*queuesiz,
1174 >        if (process(PDesc, fbuf, fbuf, 4*sizeof(float)*(queuesiz+1),
1175                          6*sizeof(float)*(queuesiz+1)) !=
1176 <                        4*sizeof(float)*queuesiz) {
1176 >                        4*sizeof(float)*(queuesiz+1)) {
1177                  fprintf(stderr, "%s: error reading from rtrace process\n",
1178                                  progname);
1179                  exit(1);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines