diff --git a/editor/import/resource_importer_texture.cpp b/editor/import/resource_importer_texture.cpp index e9981c0d78f7..6bee859aad1c 100644 --- a/editor/import/resource_importer_texture.cpp +++ b/editor/import/resource_importer_texture.cpp @@ -393,6 +393,21 @@ Error ResourceImporterTexture::import(const String &p_source_file, const String int tex_flags = 0; if (repeat > 0) { tex_flags |= Texture::FLAG_REPEAT; + + const bool min_gles3 = GLOBAL_GET("rendering/quality/driver/driver_name") == "GLES3" && + !GLOBAL_GET("rendering/quality/driver/fallback_to_gles2"); + if (!min_gles3 && !image->is_size_po2()) { + // The project can be run using GLES2. GLES2 does not guarantee that + // repeating textures with a non-power-of-two size will be displayed + // without artifacts (due to upscaling to the nearest power of 2). + if (GLOBAL_GET("rendering/quality/driver/fallback_to_gles2")) { + WARN_PRINT(vformat("%s: Imported a repeating texture with a size of %dx%d, but the project is configured to allow falling back to GLES2.\nNon-power-of-2 repeating textures may not display correctly on some platforms such as HTML5. This is because GLES2 does not mandate support for non-power-of-2 repeating textures.", + p_source_file, image->get_width(), image->get_height())); + } else { + WARN_PRINT(vformat("%s: Imported a repeating texture with a size of %dx%d, but the project is configured to use GLES2.\nNon-power-of-2 repeating textures may not display correctly on some platforms such as HTML5. This is because GLES2 does not mandate support for non-power-of-2 repeating textures.", + p_source_file, image->get_width(), image->get_height())); + } + } } if (repeat == 2) { tex_flags |= Texture::FLAG_MIRRORED_REPEAT;