149 |
|
bsdf = eval_rbfrep(rbf, iovec+3) * |
150 |
|
output_orient/iovec[5]; |
151 |
|
else { |
152 |
< |
double ssa[3], ssvec[6]; |
152 |
> |
double ssa[3], ssvec[6], sum; |
153 |
|
int ssi; |
154 |
|
bsdf = funvalue(funame, 6, iovec); |
155 |
|
if (abs_diff(bsdf, last_bsdf) > ssamp_thresh) { |
156 |
< |
bsdf = 0; /* super-sample voxel */ |
156 |
> |
sum = 0; /* super-sample voxel */ |
157 |
|
for (ssi = nssamp; ssi--; ) { |
158 |
|
SDmultiSamp(ssa, 3, (ssi+drand48())/nssamp); |
159 |
|
ssvec[0] = 2.*(ix+ssa[0])/sqres - 1.; |
165 |
|
ssvec[5] = output_orient * |
166 |
|
sqrt(1. - ssvec[3]*ssvec[3] - |
167 |
|
ssvec[4]*ssvec[4]); |
168 |
< |
bsdf += funvalue(funame, 6, ssvec); |
168 |
> |
sum += funvalue(funame, 6, ssvec); |
169 |
|
} |
170 |
< |
bsdf /= (float)nssamp; |
170 |
> |
bsdf = sum/nssamp; |
171 |
|
} |
172 |
|
} |
173 |
|
if (pctcull >= 0) |
237 |
|
bsdf = eval_rbfrep(rbf, iovec+3) * |
238 |
|
output_orient/iovec[5]; |
239 |
|
else { |
240 |
< |
double ssa[4], ssvec[6]; |
240 |
> |
double ssa[4], ssvec[6], sum; |
241 |
|
int ssi; |
242 |
|
bsdf = funvalue(funame, 6, iovec); |
243 |
|
if (abs_diff(bsdf, last_bsdf) > ssamp_thresh) { |
244 |
< |
bsdf = 0; /* super-sample voxel */ |
244 |
> |
sum = 0; /* super-sample voxel */ |
245 |
|
for (ssi = nssamp; ssi--; ) { |
246 |
|
SDmultiSamp(ssa, 4, (ssi+drand48())/nssamp); |
247 |
|
SDsquare2disk(ssvec, 1.-(ix+ssa[0])/sqres, |
254 |
|
ssvec[5] = output_orient * |
255 |
|
sqrt(1. - ssvec[3]*ssvec[3] - |
256 |
|
ssvec[4]*ssvec[4]); |
257 |
< |
bsdf += funvalue(funame, 6, ssvec); |
257 |
> |
sum += funvalue(funame, 6, ssvec); |
258 |
|
} |
259 |
< |
bsdf /= (float)nssamp; |
259 |
> |
bsdf = sum/nssamp; |
260 |
|
} |
261 |
|
} |
262 |
|
if (pctcull >= 0) |