diff --git a/source/blender/blenkernel/intern/image_save.cc b/source/blender/blenkernel/intern/image_save.cc index bdf1e775a16..dee869966ed 100644 --- a/source/blender/blenkernel/intern/image_save.cc +++ b/source/blender/blenkernel/intern/image_save.cc @@ -703,7 +703,8 @@ static float *image_exr_from_scene_linear_to_output(float *rect, const int height, const int channels, const ImageFormatData *imf, - Vector &tmp_output_rects) + Vector &tmp_output_rects, + blender::StringRefNull &r_colorspace) { if (imf == nullptr) { return rect; @@ -722,6 +723,8 @@ static float *image_exr_from_scene_linear_to_output(float *rect, IMB_colormanagement_transform_float( output_rect, width, height, channels, from_colorspace, to_colorspace, false); + r_colorspace = to_colorspace; + return output_rect; } @@ -805,14 +808,19 @@ static void add_exr_compositing_result(ExrHandle *exr_handle, /* Compositing results is always a 4-channel RGBA. */ const int channels_count_in_buffer = 4; - float *output_buffer = (save_as_render) ? image_exr_from_scene_linear_to_output( - render_view->ibuf->float_buffer.data, - render_result->rectx, - render_result->recty, - channels_count_in_buffer, - imf, - temporary_buffers) : - render_view->ibuf->float_buffer.data; + float *output_buffer = render_view->ibuf->float_buffer.data; + blender::StringRefNull colorspace = IMB_colormanagement_role_colorspace_name_get( + COLOR_ROLE_SCENE_LINEAR); + + if (save_as_render) { + output_buffer = image_exr_from_scene_linear_to_output(output_buffer, + render_result->rectx, + render_result->recty, + channels_count_in_buffer, + imf, + temporary_buffers, + colorspace); + } /* For multi-layer EXRs, we write the buffer as is with all its 4 channels. */ const bool half_float = (imf && imf->depth == R_IMF_CHAN_DEPTH_16); @@ -821,6 +829,7 @@ static void add_exr_compositing_result(ExrHandle *exr_handle, "Composite.Combined", "RGBA", render_view_name, + colorspace, channels_count_in_buffer, channels_count_in_buffer * render_result->rectx, output_buffer, @@ -843,6 +852,7 @@ static void add_exr_compositing_result(ExrHandle *exr_handle, "", "V", render_view_name, + colorspace, 1, render_result->rectx, gray_scale_output, @@ -857,6 +867,7 @@ static void add_exr_compositing_result(ExrHandle *exr_handle, "", channelnames, render_view_name, + colorspace, channels_count_in_buffer, channels_count_in_buffer * render_result->rectx, output_buffer, @@ -928,15 +939,19 @@ bool BKE_image_render_write_exr(ReportList *reports, const bool pass_half_float = half_float && pass_RGBA; /* Color-space conversion only happens on RGBA passes. */ - float *output_rect = (save_as_render && pass_RGBA) ? - image_exr_from_scene_linear_to_output( - render_pass->ibuf->float_buffer.data, - rr->rectx, - rr->recty, - render_pass->channels, - imf, - tmp_output_rects) : - render_pass->ibuf->float_buffer.data; + float *output_rect = render_pass->ibuf->float_buffer.data; + blender::StringRefNull colorspace = IMB_colormanagement_role_colorspace_name_get( + (pass_RGBA) ? COLOR_ROLE_SCENE_LINEAR : COLOR_ROLE_DATA); + + if (save_as_render && pass_RGBA) { + output_rect = image_exr_from_scene_linear_to_output(output_rect, + rr->rectx, + rr->recty, + render_pass->channels, + imf, + tmp_output_rects, + colorspace); + } /* For multi-layer EXRs, we write the pass as is with all of its channels. */ if (multi_layer) { @@ -952,6 +967,7 @@ bool BKE_image_render_write_exr(ReportList *reports, layer_pass_name, channelnames, viewname, + colorspace, render_pass->channels, render_pass->channels * rr->rectx, output_rect, @@ -975,6 +991,7 @@ bool BKE_image_render_write_exr(ReportList *reports, "", channelnames, viewname, + colorspace, render_pass->channels, render_pass->channels * rr->rectx, output_rect, @@ -985,8 +1002,15 @@ bool BKE_image_render_write_exr(ReportList *reports, * the input is RGB[A] and not single channel because it filed the condition above. */ float *gray_scale_output = image_exr_from_rgb_to_bw( output_rect, rr->rectx, rr->recty, render_pass->channels, tmp_output_rects); - IMB_exr_add_channels( - exrhandle, "", "V", viewname, 1, rr->rectx, gray_scale_output, pass_half_float); + IMB_exr_add_channels(exrhandle, + "", + "V", + viewname, + colorspace, + 1, + rr->rectx, + gray_scale_output, + pass_half_float); } else if (render_pass->channels == 1) { /* In case of a single channel pass, we need to broadcast the same channel for each of @@ -997,6 +1021,7 @@ bool BKE_image_render_write_exr(ReportList *reports, "", std::string(1, "RGB"[i]).c_str(), viewname, + colorspace, 1, rr->rectx, output_rect, @@ -1010,7 +1035,7 @@ bool BKE_image_render_write_exr(ReportList *reports, float *alpha_output = image_exr_opaque_alpha_buffer( rr->rectx, rr->recty, tmp_output_rects); IMB_exr_add_channels( - exrhandle, "", "A", viewname, 1, rr->rectx, alpha_output, pass_half_float); + exrhandle, "", "A", viewname, colorspace, 1, rr->rectx, alpha_output, pass_half_float); } } } diff --git a/source/blender/imbuf/IMB_openexr.hh b/source/blender/imbuf/IMB_openexr.hh index e7c32e421d1..3f5fd804cf8 100644 --- a/source/blender/imbuf/IMB_openexr.hh +++ b/source/blender/imbuf/IMB_openexr.hh @@ -29,12 +29,13 @@ ExrHandle *IMB_exr_get_handle(bool write_multipart = false); * Add multiple channels to EXR file. * The number of channels is determined by channelnames.size() with * each character a channel name. - * Layer and pass name, and view name are optional. + * Layer and pass name, view name and colorspace are all optional. */ void IMB_exr_add_channels(ExrHandle *handle, blender::StringRefNull layerpassname, blender::StringRefNull channelnames, blender::StringRefNull viewname, + blender::StringRefNull colorspace, size_t xstride, size_t ystride, float *rect, diff --git a/source/blender/imbuf/intern/openexr/openexr_api.cpp b/source/blender/imbuf/intern/openexr/openexr_api.cpp index 821610481f0..197b4c7b97f 100644 --- a/source/blender/imbuf/intern/openexr/openexr_api.cpp +++ b/source/blender/imbuf/intern/openexr/openexr_api.cpp @@ -111,6 +111,7 @@ using namespace Imath; static bool exr_has_multiview(MultiPartInputFile &file); static bool exr_has_multipart_file(MultiPartInputFile &file); static bool exr_has_alpha(MultiPartInputFile &file); +static const ColorSpace *imb_exr_part_colorspace(const Header &header); /* XYZ with Illuminant E */ static Imf::Chromaticities CHROMATICITIES_XYZ_E{ @@ -521,6 +522,29 @@ static void openexr_header_metadata_global(Header *header, } } +static void openexr_header_metadata_colorspace(Header *header, const ColorSpace *colorspace) +{ + if (colorspace == nullptr) { + return; + } + + const char *aces_colorspace = IMB_colormanagement_role_colorspace_name_get( + COLOR_ROLE_ACES_INTERCHANGE); + const char *ibuf_colorspace = IMB_colormanagement_colorspace_get_name(colorspace); + + /* Write chromaticities for ACES-2065-1, as required by ACES container format. */ + if (aces_colorspace && STREQ(aces_colorspace, ibuf_colorspace)) { + header->insert("chromaticities", TypedAttribute(CHROMATICITIES_ACES_2065_1)); + header->insert("adoptedNeutral", TypedAttribute(CHROMATICITIES_ACES_2065_1.white)); + } + + /* Write interop ID if available. */ + blender::StringRefNull interop_id = IMB_colormanagement_space_get_interop_id(colorspace); + if (!interop_id.is_empty()) { + header->insert("colorInteropID", TypedAttribute(interop_id)); + } +} + static void openexr_header_metadata_colorspace(Header *header, ImBuf *ibuf) { /* Get colorspace from image buffer. */ @@ -536,23 +560,7 @@ static void openexr_header_metadata_colorspace(Header *header, ImBuf *ibuf) colorspace = ibuf->byte_buffer.colorspace; } - if (colorspace) { - const char *aces_colorspace = IMB_colormanagement_role_colorspace_name_get( - COLOR_ROLE_ACES_INTERCHANGE); - const char *ibuf_colorspace = IMB_colormanagement_colorspace_get_name(colorspace); - - /* Write chromaticities for ACES-2065-1, as required by ACES container format. */ - if (aces_colorspace && STREQ(aces_colorspace, ibuf_colorspace)) { - header->insert("chromaticities", TypedAttribute(CHROMATICITIES_ACES_2065_1)); - header->insert("adoptedNeutral", TypedAttribute(CHROMATICITIES_ACES_2065_1.white)); - } - - /* Write interop ID if available. */ - blender::StringRefNull interop_id = IMB_colormanagement_space_get_interop_id(colorspace); - if (!interop_id.is_empty()) { - header->insert("colorInteropID", TypedAttribute(interop_id)); - } - } + openexr_header_metadata_colorspace(header, colorspace); } static void openexr_header_metadata_callback(void *data, @@ -780,6 +788,9 @@ struct ExrChannel { /* Channel view. */ std::string view; + /* Colorspace. */ + const ColorSpace *colorspace; + int xstride = 0, ystride = 0; /* step to next pixel, to next scan-line. */ float *rect = nullptr; /* first pointer to write in */ char chan_id = 0; /* quick lookup of channel char */ @@ -899,6 +910,7 @@ void IMB_exr_add_channels(ExrHandle *handle, blender::StringRefNull layerpassname, blender::StringRefNull channelnames, blender::StringRefNull viewname, + blender::StringRefNull colorspace, size_t xstride, size_t ystride, float *rect, @@ -948,6 +960,7 @@ void IMB_exr_add_channels(ExrHandle *handle, echan.internal_name = full_name; echan.part_name = part_name; echan.view = viewname; + echan.colorspace = IMB_colormanagement_space_get_named(colorspace.c_str()); echan.xstride = xstride; echan.ystride = ystride; @@ -995,6 +1008,26 @@ bool IMB_exr_begin_write(ExrHandle *handle, openexr_header_compression(&header, compress, quality); + if (!handle->write_multipart) { + /* If we're writing single part, we can only add one colorspace even if there are + * multiple passes with potentially different spaces. Prefer to write non-data + * colorspace in that case, since readers can detect data passes based on + * channels names being e.g. XYZ instead of RGB. */ + bool found = false; + for (const ExrChannel &echan : handle->channels) { + if (echan.colorspace && !IMB_colormanagement_space_is_data(echan.colorspace)) { + openexr_header_metadata_colorspace(&header, echan.colorspace); + found = true; + break; + } + } + if (!found) { + if (const ColorSpace *colorspace = handle->channels[0].colorspace) { + openexr_header_metadata_colorspace(&header, colorspace); + } + } + } + blender::Vector
part_headers; blender::StringRefNull last_part_name; @@ -1003,13 +1036,14 @@ bool IMB_exr_begin_write(ExrHandle *handle, if (part_headers.is_empty() || last_part_name != echan.part_name) { Header part_header = header; - /* When writing multipart, set name, view and type in each part. */ + /* When writing multipart, set name, view,type and colorspace in each part. */ if (handle->write_multipart) { part_header.setName(echan.part_name); if (!echan.view.empty()) { part_header.insert("view", StringAttribute(echan.view)); } part_header.insert("type", StringAttribute(SCANLINEIMAGE)); + openexr_header_metadata_colorspace(&part_header, echan.colorspace); } /* Store global metadata in the first header only. Large metadata like cryptomatte would @@ -1552,10 +1586,19 @@ static blender::Vector exr_channels_in_multi_part_file(const MultiPa const bool parse_layers) { blender::Vector channels; + const ColorSpace *global_colorspace = imb_exr_part_colorspace(file.header(0)); + /* Get channels from each part. */ for (int p = 0; p < file.parts(); p++) { const ChannelList &c = file.header(p).channels(); + /* Parse colorspace. Per part colorspaces are not currently used, but + * might as well populate them them for consistency with writing. */ + const ColorSpace *colorspace = imb_exr_part_colorspace(file.header(p)); + if (colorspace == nullptr) { + colorspace = global_colorspace; + } + /* There are two ways of storing multiview EXRs: * - Multiple views in part with multiView attribute. * - Each view in its own part with view attribute. */ @@ -1609,6 +1652,7 @@ static blender::Vector exr_channels_in_multi_part_file(const MultiPa } echan.part_number = p; + echan.colorspace = colorspace; channels.append(std::move(echan)); } } @@ -1983,6 +2027,13 @@ static void imb_exr_set_known_colorspace(const Header &header, ImFileColorSpace } } +static const ColorSpace *imb_exr_part_colorspace(const Header &header) +{ + ImFileColorSpace colorspace; + imb_exr_set_known_colorspace(header, colorspace); + return IMB_colormanagement_space_get_named(colorspace.metadata_colorspace); +} + static bool exr_get_ppm(MultiPartInputFile &file, double ppm[2]) { const Header &header = file.header(0); diff --git a/source/blender/imbuf/intern/openexr/openexr_stub.cpp b/source/blender/imbuf/intern/openexr/openexr_stub.cpp index 97c9ae609eb..5441be76ef9 100644 --- a/source/blender/imbuf/intern/openexr/openexr_stub.cpp +++ b/source/blender/imbuf/intern/openexr/openexr_stub.cpp @@ -17,6 +17,7 @@ void IMB_exr_add_channels(ExrHandle * /*handle*/, blender::StringRefNull /*layerpassname*/, blender::StringRefNull /*channelnames*/, blender::StringRefNull /*viewname*/, + blender::StringRefNull /*colorspace*/, size_t /*xstride*/, size_t /*ystride*/, float * /*rect*/, diff --git a/tests/files/compositor/file_output/exr_multilayer_passes/0001.exr b/tests/files/compositor/file_output/exr_multilayer_passes/0001.exr index 7e834fe0da6..f6c6aa69cd2 100644 --- a/tests/files/compositor/file_output/exr_multilayer_passes/0001.exr +++ b/tests/files/compositor/file_output/exr_multilayer_passes/0001.exr @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:494205c90c7faeabb40b424ac2fc60d82c2ecad9d1e4b919458f821a18303d90 -size 5378 +oid sha256:207c7cfe7824731a0a11eb31afeaa118dd85e25641ed2d272365c08874a441bd +size 5408 diff --git a/tests/files/compositor/file_output/exr_multipart/multilayer_multipart0001_L.exr b/tests/files/compositor/file_output/exr_multipart/multilayer_multipart0001_L.exr index 140908862e6..2f308b69603 100644 --- a/tests/files/compositor/file_output/exr_multipart/multilayer_multipart0001_L.exr +++ b/tests/files/compositor/file_output/exr_multipart/multilayer_multipart0001_L.exr @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:38f4347bf148b3a881daa1a0e903086e26c337583e7f9bb6093bae7e544a6d11 -size 23733 +oid sha256:bcc4463e4170bd89e3b49c5913554763a3bbb4c01f20a54f2900b83814f016b5 +size 23877 diff --git a/tests/files/compositor/file_output/exr_multipart/multilayer_multipart0001_R.exr b/tests/files/compositor/file_output/exr_multipart/multilayer_multipart0001_R.exr index f8e40dcb8d0..f76173a479c 100644 --- a/tests/files/compositor/file_output/exr_multipart/multilayer_multipart0001_R.exr +++ b/tests/files/compositor/file_output/exr_multipart/multilayer_multipart0001_R.exr @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:635186ddb32909fcd6f1275d0fb725bd5babb126fae184f0fd6c8ed9aead4d72 -size 23733 +oid sha256:3195c27b3e7915cedb891d57a5bec80bdb445de21a5f10c3bbba7b44eaad4e86 +size 23877 diff --git a/tests/files/compositor/file_output/exr_multipart/multilayer_singlepart0001_L.exr b/tests/files/compositor/file_output/exr_multipart/multilayer_singlepart0001_L.exr index ab33a568d00..93c228f194b 100644 --- a/tests/files/compositor/file_output/exr_multipart/multilayer_singlepart0001_L.exr +++ b/tests/files/compositor/file_output/exr_multipart/multilayer_singlepart0001_L.exr @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3780497e510bab1b5bc7bf111bb678b2a9d9c4b199225165dda6cbd2b8caa932 -size 21082 +oid sha256:4e971da5fd633d63e367539fe65fd8996c2fc2394215ad93e52e7b246ada988b +size 21124 diff --git a/tests/files/compositor/file_output/exr_multipart/multilayer_singlepart0001_R.exr b/tests/files/compositor/file_output/exr_multipart/multilayer_singlepart0001_R.exr index 5154e1f8fa8..015ab9cadb4 100644 --- a/tests/files/compositor/file_output/exr_multipart/multilayer_singlepart0001_R.exr +++ b/tests/files/compositor/file_output/exr_multipart/multilayer_singlepart0001_R.exr @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a64de347b64300333ec6c2e2a9c37b3fc5f0fa79673698b2d65eba20fe9385d9 -size 21082 +oid sha256:f80af266a64dc9b91dd87fb669056a9957b222573d89182a08ed457f116c3b48 +size 21124 diff --git a/tests/files/compositor/file_output/exr_multipart/multiview_multipart0001.exr b/tests/files/compositor/file_output/exr_multipart/multiview_multipart0001.exr index fd6160fbe4e..855100f0c1c 100644 --- a/tests/files/compositor/file_output/exr_multipart/multiview_multipart0001.exr +++ b/tests/files/compositor/file_output/exr_multipart/multiview_multipart0001.exr @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f09afce7df1cd251f9a251aa360c4ea95af0bfbe948ed43e42686c6dd153438e -size 47547 +oid sha256:6ef2f16a11fb5afc8322f2103d994dcd698c9c93b516143e2fe4b3e31d365489 +size 47835 diff --git a/tests/files/compositor/file_output/exr_multipart/multiview_singlepart0001.exr b/tests/files/compositor/file_output/exr_multipart/multiview_singlepart0001.exr index 99bfddb41ee..b8faaa4a6f5 100644 --- a/tests/files/compositor/file_output/exr_multipart/multiview_singlepart0001.exr +++ b/tests/files/compositor/file_output/exr_multipart/multiview_singlepart0001.exr @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:33ecbf237abe33eda557bbdaaf31f68b1105dd7ad41399440093533ca51d2303 -size 41563 +oid sha256:ff30a5467565bf3360eb24672fa9c477f15dbf14e88728dbc7345da7b7108466 +size 41605 diff --git a/tests/files/compositor/file_output/exr_passes/Alpha0001.exr b/tests/files/compositor/file_output/exr_passes/Alpha0001.exr index c3007ea4723..0065b88ea14 100644 --- a/tests/files/compositor/file_output/exr_passes/Alpha0001.exr +++ b/tests/files/compositor/file_output/exr_passes/Alpha0001.exr @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:351b16545172beb388c0543f5a09d263255171ae386acebc9bebfda940f4e74c -size 631 +oid sha256:104396197d3e2cc35a3a54f17d7b952a7be21554cb5177b82f4d9f0051c29adf +size 718 diff --git a/tests/files/compositor/file_output/exr_passes/CryptoObject000001.exr b/tests/files/compositor/file_output/exr_passes/CryptoObject000001.exr index d09551d6e96..2e6dbcc6709 100644 --- a/tests/files/compositor/file_output/exr_passes/CryptoObject000001.exr +++ b/tests/files/compositor/file_output/exr_passes/CryptoObject000001.exr @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6e849156a128ed84ddc083d1fe042df2221eac4a02165719343f52b028945ac7 -size 2552 +oid sha256:5d4df9e5479988185a654b2449b23ce4fde0b1557a8e8eb8dd90d2efeb638038 +size 2639 diff --git a/tests/files/compositor/file_output/exr_passes/CryptoObject010001.exr b/tests/files/compositor/file_output/exr_passes/CryptoObject010001.exr index ecf3748f9a1..ed7a4f469ca 100644 --- a/tests/files/compositor/file_output/exr_passes/CryptoObject010001.exr +++ b/tests/files/compositor/file_output/exr_passes/CryptoObject010001.exr @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a7b9a8b64352552eb4ec36622371b91401ca6b9dbfaad32e096b39452acc4688 -size 933 +oid sha256:c6d88b9cfcf3ca76e914dff25dbf49510dee68965e7cfa7970d9e1ec8de616e8 +size 1020 diff --git a/tests/files/compositor/file_output/exr_passes/Depth0001.exr b/tests/files/compositor/file_output/exr_passes/Depth0001.exr index 7c7713edf59..3625457094d 100644 --- a/tests/files/compositor/file_output/exr_passes/Depth0001.exr +++ b/tests/files/compositor/file_output/exr_passes/Depth0001.exr @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f95d38150c46aed3a694b94a24423bf26cf3882262d5350f0c67b7a4e51a7979 -size 1016 +oid sha256:b67885a17096613890e965503c06a5435e99a813576d6304dcf3cb7ca199590b +size 1103 diff --git a/tests/files/compositor/file_output/exr_passes/DiffCol0001.exr b/tests/files/compositor/file_output/exr_passes/DiffCol0001.exr index 1975aa6c4d2..e425ef79817 100644 --- a/tests/files/compositor/file_output/exr_passes/DiffCol0001.exr +++ b/tests/files/compositor/file_output/exr_passes/DiffCol0001.exr @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9853545c0bcf5d11a117caa3cd24b2ad97a699ad9cfacc0b116be4512e38a170 -size 1384 +oid sha256:fd2600725a154b187b4c8f6716c1cd7df4155fc4b108fb9d28dac2b085a1110d +size 1483 diff --git a/tests/files/compositor/file_output/exr_passes/Image0001.exr b/tests/files/compositor/file_output/exr_passes/Image0001.exr index 43f05ee2eda..40fa1396f33 100644 --- a/tests/files/compositor/file_output/exr_passes/Image0001.exr +++ b/tests/files/compositor/file_output/exr_passes/Image0001.exr @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d9b1befc5b7a4963e18e47d622713f83aa14905917adf4d8c3051e50d99cd567 -size 1269 +oid sha256:386b2efd1827ea030652cfc7fa62f0fe39fc13ade3d91f932fa14a2d73c28dab +size 1368 diff --git a/tests/files/compositor/file_output/exr_passes/Normal0001.exr b/tests/files/compositor/file_output/exr_passes/Normal0001.exr index 90ee1d3d53a..73243c9a90f 100644 --- a/tests/files/compositor/file_output/exr_passes/Normal0001.exr +++ b/tests/files/compositor/file_output/exr_passes/Normal0001.exr @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8a6970b8a8fdb68d6f0bb15760707c6177cfb8c51ac012f54a9637e566bba398 -size 891 +oid sha256:4341f0d4ce4c51b8faeab4e65d853ca8d69076fb5782b1119b208164f98cf713 +size 974 diff --git a/tests/files/compositor/file_output/exr_passes/Vector0001.exr b/tests/files/compositor/file_output/exr_passes/Vector0001.exr index 378a2df78ec..e5a6e802c77 100644 --- a/tests/files/compositor/file_output/exr_passes/Vector0001.exr +++ b/tests/files/compositor/file_output/exr_passes/Vector0001.exr @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a3f3b334ddcb4344bea4c60a3c81fa30353bf427a650875f98318c2d5396b7e1 -size 741 +oid sha256:a16fa50f07c36345a709c693e4d005dbb0efa5a1e0505df0ca21b2eefaebdf7b +size 800 diff --git a/tests/files/compositor/file_output/exr_png_group_multilayer_passes/0001.exr b/tests/files/compositor/file_output/exr_png_group_multilayer_passes/0001.exr index 2aa01ef4803..d68b47c1c83 100644 --- a/tests/files/compositor/file_output/exr_png_group_multilayer_passes/0001.exr +++ b/tests/files/compositor/file_output/exr_png_group_multilayer_passes/0001.exr @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ba83c83d58289939878e38f7f817b633142486b6cf41e8aeb5fdcb884041e903 -size 5358 +oid sha256:a23f8ee6212a93ed1cbde581cf304c4e4770e9c97342d2854ffe1cf85d48bc11 +size 5418 diff --git a/tests/files/compositor/file_output/png_exr_single/Image0001.exr b/tests/files/compositor/file_output/png_exr_single/Image0001.exr index 7053d581f07..abca15e793a 100644 --- a/tests/files/compositor/file_output/png_exr_single/Image0001.exr +++ b/tests/files/compositor/file_output/png_exr_single/Image0001.exr @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e8980ebd995d0130588b2ce7559299393ef6ddafec432028a51ea63e6347e6bb -size 1020 +oid sha256:fcfd55de11a82bd4f866ceaec85b0a37388dddd7afb79ea7f056920fee864ed0 +size 1107 diff --git a/tests/files/compositor/file_output/png_to_exr/A0001.exr b/tests/files/compositor/file_output/png_to_exr/A0001.exr index ec653b6c9b7..d237486c9ed 100644 --- a/tests/files/compositor/file_output/png_to_exr/A0001.exr +++ b/tests/files/compositor/file_output/png_to_exr/A0001.exr @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4954992682b73f5b3befac12dc18a3545004cba509014ed61ef06a6a33e5829b -size 18458 +oid sha256:92d962e07e1f7076ffe38188ff3863717a25cdf4c4a56af1b2300867e02235b0 +size 18545 diff --git a/tests/files/compositor/file_output/png_to_exr/B0001.exr b/tests/files/compositor/file_output/png_to_exr/B0001.exr index 21b7963f0f6..766d304e08d 100644 --- a/tests/files/compositor/file_output/png_to_exr/B0001.exr +++ b/tests/files/compositor/file_output/png_to_exr/B0001.exr @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f963680479f0989552c0797203ffb0222a40b0c872b55371720524619ba9125d -size 117989 +oid sha256:c63ff23ffc3c736e6c831e20c582bf7f715a801f7d09e7c4223ab62cbf4bca2f +size 118076 diff --git a/tests/files/compositor/file_output/png_to_exr/G0001.exr b/tests/files/compositor/file_output/png_to_exr/G0001.exr index b0ec59f05c8..6a0ed8e4c02 100644 --- a/tests/files/compositor/file_output/png_to_exr/G0001.exr +++ b/tests/files/compositor/file_output/png_to_exr/G0001.exr @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a847c32415bbd75ea3c0b69f53b62057201153ec3c0a4202e262e025487191f1 -size 117599 +oid sha256:f1fe073cc3d1652ee28e75d76102426220aaa0c748d2b865f82bb04baec71f16 +size 117686 diff --git a/tests/files/compositor/file_output/png_to_exr/Image0001.exr b/tests/files/compositor/file_output/png_to_exr/Image0001.exr index 14cb317a747..16fd9ed731d 100644 --- a/tests/files/compositor/file_output/png_to_exr/Image0001.exr +++ b/tests/files/compositor/file_output/png_to_exr/Image0001.exr @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9b480dffdc7231b142a47e19151bf703cce61b10f37d709d06a798caa7854387 -size 146870 +oid sha256:4ba51fc86559fcdf1a04a4ed35f31ce10c00a4f667521cf52bc6d571ba2edd5a +size 146969 diff --git a/tests/files/compositor/file_output/png_to_exr/R0001.exr b/tests/files/compositor/file_output/png_to_exr/R0001.exr index 42eafe4628e..fd3b4939b14 100644 --- a/tests/files/compositor/file_output/png_to_exr/R0001.exr +++ b/tests/files/compositor/file_output/png_to_exr/R0001.exr @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fe8a325cd37cb1b68d169162e5a8c374b5dde404ae9e695c7d46f84692c3c624 -size 118257 +oid sha256:9525dd70ad7d925f151a4c613c2e7dff6f0e9b782f4d915ab0c0b018ee4539b5 +size 118344