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

Comparing ray/src/common/bsdf_t.c (file contents):
Revision 3.15 by greg, Fri Jun 3 18:12:58 2011 UTC vs.
Revision 3.16 by greg, Sun Jun 5 20:27:14 2011 UTC

# Line 299 | Line 299 | SDdotravTre(const SDNode *st, const double *pos, int c
299                                          bmin[i] = cmin[i] + csiz;
300                                  else
301                                          bmin[i] = cmin[i];
302                        for (i = SD_MAXDIM; i-- > st->ndim; )
303                                bmin[i] = .0;
302  
303                          rval += rv = SDdotravTre(st->u.t[n], pos, cmask,
304                                                          cf, cptr, bmin, csiz);
# Line 326 | Line 324 | SDdotravTre(const SDNode *st, const double *pos, int c
324                                  clim[i][0] = 0;
325                                  clim[i][1] = 1 << st->log2GR;
326                          }
329                                        /* fill in unused dimensions */
330                for (i = SD_MAXDIM; i-- > st->ndim; ) {
331                        clim[i][0] = 0; clim[i][1] = 1;
332                }
327   #if (SD_MAXDIM == 4)
328                  bmin[0] = cmin[0] + csiz*clim[0][0];
329                  for (cpos[0] = clim[0][0]; cpos[0] < clim[0][1]; cpos[0]++) {
330                      bmin[1] = cmin[1] + csiz*clim[1][0];
331                      for (cpos[1] = clim[1][0]; cpos[1] < clim[1][1]; cpos[1]++) {
332                          bmin[2] = cmin[2] + csiz*clim[2][0];
333 <                        for (cpos[2] = clim[2][0]; cpos[2] < clim[2][1]; cpos[2]++) {
334 <                            bmin[3] = cmin[3] + csiz*(cpos[3] = clim[3][0]);
333 >                        if (st->ndim == 3) {
334 >                            cpos[2] = clim[2][0];
335                              n = cpos[0];
336 <                            for (i = 1; i < st->ndim; i++)
336 >                            for (i = 1; i < 3; i++)
337                                  n = (n << st->log2GR) + cpos[i];
338 <                            for ( ; cpos[3] < clim[3][1]; cpos[3]++) {
338 >                            for ( ; cpos[2] < clim[2][1]; cpos[2]++) {
339                                  rval += rv = (*cf)(st->u.v[n++], bmin, csiz, cptr);
340                                  if (rv < 0)
341                                      return rv;
342 <                                bmin[3] += csiz;
342 >                                bmin[2] += csiz;
343                              }
344 <                            bmin[2] += csiz;
344 >                        } else {
345 >                            for (cpos[2] = clim[2][0]; cpos[2] < clim[2][1]; cpos[2]++) {
346 >                                bmin[3] = cmin[3] + csiz*(cpos[3] = clim[3][0]);
347 >                                n = cpos[0];
348 >                                for (i = 1; i < 4; i++)
349 >                                    n = (n << st->log2GR) + cpos[i];
350 >                                for ( ; cpos[3] < clim[3][1]; cpos[3]++) {
351 >                                    rval += rv = (*cf)(st->u.v[n++], bmin, csiz, cptr);
352 >                                    if (rv < 0)
353 >                                        return rv;
354 >                                    bmin[3] += csiz;
355 >                                }
356 >                                bmin[2] += csiz;
357 >                            }
358                          }
359                          bmin[1] += csiz;
360                      }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines