| 534 |
|
hdbcoord(gc, hp, bq[bi]); |
| 535 |
|
rv = hdbray(bp); |
| 536 |
|
for (k = bp->nrm; k--; rv++) { |
| 537 |
+ |
RREAL hitd = hddepth(hp, rv->d); |
| 538 |
|
ryp.d = hdray(ryp.ro, ryp.rd, hp, gc, rv->r); |
| 539 |
|
if (*(int *)hp->priv & H_OBSF) |
| 540 |
|
VSUM(ryp.ro, ryp.ro, ryp.rd, ryp.d); |
| 541 |
< |
else |
| 542 |
< |
ryp.d = 0.; |
| 543 |
< |
ryp.d = hddepth(hp, rv->d) - ryp.d; |
| 541 |
> |
else if (*(int *)hp->priv & H_OBST) |
| 542 |
> |
ryp.d = 0; |
| 543 |
> |
else if (hitd < ryp.d) { |
| 544 |
> |
ryp.d = 0.97*hitd; |
| 545 |
> |
VSUM(ryp.ro, ryp.ro, ryp.rd, ryp.d); |
| 546 |
> |
} else |
| 547 |
> |
ryp.d = 0; |
| 548 |
> |
ryp.d = hitd - ryp.d; |
| 549 |
|
copycolr(ryp.cv, rv->v); |
| 550 |
|
if (!write_ray(&ryp, fp)) { |
| 551 |
|
free(bq); |