Fix T53971: single layer render showing the wrong render layer in image editor.

Original patch Cheryl Chen, extra fixes by Brecht.

Differential Revision: https://developer.blender.org/D3098
This commit is contained in:
Cheryl Chen
2018-03-15 23:36:15 +01:00
committed by Brecht Van Lommel
parent e56fd59f22
commit 07b07e53ea
3 changed files with 37 additions and 11 deletions

View File

@@ -236,6 +236,8 @@ void RE_render_result_rect_from_ibuf(
struct RenderLayer *RE_GetRenderLayer(struct RenderResult *rr, const char *name);
float *RE_RenderLayerGetPass(volatile struct RenderLayer *rl, const char *name, const char *viewname);
bool RE_HasSingleLayer(struct Render *re);
/* add passes for grease pencil */
struct RenderPass *RE_create_gp_pass(struct RenderResult *rr, const char *layername, const char *viewname);

View File

@@ -257,6 +257,11 @@ RenderLayer *RE_GetRenderLayer(RenderResult *rr, const char *name)
}
}
bool RE_HasSingleLayer(Render *re)
{
return (re->r.scemode & R_SINGLE_LAYER);
}
RenderResult *RE_MultilayerConvert(void *exrhandle, const char *colorspace, bool predivide, int rectx, int recty)
{
return render_result_new_from_exr(exrhandle, colorspace, predivide, rectx, recty);
@@ -264,12 +269,19 @@ RenderResult *RE_MultilayerConvert(void *exrhandle, const char *colorspace, bool
RenderLayer *render_get_active_layer(Render *re, RenderResult *rr)
{
RenderLayer *rl = BLI_findlink(&rr->layers, re->r.actlay);
if (rl)
return rl;
else
return rr->layers.first;
SceneRenderLayer *srl = BLI_findlink(&re->r.layers, re->r.actlay);
if (srl) {
RenderLayer *rl = BLI_findstring(&rr->layers,
srl->name,
offsetof(RenderLayer, name));
if (rl) {
return rl;
}
}
return rr->layers.first;
}
static int render_scene_needs_vector(Render *re)