commit caf88ecfd4ea252d024b7b0f79c7679b14e4bcbb
parent fbf93f7580f99b673a76692cda7e933128ec937a
Author: Vincent Forest <vincent.forest@meso-star.com>
Date: Fri, 11 Jan 2019 15:06:41 +0100
Fix the instance creation/update against Embree3
Diffstat:
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/src/s3d_device.c b/src/s3d_device.c
@@ -47,7 +47,8 @@ rtc_error_func(void* context, enum RTCError err, const char* str)
{
struct s3d_device* dev = (struct s3d_device*)context;
ASSERT(dev);
- log_error(dev, "Embree:error: %s -- %s", str, rtc_error_string(err));
+ (void)str;
+ log_error(dev, "Embree:error: %s\n", rtc_error_string(err));
}
static INLINE void
diff --git a/src/s3d_scene_view.c b/src/s3d_scene_view.c
@@ -246,6 +246,7 @@ embree_geometry_register
* instantiated geometry was updated. Currently, we have no simple way to
* know if the geometry was upd or not so we simply force the update. */
rtcCommitGeometry(geom->rtc);
+ scnview->rtc_scn_update = 1;
}
} else {
switch(geom->type) {
@@ -681,6 +682,10 @@ scene_view_register_instance
res = htable_geom_set(&scnview->cached_geoms, &shape_id, &geom);
if(res != RES_OK) goto error;
geom->name = shape->id.index;
+
+ /* Force the commit of the newly created geometry by setting up its
+ * outdated mask */
+ geom->embree_outdated_mask |= EMBREE_TRANSFORM;
}
ASSERT(geom->data.instance->scene == shape->data.instance->scene);
geom->data.instance->scnview = view;