commit 6e6566d07b8a7bbdad0b428142e796d434aeb485
parent 3c39f86c8874711f2b0ecf74a72620b42122e9c3
Author: Vincent Forest <vincent.forest@meso-star.com>
Date: Fri, 17 Mar 2023 15:47:07 +0100
Use Embree 4 rather than Embree 3 as a RT backend
Fix a minor API flaw introduced by Embree 4
Diffstat:
3 files changed, 8 insertions(+), 5 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;