91 |
|
return; |
92 |
|
for (n = (st->log2GR < 0) << st->ndim; n--; ) |
93 |
|
SDfreeTre(st->u.t[n]); |
94 |
< |
free((void *)st); |
94 |
> |
free(st); |
95 |
|
} |
96 |
|
|
97 |
|
/* Free a variable-resolution BSDF */ |
125 |
|
static float * |
126 |
|
grid_branch_start(SDNode *st, int n) |
127 |
|
{ |
128 |
< |
unsigned skipsiz = 1 << st->log2GR; |
128 |
> |
unsigned skipsiz = 1 << (st->log2GR - 1); |
129 |
|
float *vptr = st->u.v; |
130 |
|
int i; |
131 |
|
|
132 |
< |
for (i = 0; i < st->ndim; skipsiz <<= st->log2GR) |
133 |
< |
if (1<<i++ & n) |
134 |
< |
vptr += skipsiz >> 1; |
132 |
> |
for (i = st->ndim; i--; skipsiz <<= st->log2GR) |
133 |
> |
if (1<<i & n) |
134 |
> |
vptr += skipsiz; |
135 |
|
return vptr; |
136 |
|
} |
137 |
|
|