diff --git a/source/blender/render/hydra/scene_delegate/blender_scene_delegate.cc b/source/blender/render/hydra/scene_delegate/blender_scene_delegate.cc index 840a996fe3bf..375ffb43ecc3 100644 --- a/source/blender/render/hydra/scene_delegate/blender_scene_delegate.cc +++ b/source/blender/render/hydra/scene_delegate/blender_scene_delegate.cc @@ -434,10 +434,6 @@ void BlenderSceneDelegate::add_new_objects() Object *, object) { - if (!ObjectData::is_supported(object)) { - continue; - } - update_objects(object); update_instancers(object); } @@ -462,10 +458,9 @@ void BlenderSceneDelegate::remove_unused_objects() &data, Object *, object) { - if (!ObjectData::is_supported(object)) { - continue; + if (ObjectData::is_supported(object)) { + available_objects.insert(object_prim_id(object).GetName()); } - available_objects.insert(object_prim_id(object).GetName()); available_objects.insert(instancer_prim_id(object).GetName()); } ITER_END; @@ -542,10 +537,6 @@ void BlenderSceneDelegate::update_visibility() Object *, object) { - if (!ObjectData::is_supported(object)) { - continue; - } - if (!object_data(object_prim_id(object))) { update_objects(object); } diff --git a/source/blender/render/hydra/scene_delegate/instancer.cc b/source/blender/render/hydra/scene_delegate/instancer.cc index 50bc558c20fb..9ed24aa6f6f0 100644 --- a/source/blender/render/hydra/scene_delegate/instancer.cc +++ b/source/blender/render/hydra/scene_delegate/instancer.cc @@ -64,7 +64,8 @@ void InstancerData::update() ID_LOG(2, ""); Object *object = (Object *)id; - if (id->recalc & ID_RECALC_GEOMETRY || ((ID *)object->data)->recalc & ID_RECALC_GEOMETRY || + if (id->recalc & ID_RECALC_GEOMETRY || + (object->data && ((ID *)object->data)->recalc & ID_RECALC_GEOMETRY) || id->recalc & ID_RECALC_TRANSFORM) { set_instances(); scene_delegate_->GetRenderIndex().GetChangeTracker().MarkInstancerDirty(