Properly resize textures so they can be ETC compressed, fixes #15139
this may make import times slower though, will have to wait for 3.1 for background texture import and compressonator.
This commit is contained in:
parent
46fa9c49cd
commit
710970f004
|
@ -118,7 +118,6 @@ static void _compress_etc(Image *p_img, float p_lossy_quality, bool force_etc1_f
|
|||
}
|
||||
|
||||
uint32_t imgw = p_img->get_width(), imgh = p_img->get_height();
|
||||
ERR_FAIL_COND(next_power_of_2(imgw) != imgw || next_power_of_2(imgh) != imgh);
|
||||
|
||||
Image::Format etc_format = force_etc1_format ? Image::FORMAT_ETC : _get_etc2_mode(detected_channels);
|
||||
|
||||
|
@ -127,6 +126,25 @@ static void _compress_etc(Image *p_img, float p_lossy_quality, bool force_etc1_f
|
|||
if (img->get_format() != Image::FORMAT_RGBA8)
|
||||
img->convert(Image::FORMAT_RGBA8); //still uses RGBA to convert
|
||||
|
||||
if (img->has_mipmaps()) {
|
||||
if (next_power_of_2(imgw) != imgw || next_power_of_2(imgh) != imgh) {
|
||||
img->resize_to_po2();
|
||||
imgw = img->get_width();
|
||||
imgh = img->get_height();
|
||||
}
|
||||
} else {
|
||||
if (imgw % 4 != 0 || imgh % 4 != 0) {
|
||||
if (imgw % 4) {
|
||||
imgw += 4 - imgw % 4;
|
||||
}
|
||||
if (imgh % 4) {
|
||||
imgh += 4 - imgh % 4;
|
||||
}
|
||||
|
||||
img->resize(imgw, imgh);
|
||||
}
|
||||
}
|
||||
|
||||
PoolVector<uint8_t>::Read r = img->get_data().read();
|
||||
|
||||
int target_size = Image::get_image_data_size(imgw, imgh, etc_format, p_img->has_mipmaps() ? -1 : 0);
|
||||
|
|
Loading…
Reference in New Issue