Merge pull request #24667 from akien-mga/fix-exr-alpha

Fix loading EXR with alpha channel
This commit is contained in:
Rémi Verschelde 2018-12-30 14:45:41 +01:00 committed by GitHub
commit 534044e8f8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -131,7 +131,7 @@ Error ImageLoaderTinyEXR::load_image(Ref<Image> p_image, FileAccess *f, bool p_f
Image::Format format; Image::Format format;
int output_channels = 0; int output_channels = 0;
if (idxA > 0) { if (idxA != -1) {
imgdata.resize(exr_image.width * exr_image.height * 8); //RGBA16 imgdata.resize(exr_image.width * exr_image.height * 8); //RGBA16
format = Image::FORMAT_RGBAH; format = Image::FORMAT_RGBAH;
@ -187,7 +187,7 @@ Error ImageLoaderTinyEXR::load_image(Ref<Image> p_image, FileAccess *f, bool p_f
const float *b_channel_start = reinterpret_cast<const float *>(tile.images[idxB]); const float *b_channel_start = reinterpret_cast<const float *>(tile.images[idxB]);
const float *a_channel_start = NULL; const float *a_channel_start = NULL;
if (idxA > 0) { if (idxA != -1) {
a_channel_start = reinterpret_cast<const float *>(tile.images[idxA]); a_channel_start = reinterpret_cast<const float *>(tile.images[idxA]);
} }
@ -216,7 +216,7 @@ Error ImageLoaderTinyEXR::load_image(Ref<Image> p_image, FileAccess *f, bool p_f
*row_w++ = Math::make_half_float(color.g); *row_w++ = Math::make_half_float(color.g);
*row_w++ = Math::make_half_float(color.b); *row_w++ = Math::make_half_float(color.b);
if (idxA > 0) { if (idxA != -1) {
*row_w++ = Math::make_half_float(*a_channel++); *row_w++ = Math::make_half_float(*a_channel++);
} }
} }