Lines Matching refs:ry
470 static void grid_intersect(grid *g, ray *ry) { in grid_intersect() argument
477 if (ry->flags & RT_RAY_FINISHED) in grid_intersect()
480 if (!grid_bounds_intersect(g, ry, &tnear, &tfar)) in grid_intersect()
483 if (ry->maxdist < tnear) in grid_intersect()
486 curpos = Raypnt(ry, tnear); in grid_intersect()
491 if (fabs(ry->d.x) < EPSILON) { in grid_intersect()
497 else if (ry->d.x < 0.0) { in grid_intersect()
498 tmax.x = offset + ((voxel2x(g, curvox.x) - curpos.x) / ry->d.x); in grid_intersect()
499 tdelta.x = g->voxsize.x / -ry->d.x; in grid_intersect()
503 tmax.x = offset + ((voxel2x(g, curvox.x + 1) - curpos.x) / ry->d.x); in grid_intersect()
504 tdelta.x = g->voxsize.x / ry->d.x; in grid_intersect()
510 if (fabs(ry->d.y) < EPSILON) { in grid_intersect()
516 else if (ry->d.y < 0.0) { in grid_intersect()
517 tmax.y = offset + ((voxel2y(g, curvox.y) - curpos.y) / ry->d.y); in grid_intersect()
518 tdelta.y = g->voxsize.y / -ry->d.y; in grid_intersect()
522 tmax.y = offset + ((voxel2y(g, curvox.y + 1) - curpos.y) / ry->d.y); in grid_intersect()
523 tdelta.y = g->voxsize.y / ry->d.y; in grid_intersect()
529 if (fabs(ry->d.z) < EPSILON) { in grid_intersect()
535 else if (ry->d.z < 0.0) { in grid_intersect()
536 tmax.z = offset + ((voxel2z(g, curvox.z) - curpos.z) / ry->d.z); in grid_intersect()
537 tdelta.z = g->voxsize.z / -ry->d.z; in grid_intersect()
541 tmax.z = offset + ((voxel2z(g, curvox.z + 1) - curpos.z) / ry->d.z); in grid_intersect()
542 tdelta.z = g->voxsize.z / ry->d.z; in grid_intersect()
547 pdeltaX = ry->d; in grid_intersect()
549 pdeltaY = ry->d; in grid_intersect()
551 pdeltaZ = ry->d; in grid_intersect()
554 nXp = Raypnt(ry, tmax.x); in grid_intersect()
555 nYp = Raypnt(ry, tmax.y); in grid_intersect()
556 nZp = Raypnt(ry, tmax.z); in grid_intersect()
563 if (ry->mbox[cur->obj->id] != ry->serial) { in grid_intersect()
564 ry->mbox[cur->obj->id] = ry->serial; in grid_intersect()
565 cur->obj->methods->intersect(cur->obj, ry); in grid_intersect()
570 if (ry->maxdist < tmax.x || curvox.x == out.x) in grid_intersect()
582 if (ry->mbox[cur->obj->id] != ry->serial) { in grid_intersect()
583 ry->mbox[cur->obj->id] = ry->serial; in grid_intersect()
584 cur->obj->methods->intersect(cur->obj, ry); in grid_intersect()
589 if (ry->maxdist < tmax.z || curvox.z == out.z) in grid_intersect()
601 if (ry->mbox[cur->obj->id] != ry->serial) { in grid_intersect()
602 ry->mbox[cur->obj->id] = ry->serial; in grid_intersect()
603 cur->obj->methods->intersect(cur->obj, ry); in grid_intersect()
608 if (ry->maxdist < tmax.y || curvox.y == out.y) in grid_intersect()
618 if (ry->flags & RT_RAY_FINISHED) in grid_intersect()
623 static void voxel_intersect(grid *g, ray *ry, int voxindex) { in voxel_intersect() argument
628 cur->obj->methods->intersect(cur->obj, ry); in voxel_intersect()
633 static int grid_bounds_intersect(grid *g, ray *ry, flt *nr, flt *fr) { in grid_bounds_intersect() argument
640 if (ry->d.x == 0.0) { in grid_bounds_intersect()
641 if ((ry->o.x < g->min.x) || (ry->o.x > g->max.x)) in grid_bounds_intersect()
645 tx1 = (g->min.x - ry->o.x) / ry->d.x; in grid_bounds_intersect()
646 tx2 = (g->max.x - ry->o.x) / ry->d.x; in grid_bounds_intersect()
662 if (ry->d.y == 0.0) { in grid_bounds_intersect()
663 if ((ry->o.y < g->min.y) || (ry->o.y > g->max.y)) in grid_bounds_intersect()
667 ty1 = (g->min.y - ry->o.y) / ry->d.y; in grid_bounds_intersect()
668 ty2 = (g->max.y - ry->o.y) / ry->d.y; in grid_bounds_intersect()
684 if (ry->d.z == 0.0) { in grid_bounds_intersect()
685 if ((ry->o.z < g->min.z) || (ry->o.z > g->max.z)) in grid_bounds_intersect()
689 tz1 = (g->min.z - ry->o.z) / ry->d.z; in grid_bounds_intersect()
690 tz2 = (g->max.z - ry->o.z) / ry->d.z; in grid_bounds_intersect()