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

Comparing ray/src/px/pf2.c (file contents):
Revision 2.7 by schorsch, Sun Mar 28 20:33:14 2004 UTC vs.
Revision 2.11 by greg, Fri Dec 8 17:56:26 2023 UTC

# Line 5 | Line 5 | static const char      RCSid[] = "$Id$";
5   *  pf2.c - routines used by pfilt.
6   */
7  
8 #include  <stdio.h>
9 #include  <stdlib.h>
10 #include  <math.h>
11
12 #include  "rterror.h"
13 #include  "random.h"
14 #include  "color.h"
8   #include  "pfilt.h"
9 + #include  "random.h"
10  
17 #define  PI             3.14159265359
18 #define  FTINY          (1e-6)
19
11   #define  AVGLVL         0.5     /* target mean brightness */
12  
13   double  avgbrt;                 /* average picture brightness */
# Line 33 | Line 24 | HOTPIX *head;                  /* head of avgbrt pixel list */
24  
25   double  sprdfact;               /* computed spread factor */
26  
27 < static void starpoint(COLOR  fcol, int  x, int  y, HOTPIX        *hp);
27 > static void starpoint(SCOLOR fcol, int  x, int  y, HOTPIX        *hp);
28  
29  
30 < extern void
30 > void
31   pass1init(void)                 /* prepare for first pass */
32   {
33          avgbrt = 0.0;
# Line 45 | Line 36 | pass1init(void)                        /* prepare for first pass */
36   }
37  
38  
39 < extern void
39 > void
40   pass1default(void)                      /* for single pass */
41   {
42          avgbrt = AVGLVL;
# Line 54 | Line 45 | pass1default(void)                     /* for single pass */
45   }
46  
47  
48 < extern void
48 > void
49   pass1scan(              /* process first pass scanline */
50 <        register COLOR  *scan,
50 >        COLORV  *scan,
51          int  y
52   )
53   {
54          double  cbrt;
55 <        register int  x;
56 <        register HOTPIX  *hp;
55 >        int  x;
56 >        HOTPIX   *hp;
57  
58          for (x = 0; x < xres; x++) {
59          
60 <                cbrt = (*ourbright)(scan[x]);
60 >                cbrt = (*ourbright)(scan+x*NCSAMP);
61  
62                  if (cbrt <= 0)
63                          continue;
# Line 82 | Line 73 | pass1scan(             /* process first pass scanline */
73                                                  progname);
74                                  quit(1);
75                          }
76 <                        copycolor(hp->val, scan[x]);
76 >                        scolor_color(hp->val, scan+x*NCSAMP);
77                          hp->x = x;
78                          hp->y = y;
79 <                        hp->slope = tan(PI*(0.5-(random()%npts+0.5)/npts));
79 >                        hp->slope = ttan(PI*(0.5-(irandom(npts)+0.5)/npts));
80                          hp->next = head;
81                          head = hp;
82                  }
# Line 93 | Line 84 | pass1scan(             /* process first pass scanline */
84   }
85  
86  
87 < extern void
87 > void
88   pass2init(void)                 /* prepare for final pass */
89   {
90          if (!npix) {
# Line 105 | Line 96 | pass2init(void)                        /* prepare for final pass */
96  
97          scalecolor(exposure,  AVGLVL/avgbrt);
98          
99 <        sprdfact = spread / (hotlvl * (*ourbright)(exposure))
99 >        sprdfact = spread / (hotlvl * bright(exposure))
100                          * ((double)xres*xres + (double)yres*yres) / 4.0;
101   }
102  
103  
104 < extern void
104 > void
105   pass2scan(              /* process final pass scanline */
106 <        register COLOR  *scan,
106 >        COLORV  *scan,
107          int  y
108   )
109   {
110          int  xmin, xmax;
111 <        register int  x;
112 <        register HOTPIX  *hp;
111 >        int  x;
112 >        HOTPIX   *hp;
113          
114          for (hp = head; hp != NULL; hp = hp->next) {
115                  if (hp->slope > FTINY) {
# Line 139 | Line 130 | pass2scan(             /* process final pass scanline */
130                  if (xmax >= xres)
131                          xmax = xres-1;
132                  for (x = xmin; x <= xmax; x++)
133 <                        starpoint(scan[x], x, y, hp);
133 >                        starpoint(scan+x*NCSAMP, x, y, hp);
134          }
135          for (x = 0; x < xres; x++)
136 <                multcolor(scan[x], exposure);
136 >                smultcolor(scan+x*NCSAMP, exposure);
137   }
138  
139  
140   static void
141   starpoint(              /* pixel is on the star's point */
142 <        COLOR  fcol,
142 >        SCOLOR  fcol,
143          int  x,
144          int  y,
145 <        register HOTPIX  *hp
145 >        HOTPIX   *hp
146   )
147   {
148          COLOR  ctmp;
# Line 164 | Line 155 | starpoint(             /* pixel is on the star's point */
155                          return;
156                  copycolor(ctmp, hp->val);
157                  scalecolor(ctmp, d2);
158 <                addcolor(fcol, ctmp);
158 >                saddcolor(fcol, ctmp);
159          } else if (d2 > FTINY) {
160 <                addcolor(fcol, hp->val);
160 >                saddcolor(fcol, hp->val);
161          }
162   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines