diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2017-05-16 13:40:04 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2017-05-16 13:40:04 +0300 |
commit | a70a7f9db368deefeb6d07e1c4e6c84f1ebad59a (patch) | |
tree | e550c1e31a2d64113e1d9f9c97ba400d5b8dcb3a /source | |
parent | f89c6e739a0625029251117e19b58427d1299202 (diff) |
Fix T49864: EnvMap baking crashes 2.78 if 'Full Sample' checked in AA
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/imbuf/intern/openexr/openexr_api.cpp | 8 | ||||
-rw-r--r-- | source/blender/render/intern/source/envmap.c | 10 |
2 files changed, 14 insertions, 4 deletions
diff --git a/source/blender/imbuf/intern/openexr/openexr_api.cpp b/source/blender/imbuf/intern/openexr/openexr_api.cpp index 89e796fb7ee..29332a5c899 100644 --- a/source/blender/imbuf/intern/openexr/openexr_api.cpp +++ b/source/blender/imbuf/intern/openexr/openexr_api.cpp @@ -1026,15 +1026,16 @@ void IMB_exr_set_channel(void *handle, const char *layname, const char *passname ExrChannel *echan; char name[EXR_TOT_MAXNAME + 1]; - if (layname) { + if (layname && layname[0] != '\0') { char lay[EXR_LAY_MAXNAME + 1], pass[EXR_PASS_MAXNAME + 1]; BLI_strncpy(lay, layname, EXR_LAY_MAXNAME); BLI_strncpy(pass, passname, EXR_PASS_MAXNAME); BLI_snprintf(name, sizeof(name), "%s.%s", lay, pass); } - else + else { BLI_strncpy(name, passname, EXR_TOT_MAXNAME - 1); + } echan = (ExrChannel *)BLI_findstring(&data->channels, name, offsetof(ExrChannel, name)); @@ -1043,8 +1044,9 @@ void IMB_exr_set_channel(void *handle, const char *layname, const char *passname echan->ystride = ystride; echan->rect = rect; } - else + else { printf("IMB_exr_set_channel error %s\n", name); + } } float *IMB_exr_channel_rect(void *handle, const char *layname, const char *passname, const char *viewname) diff --git a/source/blender/render/intern/source/envmap.c b/source/blender/render/intern/source/envmap.c index b100c4f66bc..156b4215992 100644 --- a/source/blender/render/intern/source/envmap.c +++ b/source/blender/render/intern/source/envmap.c @@ -61,6 +61,7 @@ #include "renderpipeline.h" #include "texture.h" #include "zbuf.h" +#include "render_result.h" /* ------------------------------------------------------------------------- */ @@ -493,11 +494,18 @@ static void render_envmap(Render *re, EnvMap *env) env_rotate_scene(envre, tmat, 0); if (re->test_break(re->tbh) == 0) { - RenderLayer *rl = envre->result->layers.first; int y; float *alpha; float *rect; + if (envre->result->do_exr_tile) { + BLI_rw_mutex_lock(&envre->resultmutex, THREAD_LOCK_WRITE); + render_result_exr_file_end(envre); + BLI_rw_mutex_unlock(&envre->resultmutex); + } + + RenderLayer *rl = envre->result->layers.first; + /* envmap is rendered independently of multiview */ rect = RE_RenderLayerGetPass(rl, RE_PASSNAME_COMBINED, ""); ibuf = IMB_allocImBuf(envre->rectx, envre->recty, 24, IB_rect | IB_rectfloat); |