diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2024-10-02 15:01:34 +0200 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2024-10-02 15:01:34 +0200 |
commit | 1da8a2a1ba003ca8a2eed3ec36baaab6d7051a93 (patch) | |
tree | 1df5ce613186dd1744b45e2986b62cf96f00fb84 | |
parent | 34913f278129aab238af93228504e6dc78457333 (diff) | |
parent | 0807d60d68750ea2bfec91fd5cb3cff83b405725 (diff) | |
download | redot-engine-1da8a2a1ba003ca8a2eed3ec36baaab6d7051a93.tar.gz |
Merge pull request #97416 from Calinou/lightmapgi-check-rendering-device-availability
Check RenderingDevice availability to display LightmapGI configuration warnings
-rw-r--r-- | editor/plugins/lightmap_gi_editor_plugin.cpp | 17 | ||||
-rw-r--r-- | scene/3d/lightmap_gi.cpp | 13 |
2 files changed, 28 insertions, 2 deletions
diff --git a/editor/plugins/lightmap_gi_editor_plugin.cpp b/editor/plugins/lightmap_gi_editor_plugin.cpp index 1c17d99d0d..854ab7de8f 100644 --- a/editor/plugins/lightmap_gi_editor_plugin.cpp +++ b/editor/plugins/lightmap_gi_editor_plugin.cpp @@ -179,6 +179,23 @@ LightmapGIEditorPlugin::LightmapGIEditorPlugin() { // when the editor theme updates. bake->set_icon(EditorNode::get_singleton()->get_editor_theme()->get_icon(SNAME("Bake"), EditorStringName(EditorIcons))); bake->set_text(TTR("Bake Lightmaps")); + +#ifdef MODULE_LIGHTMAPPER_RD_ENABLED + // Disable lightmap baking if not supported on the current GPU. + if (!DisplayServer::get_singleton()->can_create_rendering_device()) { + bake->set_disabled(true); + bake->set_tooltip_text(vformat(TTR("Lightmap baking is not supported on this GPU (%s)."), RenderingServer::get_singleton()->get_video_adapter_name())); + } +#else + // Disable lightmap baking if the module is disabled at compile-time. + bake->set_disabled(true); +#if defined(ANDROID_ENABLED) || defined(IOS_ENABLED) + bake->set_tooltip_text(vformat(TTR("Lightmaps cannot be baked on %s."), OS::get_singleton()->get_name())); +#else + bake->set_tooltip_text(TTR("Lightmaps cannot be baked, as the `lightmapper_rd` module was disabled at compile-time.")); +#endif +#endif // MODULE_LIGHTMAPPER_RD_ENABLED + bake->hide(); bake->connect(SceneStringName(pressed), Callable(this, "_bake")); add_control_to_container(CONTAINER_SPATIAL_EDITOR_MENU, bake); diff --git a/scene/3d/lightmap_gi.cpp b/scene/3d/lightmap_gi.cpp index 26a574cd26..a1f32fccbe 100644 --- a/scene/3d/lightmap_gi.cpp +++ b/scene/3d/lightmap_gi.cpp @@ -1602,8 +1602,17 @@ Ref<CameraAttributes> LightmapGI::get_camera_attributes() const { PackedStringArray LightmapGI::get_configuration_warnings() const { PackedStringArray warnings = VisualInstance3D::get_configuration_warnings(); - if (OS::get_singleton()->get_current_rendering_method() == "gl_compatibility") { - warnings.push_back(RTR("Lightmap can only be baked from a device that supports the RD backends. Lightmap baking may fail.")); +#ifndef MODULE_LIGHTMAPPER_RD_ENABLED +#if defined(ANDROID_ENABLED) || defined(IOS_ENABLED) + warnings.push_back(vformat(RTR("Lightmaps cannot be baked on %s. Rendering existing baked lightmaps will still work."), OS::get_singleton()->get_name())); +#else + warnings.push_back(RTR("Lightmaps cannot be baked, as the `lightmapper_rd` module was disabled at compile-time. Rendering existing baked lightmaps will still work.")); +#endif + return warnings; +#endif + + if (!DisplayServer::get_singleton()->can_create_rendering_device()) { + warnings.push_back(vformat(RTR("Lightmaps can only be baked from a GPU that supports the RenderingDevice backends.\nYour GPU (%s) does not support RenderingDevice, as it does not support Vulkan, Direct3D 12, or Metal.\nLightmap baking will not be available on this device, although rendering existing baked lightmaps will work."), RenderingServer::get_singleton()->get_video_adapter_name())); return warnings; } |