| 689 |
|
addcolor(acol, ap->v); |
| 690 |
|
++cnt; |
| 691 |
|
} |
| 692 |
< |
if (!cnt) { |
| 693 |
< |
setcolor(rcol, 0.0, 0.0, 0.0); |
| 694 |
< |
free(hp); |
| 695 |
< |
return(0); /* no valid samples */ |
| 696 |
< |
} |
| 697 |
< |
if (cnt < hp->ns*hp->ns) { /* incomplete sampling? */ |
| 692 |
> |
if ((hp->ns < 4) | (cnt < hp->ns*hp->ns)) { |
| 693 |
> |
free(hp); /* inadequate sampling */ |
| 694 |
|
copycolor(rcol, acol); |
| 695 |
< |
free(hp); |
| 700 |
< |
return(-1); /* return value w/o Hessian */ |
| 695 |
> |
return(-cnt); /* value-only result */ |
| 696 |
|
} |
| 697 |
|
cnt = ambssamp*wt + 0.5; /* perform super-sampling? */ |
| 698 |
|
if (cnt > 8) |
| 700 |
|
copycolor(rcol, acol); /* final indirect irradiance/PI */ |
| 701 |
|
if ((ra == NULL) & (pg == NULL) & (dg == NULL)) { |
| 702 |
|
free(hp); |
| 703 |
< |
return(-1); /* no radius or gradient calc. */ |
| 703 |
> |
return(-1); /* no Hessian or gradients requested */ |
| 704 |
|
} |
| 705 |
|
if ((d = bright(acol)) > FTINY) { /* normalize Y values */ |
| 706 |
|
d = 0.99*(hp->ns*hp->ns)/d; |