transform_snap_object: simplify IGNORE_BEHIND_RAY
`depth_get` is called in most of the time. So not worth going through so many conditions
This commit is contained in:
@@ -1065,36 +1065,20 @@ static float dist_squared_to_projected_aabb(
|
|||||||
main_axis += 3;
|
main_axis += 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* if rtmin < rtmax, ray intersect `AABB` */
|
|
||||||
if (rtmin <= rtmax) {
|
|
||||||
#define IGNORE_BEHIND_RAY
|
#define IGNORE_BEHIND_RAY
|
||||||
#ifdef IGNORE_BEHIND_RAY
|
#ifdef IGNORE_BEHIND_RAY
|
||||||
/* `if rtmax < depth_min`, the hit is behind us */
|
float depth_max = depth_get(local_bvmax, data->ray_origin_local, data->ray_direction_local);
|
||||||
if (rtmax < data->ray_min_dist) {
|
if (depth_max < data->ray_min_dist) {
|
||||||
/* Test if the entire AABB is behind us */
|
|
||||||
float depth = depth_get(
|
|
||||||
local_bvmax, data->ray_origin_local, data->ray_direction_local);
|
|
||||||
if (depth < (data->ray_min_dist)) {
|
|
||||||
return FLT_MAX;
|
return FLT_MAX;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
#endif
|
|
||||||
const float proj = rtmin * data->ray_direction_local[main_axis];
|
|
||||||
r_axis_closest[main_axis] = (proj - va[main_axis]) < (vb[main_axis] - proj);
|
|
||||||
return 0.0f;
|
|
||||||
}
|
|
||||||
#ifdef IGNORE_BEHIND_RAY
|
|
||||||
/* `if rtmin < depth_min`, the hit is behing us */
|
|
||||||
else if (rtmin < data->ray_min_dist) {
|
|
||||||
/* Test if the entire AABB is behind us */
|
|
||||||
float depth = depth_get(
|
|
||||||
local_bvmax, data->ray_origin_local, data->ray_direction_local);
|
|
||||||
if (depth < (data->ray_min_dist)) {
|
|
||||||
return FLT_MAX;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
#undef IGNORE_BEHIND_RAY
|
#undef IGNORE_BEHIND_RAY
|
||||||
|
|
||||||
|
/* if rtmin <= rtmax, ray intersect `AABB` */
|
||||||
|
if (rtmin <= rtmax) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (data->sign[main_axis]) {
|
if (data->sign[main_axis]) {
|
||||||
va[main_axis] = local_bvmax[main_axis];
|
va[main_axis] = local_bvmax[main_axis];
|
||||||
vb[main_axis] = local_bvmin[main_axis];
|
vb[main_axis] = local_bvmin[main_axis];
|
||||||
|
Reference in New Issue
Block a user