Parcourir la source

Merge pull request #48817 from Calinou/import-texture-npot-gles2-warning

Print a warning when importing a repeating NPOT texture in a GLES2 project
Rémi Verschelde il y a 4 ans
Parent
commit
463073a966
1 fichiers modifiés avec 15 ajouts et 0 suppressions
  1. 15 0
      editor/import/resource_importer_texture.cpp

+ 15 - 0
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;