| 77 |
|
copycolor(ar.rcoef, h->acoef); |
| 78 |
|
if (rayorigin(&ar, AMBIENT, r, ar.rcoef) < 0) |
| 79 |
|
return(-1); |
| 80 |
< |
if (ambacc > FTINY) |
| 81 |
< |
copycolor(ar.rcoef, h->acoef); |
| 80 |
> |
if (ambacc > FTINY) { |
| 81 |
> |
multcolor(ar.rcoef, h->acoef); |
| 82 |
> |
scalecolor(ar.rcoef, 1./AVGREFL); |
| 83 |
> |
} |
| 84 |
|
hlist[0] = r->rno; |
| 85 |
|
hlist[1] = dp->t; |
| 86 |
|
hlist[2] = dp->p; |
| 166 |
|
/* initialize hemisphere */ |
| 167 |
|
inithemi(&hemi, acol, r, wt); |
| 168 |
|
ndivs = hemi.nt * hemi.np; |
| 169 |
< |
/* initialize sum */ |
| 169 |
> |
/* initialize */ |
| 170 |
> |
if (pg != NULL) |
| 171 |
> |
pg[0] = pg[1] = pg[2] = 0.0; |
| 172 |
> |
if (dg != NULL) |
| 173 |
> |
dg[0] = dg[1] = dg[2] = 0.0; |
| 174 |
|
setcolor(acol, 0.0, 0.0, 0.0); |
| 175 |
|
if (ndivs == 0) |
| 176 |
|
return(0.0); |
| 192 |
|
dp->r = 0.0; |
| 193 |
|
dp->n = 0; |
| 194 |
|
if (divsample(dp, &hemi, r) < 0) { |
| 195 |
< |
if (div != NULL) dp++; |
| 195 |
> |
if (div == NULL) continue; |
| 196 |
> |
dp++; |
| 197 |
> |
hemi.ns = 0; /* incomplete sampling */ |
| 198 |
> |
pg = dg = NULL; |
| 199 |
|
continue; |
| 200 |
|
} |
| 201 |
|
arad += dp->r; |
| 242 |
|
} |
| 243 |
|
b = bright(acol); |
| 244 |
|
if (b > FTINY) { |
| 245 |
< |
b = 1.0/b; /* normalize gradient(s) */ |
| 245 |
> |
b = 1.0/b; /* compute & normalize gradient(s) */ |
| 246 |
|
if (pg != NULL) { |
| 247 |
|
posgradient(pg, div, &hemi); |
| 248 |
|
for (i = 0; i < 3; i++) |
| 253 |
|
for (i = 0; i < 3; i++) |
| 254 |
|
dg[i] *= b; |
| 255 |
|
} |
| 247 |
– |
} else { |
| 248 |
– |
if (pg != NULL) |
| 249 |
– |
for (i = 0; i < 3; i++) |
| 250 |
– |
pg[i] = 0.0; |
| 251 |
– |
if (dg != NULL) |
| 252 |
– |
for (i = 0; i < 3; i++) |
| 253 |
– |
dg[i] = 0.0; |
| 256 |
|
} |
| 257 |
|
free((void *)div); |
| 258 |
|
} |