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 2.94 by greg, Wed Apr 17 17:34:11 2024 UTC vs.
Revision 2.95 by greg, Fri Apr 19 01:52:50 2024 UTC

# Line 173 | Line 173 | getambdiffs(AMBHEMI *hp)
173          if (earr == NULL)               /* out of memory? */
174                  return(NULL);
175                                          /* sum squared neighbor diffs */
176 <        for (ap = hp->sa, ep = earr, i = 0; i < hp->ns; i++)
176 >        ap = hp->sa;
177 >        ep = earr + hp->ns*hp->ns;      /* original estimates to scratch */
178 >        for (i = 0; i < hp->ns; i++)
179              for (j = 0; j < hp->ns; j++, ap++, ep++) {
180                  b = pbright(ap[0].v);
181                  if (i) {                /* from above */
# Line 199 | Line 201 | getambdiffs(AMBHEMI *hp)
201                  ep[-hp->ns-1] += d2;
202              }
203                                          /* correct for number of neighbors */
204 <        earr[0] *= 6./3.;
205 <        earr[hp->ns-1] *= 6./3.;
206 <        earr[(hp->ns-1)*hp->ns] *= 6./3.;
207 <        earr[(hp->ns-1)*hp->ns + hp->ns-1] *= 6./3.;
204 >        ep = earr + hp->ns*hp->ns;
205 >        ep[0] *= 6./3.;
206 >        ep[hp->ns-1] *= 6./3.;
207 >        ep[(hp->ns-1)*hp->ns] *= 6./3.;
208 >        ep[(hp->ns-1)*hp->ns + hp->ns-1] *= 6./3.;
209          for (i = 1; i < hp->ns-1; i++) {
210 <                earr[i*hp->ns] *= 6./5.;
211 <                earr[i*hp->ns + hp->ns-1] *= 6./5.;
210 >                ep[i*hp->ns] *= 6./5.;
211 >                ep[i*hp->ns + hp->ns-1] *= 6./5.;
212          }
213          for (j = 1; j < hp->ns-1; j++) {
214 <                earr[j] *= 6./5.;
215 <                earr[(hp->ns-1)*hp->ns + j] *= 6./5.;
214 >                ep[j] *= 6./5.;
215 >                ep[(hp->ns-1)*hp->ns + j] *= 6./5.;
216          }
217 <                                        /* blur map to reduce bias */
215 <        memcpy(earr+hp->ns*hp->ns, earr, hp->ns*hp->ns*sizeof(float));
217 >                                        /* blur final map to reduce bias */
218          for (i = 0; i < hp->ns-1; i++) {
219              float  *ep2;
220              ep = earr + i*hp->ns;
221              ep2 = ep + hp->ns*hp->ns;
222              for (j = 0; j < hp->ns-1; j++, ep++, ep2++) {
223 <                ep[0] += .125*(ep2[1] + ep2[hp->ns]) - .5*ep2[0];
223 >                ep[0] += .5*ep2[0] + .125*(ep2[1] + ep2[hp->ns]);
224                  ep[1] += .125*ep2[0];
225                  ep[hp->ns] += .125*ep2[0];
226              }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines