| 174 |
|
sum = 0; /* average over patches */ |
| 175 |
|
for (n = npsamps; n-- > 0; ) { |
| 176 |
|
fo_getvec(vout, j+(n+frandom())/npsamps, abp); |
| 177 |
< |
fi_getvec(vin, i+(n+frandom())/npsamps, abp); |
| 177 |
> |
fi_getvec(vin, i+urand(n), abp); |
| 178 |
|
ec = SDevalBSDF(&sv, vout, vin, &bsd); |
| 179 |
|
if (ec != SDEnone) |
| 180 |
|
goto err; |
| 195 |
|
sum = 0; /* average over patches */ |
| 196 |
|
for (n = npsamps; n-- > 0; ) { |
| 197 |
|
bo_getvec(vout, j+(n+frandom())/npsamps, abp); |
| 198 |
< |
bi_getvec(vin, i+(n+frandom())/npsamps, abp); |
| 198 |
> |
bi_getvec(vin, i+urand(n), abp); |
| 199 |
|
ec = SDevalBSDF(&sv, vout, vin, &bsd); |
| 200 |
|
if (ec != SDEnone) |
| 201 |
|
goto err; |
| 216 |
|
sum = 0; /* average over patches */ |
| 217 |
|
for (n = npsamps; n-- > 0; ) { |
| 218 |
|
bo_getvec(vout, j+(n+frandom())/npsamps, abp); |
| 219 |
< |
fi_getvec(vin, i+(n+frandom())/npsamps, abp); |
| 219 |
> |
fi_getvec(vin, i+urand(n), abp); |
| 220 |
|
ec = SDevalBSDF(&sv, vout, vin, &bsd); |
| 221 |
|
if (ec != SDEnone) |
| 222 |
|
goto err; |
| 237 |
|
sum = 0; /* average over patches */ |
| 238 |
|
for (n = npsamps; n-- > 0; ) { |
| 239 |
|
fo_getvec(vout, j+(n+frandom())/npsamps, abp); |
| 240 |
< |
bi_getvec(vin, i+(n+frandom())/npsamps, abp); |
| 240 |
> |
bi_getvec(vin, i+urand(n), abp); |
| 241 |
|
ec = SDevalBSDF(&sv, vout, vin, &bsd); |
| 242 |
|
if (ec != SDEnone) |
| 243 |
|
goto err; |
| 326 |
|
} |
| 327 |
|
bsdfarr[j*abp->nangles + i] = sum*output_orient/npsamps; |
| 328 |
|
} |
| 329 |
+ |
if (rbf != NULL) |
| 330 |
+ |
free(rbf); |
| 331 |
|
} |
| 332 |
|
n = 0; /* write out our matrix */ |
| 333 |
|
for (j = 0; j < abp->nangles; j++) { |