star-2d

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

commit 0eb9d8c3eb8657ea7e9de6091afef68c297df95e
parent e4f0208c83d61604fa56fcf0474a6b032e7c68db
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Tue, 21 Mar 2023 12:10:55 +0100

Use Embree 4 rather than Embree 3 as a RT backend

Fix a minor API flaw introduced by Embree 4

Diffstat:
Mcmake/CMakeLists.txt | 2+-
Msrc/s2d_backend.h | 17++++++++++++-----
Msrc/s2d_scene_view.c | 9++++++---
3 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt @@ -36,7 +36,7 @@ option(NO_TEST "Disable the test" OFF) ################################################################################ # Check dependencies ################################################################################ -find_package(Embree 3.6 REQUIRED) +find_package(Embree 4 REQUIRED) find_package(RCMake 0.2.2 REQUIRED) find_package(RSys 0.6 REQUIRED) diff --git a/src/s2d_backend.h b/src/s2d_backend.h @@ -36,15 +36,22 @@ #include <rsys/rsys.h> /* COMPILER_CL */ #ifdef COMPILER_CL -/* Structure was padded due to alignment specifier */ -#pragma warning(push) -#pragma warning(disable: 4324) + /* Structure was padded due to alignment specifier */ + #pragma warning(push) + #pragma warning(disable: 4324) +#elif defined COMPILER_GCC + /* Disable the "ISO C restricts enumerator values to range of 'int'" compiler + * warning in rtcore_common.h, line 293 (RTC_FEATURE_FLAG_ALL = 0xffffffff) */ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpedantic" #endif -#include <embree3/rtcore.h> +#include <embree4/rtcore.h> #ifdef COMPILER_CL -#pragma warning(pop) + #pragma warning(pop) +#elif defined COMPILER_GCC + #pragma GCC diagnostic pop #endif #endif /* S2D_BACKEND_H */ diff --git a/src/s2d_scene_view.c b/src/s2d_scene_view.c @@ -43,7 +43,7 @@ #include <limits.h> struct intersect_context { - struct RTCIntersectContext rtc; + struct RTCRayQueryContext rtc; struct s2d_scene_view* scnview; void* data; /* User defined data */ float ws_org[2]; /* World space ray origin */ @@ -730,6 +730,7 @@ scene_view_trace_ray struct s2d_hit* hit) { struct RTCRayHit ray_hit; + struct RTCIntersectArguments intersect_args; struct intersect_context intersect_ctx; float dot = 1; float dir2d[3] = {0.f, 0.f, 0.f}; @@ -803,7 +804,9 @@ 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_dir[0] = dir[0]; @@ -817,7 +820,7 @@ scene_view_trace_ray intersect_ctx.cos_dir_dir2d = dot; /* 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);