commit f2967fa729275a5a2bcc177054dae8d98d6dc0a8
parent 7cd5dd22730cfb1700cb0ae10d4d6176304be7fd
Author: Vincent Forest <vincent.forest@meso-star.com>
Date: Wed, 7 Jul 2021 16:43:57 +0200
Bump the version of the Star-3D dependency to 0.8
Fix API break on filter function
Diffstat:
6 files changed, 14 insertions(+), 11 deletions(-)
diff --git a/cmake/atmosphere/CMakeLists.txt b/cmake/atmosphere/CMakeLists.txt
@@ -24,7 +24,7 @@ project(htrdr-atmosphere)
find_package(HTSky 0.2 REQUIRED)
find_package(RCMake 0.3 REQUIRED)
find_package(RSys 0.11 REQUIRED)
-find_package(Star3D 0.7.1 REQUIRED)
+find_package(Star3D 0.8 REQUIRED)
find_package(StarSF 0.6 REQUIRED)
find_package(StarSP 0.9 REQUIRED)
find_package(StarVX 0.1 REQUIRED)
diff --git a/cmake/combustion/CMakeLists.txt b/cmake/combustion/CMakeLists.txt
@@ -24,7 +24,7 @@ project(htrdr-combustion)
find_package(AtrSTM REQUIRED)
find_package(RCMake 0.3 REQUIRED)
find_package(RSys 0.11 REQUIRED)
-find_package(Star3D 0.7.1 REQUIRED)
+find_package(Star3D 0.8 REQUIRED)
find_package(StarSF 0.6 REQUIRED)
find_package(StarSP 0.10 REQUIRED)
find_package(StarVX 0.1 REQUIRED)
diff --git a/cmake/core/CMakeLists.txt b/cmake/core/CMakeLists.txt
@@ -25,7 +25,7 @@ find_package(AW 2.0 REQUIRED)
find_package(MruMtl 0.0 REQUIRED)
find_package(RCMake 0.3 REQUIRED)
find_package(RSys 0.11 REQUIRED)
-find_package(Star3D 0.7.1 REQUIRED)
+find_package(Star3D 0.8 REQUIRED)
find_package(StarSF 0.6 REQUIRED)
find_package(StarSP 0.9 REQUIRED)
find_package(OpenMP 1.2 REQUIRED)
diff --git a/src/combustion/htrdr_combustion_geometry_ray_filter.c b/src/combustion/htrdr_combustion_geometry_ray_filter.c
@@ -32,6 +32,7 @@ geometry_ray_filter_discard_medium_interface
(const struct s3d_hit* hit,
const float ray_org[3],
const float ray_dir[3],
+ const float ray_range[2],
void* ray_data,
void* filter_data)
{
@@ -41,8 +42,8 @@ geometry_ray_filter_discard_medium_interface
float N[3];
int hit_front;
int discard = 0;
- ASSERT(hit && ray_org && ray_dir && ray_data && !S3D_HIT_NONE(hit));
- (void)ray_org, (void)ray_dir, (void)filter_data;
+ ASSERT(hit && ray_org && ray_dir && ray_range && ray_data && !S3D_HIT_NONE(hit));
+ (void)ray_org, (void)ray_dir, (void)ray_range, (void)filter_data;
/* Recover the interface of the intersected surface */
htrdr_geometry_get_interface(ctx->geom, hit, &interf);
diff --git a/src/combustion/htrdr_combustion_geometry_ray_filter.h b/src/combustion/htrdr_combustion_geometry_ray_filter.h
@@ -41,6 +41,7 @@ geometry_ray_filter_discard_medium_interface
(const struct s3d_hit* hit,
const float ray_org[3],
const float ray_dir[3],
+ const float ray_range[2],
void* ray_data, /* Must point to a struct geometry_ray_filter_context */
void* filter_data);
diff --git a/src/core/htrdr_geometry.c b/src/core/htrdr_geometry.c
@@ -60,13 +60,12 @@ struct mesh {
static const struct mesh MESH_NULL;
struct ray_context {
- float range[2];
struct s3d_hit hit_from;
s3d_hit_filter_function_T user_filter; /* May be NULL */
void* user_filter_data; /* May be NULL */
};
-#define RAY_CONTEXT_NULL__ {{0,INF}, S3D_HIT_NULL__, NULL, NULL}
+#define RAY_CONTEXT_NULL__ {S3D_HIT_NULL__, NULL, NULL}
static const struct ray_context RAY_CONTEXT_NULL = RAY_CONTEXT_NULL__;
struct htrdr_geometry {
@@ -149,6 +148,7 @@ geometry_filter
(const struct s3d_hit* hit,
const float ray_org[3],
const float ray_dir[3],
+ const float ray_range[2],
void* ray_data,
void* filter_data)
{
@@ -158,14 +158,14 @@ geometry_filter
if(!ray_ctx) /* Nothing to do */
return 0;
- if(self_hit(hit, ray_org, ray_dir, ray_ctx->range, &ray_ctx->hit_from))
+ if(self_hit(hit, ray_org, ray_dir, ray_range, &ray_ctx->hit_from))
return 1; /* Discard this hit */
if(!ray_ctx->user_filter) /* That's all */
return 0;
return ray_ctx->user_filter /* Invoke user filtering */
- (hit, ray_org, ray_dir, ray_ctx->user_filter_data, filter_data);
+ (hit, ray_org, ray_dir, ray_range, ray_ctx->user_filter_data, filter_data);
}
static res_T
@@ -685,18 +685,19 @@ htrdr_geometry_trace_ray
struct ray_context ray_ctx = RAY_CONTEXT_NULL;
float ray_org[3];
float ray_dir[3];
+ float ray_range[2];
res_T res = RES_OK;
ASSERT(geom && args && hit);
f3_set_d3(ray_org, args->ray_org);
f3_set_d3(ray_dir, args->ray_dir);
- f2_set_d2(ray_ctx.range, args->ray_range);
+ f2_set_d2(ray_range, args->ray_range);
ray_ctx.hit_from = args->hit_from;
ray_ctx.user_filter = args->filter;
ray_ctx.user_filter_data = args->filter_context;
res = s3d_scene_view_trace_ray
- (geom->view, ray_org, ray_dir, ray_ctx.range, &ray_ctx, hit);
+ (geom->view, ray_org, ray_dir, ray_range, &ray_ctx, hit);
if(res != RES_OK) {
htrdr_log_err(geom->htrdr,
"%s: could not trace the ray against the geometry -- %s.\n",