From 276d828305a2e258c557ca9e420f166c06c41467 Mon Sep 17 00:00:00 2001 From: Valtteri Koskivuori Date: Sun, 13 Oct 2024 23:28:16 +0300 Subject: [PATCH] lib: Fix missing BVH in some cases I had two booleans for the same thing, so sometimes we started the renderer without a top-level BVH. --- src/lib/api/c-ray.c | 4 ++-- src/lib/renderer/renderer.c | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/lib/api/c-ray.c b/src/lib/api/c-ray.c index 1e625058..bace1b5b 100644 --- a/src/lib/api/c-ray.c +++ b/src/lib/api/c-ray.c @@ -330,7 +330,7 @@ cr_instance cr_instance_new(struct cr_scene *s_ext, cr_object object, enum cr_ob default: return -1; } - scene->instances_dirty = true; + scene->top_level_dirty = true; return instance_arr_add(&scene->instances, new); } @@ -367,7 +367,7 @@ void cr_instance_transform(struct cr_scene *s_ext, cr_instance instance, float r struct matrix4x4 mtx = mtx_convert(row_major); i->composite.A = mat_mul(i->composite.A, mtx); i->composite.Ainv = mat_invert(i->composite.A); - scene->instances_dirty = true; + scene->top_level_dirty = true; } bool cr_instance_bind_material_set(struct cr_scene *s_ext, cr_instance instance, cr_material_set set) { diff --git a/src/lib/renderer/renderer.c b/src/lib/renderer/renderer.c index f55be814..c72b2bd3 100644 --- a/src/lib/renderer/renderer.c +++ b/src/lib/renderer/renderer.c @@ -123,7 +123,7 @@ void renderer_start_interactive(struct renderer *r) { } void update_toplevel_bvh(struct world *s) { - if (!s->top_level_dirty) return; + if (!s->top_level_dirty && s->topLevel) return; struct bvh *new = build_top_level_bvh(s->instances); //!//!//!//!//!//!//!//!//!//!//!//! thread_rwlock_wrlock(&s->bvh_lock); @@ -480,7 +480,6 @@ struct renderer *renderer_new(void) { // Move these elsewhere r->scene = calloc(1, sizeof(*r->scene)); - r->scene->instances_dirty = true; r->scene->asset_path = stringCopy("./"); r->scene->storage.node_pool = newBlock(NULL, 1024); r->scene->storage.node_table = newHashtable(compareNodes, &r->scene->storage.node_pool);