瀏覽代碼

Merge pull request #36694 from clayjohn/ETC-mipmaps

Force mipmaps off when importing RGBA4444 textures
Rémi Verschelde 5 年之前
父節點
當前提交
685f255f2f
共有 2 個文件被更改,包括 8 次插入0 次删除
  1. 2 0
      core/image.cpp
  2. 6 0
      modules/etc/image_etc.cpp

+ 2 - 0
core/image.cpp

@@ -1448,6 +1448,8 @@ Error Image::generate_mipmaps(bool p_renormalize) {
 
 	ERR_FAIL_COND_V_MSG(!_can_modify(format), ERR_UNAVAILABLE, "Cannot generate mipmaps in compressed or custom image formats.");
 
+	ERR_FAIL_COND_V_MSG(format == FORMAT_RGBA4444 || format == FORMAT_RGBA5551, ERR_UNAVAILABLE, "Cannot generate mipmaps in custom image formats.");
+
 	ERR_FAIL_COND_V_MSG(width == 0 || height == 0, ERR_UNCONFIGURED, "Cannot generate mipmaps with width or height equal to 0.");
 
 	int mmcount;

+ 6 - 0
modules/etc/image_etc.cpp

@@ -143,9 +143,15 @@ static void _compress_etc(Image *p_img, float p_lossy_quality, bool force_etc1_f
 		// If VRAM compression is using ETC, but image has alpha, convert to RGBA4444 or LA8
 		// This saves space while maintaining the alpha channel
 		if (detected_channels == Image::DETECTED_RGBA) {
+
+			if (p_img->has_mipmaps()) {
+				// Image doesn't support mipmaps with RGBA4444 textures
+				p_img->clear_mipmaps();
+			}
 			p_img->convert(Image::FORMAT_RGBA4444);
 			return;
 		} else if (detected_channels == Image::DETECTED_LA) {
+
 			p_img->convert(Image::FORMAT_LA8);
 			return;
 		}