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

Comparing ray/src/util/vwrays.c (file contents):
Revision 3.11 by greg, Thu Jan 20 23:52:02 2005 UTC vs.
Revision 3.12 by greg, Mon Sep 19 04:26:09 2005 UTC

# Line 7 | Line 7 | static const char      RCSid[] = "$Id$";
7  
8   #include "platform.h"
9   #include "standard.h"
10 + #include "random.h"
11   #include "view.h"
12  
13   typedef void putfunc(FVECT ro, FVECT rd);
# Line 24 | Line 25 | RESOLU rs = {PIXSTANDARD, 512, 512};
25  
26   double  pa = 1.;
27  
28 + double  pj = 0.;
29 +
30   int     zfd = -1;
31  
32   int     fromstdin = 0;
# Line 96 | Line 99 | main(
99                                  exit(1);
100                          }
101                          break;
102 <                case 'p':                       /* pixel aspect ratio */
103 <                        pa = atof(argv[++i]);
102 >                case 'p':                       /* pixel aspect or jitter */
103 >                        if (argv[i][2] == 'a')
104 >                                pa = atof(argv[++i]);
105 >                        else if (argv[i][2] == 'j')
106 >                                pj= atof(argv[++i]);
107 >                        else
108 >                                goto userr;
109                          break;
110                  case 'i':                       /* get pixels from stdin */
111                          fromstdin = 1;
# Line 148 | Line 156 | userr:
156  
157  
158   static void
159 + jitterloc(
160 +        RREAL   loc[2]
161 + )
162 + {
163 +        if (pj > FTINY) {
164 +                loc[0] += pj*(.5 - frandom())/rs.xr;
165 +                loc[1] += pj*(.5 - frandom())/rs.yr;
166 +        }
167 + }
168 +
169 +
170 + static void
171   pix2rays(
172          FILE *fp
173   )
# Line 155 | Line 175 | pix2rays(
175          static FVECT    rorg, rdir;
176          float   zval;
177          double  px, py;
178 +        RREAL   loc[2];
179          int     pp[2];
180          double  d;
181          register int    i;
# Line 168 | Line 189 | pix2rays(
189                                          progname, px, py);
190                          exit(1);
191                  }
192 +                loc[0] = px/rs.xr; loc[1] = py/rs.yr;
193                  if (zfd >= 0) {
194 <                        loc2pix(pp, &rs, px/rs.xr, py/rs.yr);
194 >                        loc2pix(pp, &rs, loc[0], loc[1]);
195                          if (lseek(zfd,
196                                  (pp[1]*scanlen(&rs)+pp[0])*sizeof(float),
197                                                  SEEK_SET) < 0 ||
# Line 180 | Line 202 | pix2rays(
202                                  exit(1);
203                          }
204                  }
205 <                d = viewray(rorg, rdir, &vw, px/rs.xr, py/rs.yr);
205 >                jitterloc(loc);
206 >                d = viewray(rorg, rdir, &vw, loc[0], loc[1]);
207                  if (d < -FTINY)
208                          rorg[0] = rorg[1] = rorg[2] =
209                          rdir[0] = rdir[1] = rdir[2] = 0.;
# Line 204 | Line 227 | pix2rays(
227   static void
228   putrays(void)
229   {
230 <        static RREAL    loc[2];
231 <        static FVECT    rorg, rdir;
230 >        RREAL   loc[2];
231 >        FVECT   rorg, rdir;
232          float   *zbuf = NULL;
233          int     sc;
234          double  d;
# Line 229 | Line 252 | putrays(void)
252                  }
253                  for (si = 0; si < scanlen(&rs); si++) {
254                          pix2loc(loc, &rs, si, sc);
255 +                        jitterloc(loc);
256                          d = viewray(rorg, rdir, &vw, loc[0], loc[1]);
257                          if (d < -FTINY)
258                                  rorg[0] = rorg[1] = rorg[2] =

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines