diff --git a/source/blender/draw/engines/eevee/eevee_world.cc b/source/blender/draw/engines/eevee/eevee_world.cc index c87af23b4e0..34a4361a348 100644 --- a/source/blender/draw/engines/eevee/eevee_world.cc +++ b/source/blender/draw/engines/eevee/eevee_world.cc @@ -120,6 +120,12 @@ void World::sync() GPUMaterial *gpumat = inst_.shaders.world_shader_get( bl_world, ntree, MAT_PIPE_DEFERRED, !wait_ready); + + if (GPU_material_status(gpumat) == GPU_MAT_FAILED) { + bl_world = default_world_get(); + ntree = bl_world->nodetree; + gpumat = inst_.shaders.world_shader_get(bl_world, ntree, MAT_PIPE_DEFERRED, !wait_ready); + } if (GPU_material_status(gpumat) == GPU_MAT_QUEUED) { is_ready_ = false; return; diff --git a/source/blender/nodes/shader/node_shader_tree.cc b/source/blender/nodes/shader/node_shader_tree.cc index f02ac79a4f9..fd57a8de14d 100644 --- a/source/blender/nodes/shader/node_shader_tree.cc +++ b/source/blender/nodes/shader/node_shader_tree.cc @@ -434,10 +434,9 @@ static bool ntree_shader_implicit_closure_cast(bNodeTree *ntree) modified = true; } else if ((link->fromsock->type == SOCK_SHADER) && (link->tosock->type != SOCK_SHADER)) { - /* Meh. Not directly visible to the user. But better than nothing. */ - fprintf(stderr, "Shader Nodetree Error: Invalid implicit socket conversion\n"); + blender::bke::node_remove_link(ntree, *link); BKE_ntree_update_after_single_tree_change(*G.main, *ntree); - return false; + modified = true; } } if (modified) {