Fix import grayscale EXR

Fix #27299
This commit is contained in:
Vivatchai Kaveeta 2019-03-22 23:31:25 +07:00
parent 9c3ddf05cb
commit f0562a5ef6
1 changed files with 23 additions and 14 deletions

View File

@ -107,6 +107,14 @@ Error ImageLoaderTinyEXR::load_image(Ref<Image> p_image, FileAccess *f, bool p_f
} }
} }
if (exr_header.num_channels == 1) {
// Grayscale channel only.
idxR = 0;
idxG = 0;
idxB = 0;
idxA = 0;
} else {
// Assume RGB(A)
if (idxR == -1) { if (idxR == -1) {
ERR_PRINT("TinyEXR: R channel not found."); ERR_PRINT("TinyEXR: R channel not found.");
// @todo { free exr_image } // @todo { free exr_image }
@ -124,6 +132,7 @@ Error ImageLoaderTinyEXR::load_image(Ref<Image> p_image, FileAccess *f, bool p_f
// @todo { free exr_image } // @todo { free exr_image }
return ERR_FILE_CORRUPT; return ERR_FILE_CORRUPT;
} }
}
// EXR image data loaded, now parse it into Godot-friendly image data // EXR image data loaded, now parse it into Godot-friendly image data