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); |