star-3d

Surface structuring for efficient 3D geometric queries
git clone git://git.meso-star.fr/star-3d.git
Log | Files | Refs | README | LICENSE

commit 3bdfe2cce44f80128ea1b89cc8e7764bdee07c04
parent 57dc54029165e91e56174668e2083031ab8ff39f
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Mon, 20 Mar 2023 16:43:42 +0100

Merge branch 'develop' into feature_posix_make

Diffstat:
Mcmake/CMakeLists.txt | 2+-
Msrc/s3d_backend.h | 2+-
Msrc/s3d_scene_view_trace_ray.c | 9++++++---
Msrc/test_s3d_closest_point.c | 2+-
4 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt @@ -39,7 +39,7 @@ option(NO_TEST "Disable the test" OFF) ################################################################################ # Check dependencies ################################################################################ -find_package(Embree 3.6 REQUIRED) +find_package(Embree 4.0 REQUIRED) find_package(RCMake 0.2.2 REQUIRED) find_package(RSys 0.6 REQUIRED) diff --git a/src/s3d_backend.h b/src/s3d_backend.h @@ -41,7 +41,7 @@ #pragma warning(disable: 4324) #endif -#include <embree3/rtcore.h> +#include <embree4/rtcore.h> #ifdef COMPILER_CL #pragma warning(pop) diff --git a/src/s3d_scene_view_trace_ray.c b/src/s3d_scene_view_trace_ray.c @@ -43,7 +43,7 @@ #include <limits.h> struct intersect_context { - struct RTCIntersectContext rtc; + struct RTCRayQueryContext rtc; struct s3d_scene_view* scnview; void* data; /* Per ray user defined data */ float ws_org[3]; /* World space ray origin */ @@ -161,6 +161,7 @@ s3d_scene_view_trace_ray struct s3d_hit* hit) { struct RTCRayHit ray_hit; + struct RTCIntersectArguments intersect_args; struct intersect_context intersect_ctx; size_t i; @@ -210,7 +211,9 @@ s3d_scene_view_trace_ray } /* Initialise the intersect context */ - rtcInitIntersectContext(&intersect_ctx.rtc); + rtcInitIntersectArguments(&intersect_args); + intersect_args.context = &intersect_ctx.rtc; + rtcInitRayQueryContext(&intersect_ctx.rtc); intersect_ctx.ws_org[0] = org[0]; intersect_ctx.ws_org[1] = org[1]; intersect_ctx.ws_org[2] = org[2]; @@ -223,7 +226,7 @@ s3d_scene_view_trace_ray intersect_ctx.data = ray_data; /* Here we go! */ - rtcIntersect1(scnview->rtc_scn, &intersect_ctx.rtc, &ray_hit); + rtcIntersect1(scnview->rtc_scn, &ray_hit, &intersect_args); hit_setup(scnview, &ray_hit, hit); return RES_OK; diff --git a/src/test_s3d_closest_point.c b/src/test_s3d_closest_point.c @@ -1075,7 +1075,7 @@ test_single_triangle(struct s3d_device* dev) f3_mulf(tmp, BC, -MMIN(1, MMAX(0, -f3_dot(CP, BC) / lbc2)))); } } - else { ASSERT(0); } + else { FATAL("Unreachable code\n"); } dist = f3_len(f3_sub(tmp, pos, closest)); } CHK(eq_epsf(hit.distance, dist, eps));