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

Comparing ray/src/rt/ambcomp.c (file contents):
Revision 1.2 by greg, Fri Jun 7 13:43:05 1991 UTC vs.
Revision 1.3 by greg, Fri Jun 7 17:08:34 1991 UTC

# Line 151 | Line 151 | FVECT  pg, dg;
151          if (ns > 0) {                   /* perform super-sampling */
152                  comperrs(div, hemi);                    /* compute errors */
153                  qsort(div, ndivs, sizeof(AMBSAMP), ambcmp);     /* sort divs */
154                dp = div + ndivs;                       /* skim excess */
155                for (i = ndivs; i > ns; i--) {
156                        dp--;
157                        addcolor(acol, dp->v);
158                        arad += dp->r;
159                }
154                                                  /* super-sample */
155                  for (i = ns; i > 0; i--) {
156                          copystruct(&dnew, div);
# Line 172 | Line 166 | FVECT  pg, dg;
166                                  dp++;
167                          }
168                          copystruct(dp, &dnew);
175                                                        /* extract darkest */
176                        if (i <= ndivs) {
177                                dp = div + i-1;
178                                arad += dp->r;
179                                if (dp->n > 1) {
180                                        b = 1.0/dp->n;
181                                        scalecolor(dp->v, b);
182                                        dp->r *= b;
183                                        dp->n = 1;
184                                }
185                                addcolor(acol, dp->v);
186                        }
169                  }
170                  if (pg != NULL || dg != NULL)   /* restore order */
171                          qsort(div, ndivs, sizeof(AMBSAMP), ambnorm);
172          }
173                                          /* compute returned values */
174 <        if (pg != NULL)
175 <                posgradient(pg, div, &hemi);
176 <        if (dg != NULL)
177 <                dirgradient(dg, div, &hemi);
178 <        if (div != NULL)
174 >        if (div != NULL) {
175 >                for (i = ndivs, dp = div; i-- > 0; dp++) {
176 >                        arad += dp->r;
177 >                        if (dp->n > 1) {
178 >                                b = 1.0/dp->n;
179 >                                scalecolor(dp->v, b);
180 >                                dp->r *= b;
181 >                                dp->n = 1;
182 >                        }
183 >                        addcolor(acol, dp->v);
184 >                }
185 >                if (pg != NULL)
186 >                        posgradient(pg, div, &hemi);
187 >                if (dg != NULL)
188 >                        dirgradient(dg, div, &hemi);
189                  free((char *)div);
190 +        }
191          b = 1.0/ndivs;
192          scalecolor(acol, b);
193          if (arad <= FTINY)
# Line 231 | Line 224 | RAY  *r;
224          if (i >= 3)
225                  error(CONSISTENCY, "bad ray direction in inithemi");
226          hp->uy[i] = 1.0;
227 <        fcross(hp->ux, hp->uz, hp->uy);
227 >        fcross(hp->ux, hp->uy, hp->uz);
228          normalize(hp->ux);
229 <        fcross(hp->uy, hp->ux, hp->uz);
229 >        fcross(hp->uy, hp->uz, hp->ux);
230   }
231  
232  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines