diff --git a/doc/classes/LightmapGI.xml b/doc/classes/LightmapGI.xml index 55c6ef5eb5d..2b7875a939d 100644 --- a/doc/classes/LightmapGI.xml +++ b/doc/classes/LightmapGI.xml @@ -117,6 +117,9 @@ The user aborted the lightmap baking operation (typically by clicking the [b]Cancel[/b] button in the progress dialog). + + Lightmap baking failed as the maximum texture size is too small to fit some of the meshes marked for baking. + Ignore environment lighting when baking lightmaps. diff --git a/editor/plugins/lightmap_gi_editor_plugin.cpp b/editor/plugins/lightmap_gi_editor_plugin.cpp index b549a958e69..7fc462edbbb 100644 --- a/editor/plugins/lightmap_gi_editor_plugin.cpp +++ b/editor/plugins/lightmap_gi_editor_plugin.cpp @@ -103,6 +103,9 @@ void LightmapGIEditorPlugin::_bake_select_file(const String &p_file) { case LightmapGI::BAKE_ERROR_FOREIGN_DATA: { EditorNode::get_singleton()->show_warning(TTR("Lightmap data is not local to the scene.")); } break; + case LightmapGI::BAKE_ERROR_TEXTURE_SIZE_TOO_SMALL: { + EditorNode::get_singleton()->show_warning(TTR("Maximum texture size is too small for the lightmap images.")); + } break; default: { } break; } diff --git a/scene/3d/lightmap_gi.cpp b/scene/3d/lightmap_gi.cpp index 3ee08fd5485..237c3ef953e 100644 --- a/scene/3d/lightmap_gi.cpp +++ b/scene/3d/lightmap_gi.cpp @@ -1081,7 +1081,9 @@ LightmapGI::BakeError LightmapGI::bake(Node *p_from_node, String p_image_data_pa Lightmapper::BakeError bake_err = lightmapper->bake(Lightmapper::BakeQuality(bake_quality), use_denoiser, bounces, bias, max_texture_size, directional, Lightmapper::GenerateProbes(gen_probes), environment_image, environment_transform, _lightmap_bake_step_function, &bsud, exposure_normalization); - if (bake_err == Lightmapper::BAKE_ERROR_LIGHTMAP_CANT_PRE_BAKE_MESHES) { + if (bake_err == Lightmapper::BAKE_ERROR_LIGHTMAP_TOO_SMALL) { + return BAKE_ERROR_TEXTURE_SIZE_TOO_SMALL; + } else if (bake_err == Lightmapper::BAKE_ERROR_LIGHTMAP_CANT_PRE_BAKE_MESHES) { return BAKE_ERROR_MESHES_INVALID; } @@ -1565,6 +1567,7 @@ void LightmapGI::_bind_methods() { BIND_ENUM_CONSTANT(BAKE_ERROR_MESHES_INVALID); BIND_ENUM_CONSTANT(BAKE_ERROR_CANT_CREATE_IMAGE); BIND_ENUM_CONSTANT(BAKE_ERROR_USER_ABORTED); + BIND_ENUM_CONSTANT(BAKE_ERROR_TEXTURE_SIZE_TOO_SMALL); BIND_ENUM_CONSTANT(ENVIRONMENT_MODE_DISABLED); BIND_ENUM_CONSTANT(ENVIRONMENT_MODE_SCENE); diff --git a/scene/3d/lightmap_gi.h b/scene/3d/lightmap_gi.h index b9e33cf3004..02123ef7ba6 100644 --- a/scene/3d/lightmap_gi.h +++ b/scene/3d/lightmap_gi.h @@ -132,6 +132,7 @@ public: BAKE_ERROR_MESHES_INVALID, BAKE_ERROR_CANT_CREATE_IMAGE, BAKE_ERROR_USER_ABORTED, + BAKE_ERROR_TEXTURE_SIZE_TOO_SMALL, }; enum EnvironmentMode {