From 02c6d160d7332feaed3efd1a6378406966a25bb1 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Sun, 31 Jan 2010 20:53:04 +0000 Subject: Fix [#20901] OPENEXR: Incorrect gamma from colour management Was working correctly on float render buffers, but not 8bpc render buffers (only generated from sequence editor) --- source/blender/render/intern/source/pipeline.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'source/blender/render') diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index 6bd5aea70b1..4ae00c94c6a 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -2836,9 +2836,18 @@ static int do_write_image_or_movie(Render *re, Scene *scene, bMovieHandle *mh, R /* float factor for random dither, imbuf takes care of it */ ibuf->dither= scene->r.dither_intensity; + /* prepare to gamma correct to sRGB color space */ - if (scene->r.color_mgt_flag & R_COLOR_MANAGEMENT) - ibuf->profile = IB_PROFILE_LINEAR_RGB; + if (scene->r.color_mgt_flag & R_COLOR_MANAGEMENT) { + /* sequence editor can generate 8bpc render buffers */ + if (ibuf->rect) { + ibuf->profile = IB_PROFILE_SRGB; + if (ELEM(scene->r.imtype, R_OPENEXR, R_RADHDR)) + IMB_float_from_rect(ibuf); + } else { + ibuf->profile = IB_PROFILE_LINEAR_RGB; + } + } ok= BKE_write_ibuf(scene, ibuf, name, scene->r.imtype, scene->r.subimtype, scene->r.quality); -- cgit v1.2.3