diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2017-11-23 21:16:11 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2017-11-23 21:16:11 +0300 |
commit | 4f8bffa7bfe46192b43c75d864e2117369cbffdd (patch) | |
tree | 3e869e57151f4d487106d59bba1f2282a9578a44 /source/blender/render | |
parent | b79b8478ee3bb1b115c5d6b8bdb0cc74d5169955 (diff) | |
parent | debd9f6ea1286533d4d5c9262fa6724c862fe35e (diff) |
Merge branch 'master' into blender2.8
Diffstat (limited to 'source/blender/render')
-rw-r--r-- | source/blender/render/intern/source/render_result.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/source/blender/render/intern/source/render_result.c b/source/blender/render/intern/source/render_result.c index 53169c256a9..0e7f35fbca3 100644 --- a/source/blender/render/intern/source/render_result.c +++ b/source/blender/render/intern/source/render_result.c @@ -921,6 +921,17 @@ bool RE_WriteRenderResult(ReportList *reports, RenderResult *rr, const char *fil } } + /* We only store RGBA passes as half float, for + * others precision loss can be problematic. */ + bool pass_half_float = half_float && + (STREQ(rp->chan_id, "RGB") || + STREQ(rp->chan_id, "RGBA") || + STREQ(rp->chan_id, "R") || + STREQ(rp->chan_id, "G") || + STREQ(rp->chan_id, "B") || + STREQ(rp->chan_id, "A")); + + for (int a = 0; a < rp->channels; a++) { /* Save Combined as RGBA if single layer save. */ char passname[EXR_PASS_MAXNAME]; @@ -936,10 +947,9 @@ bool RE_WriteRenderResult(ReportList *reports, RenderResult *rr, const char *fil layname[0] = '\0'; } - /* Add channel. */ IMB_exr_add_channel(exrhandle, layname, passname, viewname, rp->channels, rp->channels * rr->rectx, rp->rect + a, - STREQ(rp->name, RE_PASSNAME_Z) ? false : half_float); + pass_half_float); } } } |