diff options
author | Matt Ebb <matt@mke3.net> | 2010-01-31 23:53:04 +0300 |
---|---|---|
committer | Matt Ebb <matt@mke3.net> | 2010-01-31 23:53:04 +0300 |
commit | 02c6d160d7332feaed3efd1a6378406966a25bb1 (patch) | |
tree | 87422af58656cd2c62966c2a666eb2fad8d91218 | |
parent | 6c584a449a33f090fc490a427d2c5eed0c41264a (diff) |
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)
-rw-r--r-- | source/blender/render/intern/source/pipeline.c | 13 |
1 files changed, 11 insertions, 2 deletions
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); |