Fix EXR multilayer compositing result saving issues.
* It was saved as Combined.Combined instead of Composite.Combined. * It was written even if no compositing was enabled.
This commit is contained in:
@@ -2868,7 +2868,7 @@ RenderPass *BKE_image_multilayer_index(RenderResult *rr, ImageUser *iuser)
|
||||
bool is_stereo = (iuser->flag & IMA_SHOW_STEREO) && RE_RenderResult_is_stereo(rr);
|
||||
|
||||
rv_index = is_stereo ? iuser->multiview_eye : iuser->view;
|
||||
if (RE_HasFakeLayer(rr)) rl_index += 1;
|
||||
if (RE_HasCombinedLayer(rr)) rl_index += 1;
|
||||
|
||||
for (rl = rr->layers.first; rl; rl = rl->next, rl_index++) {
|
||||
if (iuser->layer == rl_index) {
|
||||
|
||||
@@ -548,7 +548,7 @@ static bool ui_imageuser_layer_menu_step(bContext *C, int direction, void *rnd_p
|
||||
else if (direction == 1) {
|
||||
int tot = BLI_listbase_count(&rr->layers);
|
||||
|
||||
if (RE_HasFakeLayer(rr))
|
||||
if (RE_HasCombinedLayer(rr))
|
||||
tot++; /* fake compo/sequencer layer */
|
||||
|
||||
if (iuser->layer < tot - 1) {
|
||||
@@ -588,7 +588,7 @@ static bool ui_imageuser_pass_menu_step(bContext *C, int direction, void *rnd_pt
|
||||
return false;
|
||||
}
|
||||
|
||||
if (RE_HasFakeLayer(rr)) {
|
||||
if (RE_HasCombinedLayer(rr)) {
|
||||
layer -= 1;
|
||||
}
|
||||
|
||||
|
||||
@@ -387,7 +387,7 @@ void RE_updateRenderInstances(Render *re, int flag);
|
||||
|
||||
/******* defined in render_result.c *********/
|
||||
|
||||
bool RE_HasFakeLayer(RenderResult *res);
|
||||
bool RE_HasCombinedLayer(RenderResult *res);
|
||||
bool RE_RenderResult_is_stereo(RenderResult *res);
|
||||
struct RenderView *RE_RenderViewGetById(struct RenderResult *res, const int view_id);
|
||||
struct RenderView *RE_RenderViewGetByName(struct RenderResult *res, const char *viewname);
|
||||
|
||||
@@ -374,6 +374,7 @@ void RE_AcquireResultImageViews(Render *re, RenderResult *rr)
|
||||
render_result_views_shallowcopy(rr, re->result);
|
||||
|
||||
rv = rr->views.first;
|
||||
rr->have_combined = (rv->rectf != NULL);
|
||||
|
||||
/* active layer */
|
||||
rl = render_get_active_layer(re, re->result);
|
||||
@@ -392,7 +393,6 @@ void RE_AcquireResultImageViews(Render *re, RenderResult *rr)
|
||||
}
|
||||
}
|
||||
|
||||
rr->have_combined = (rv->rectf != NULL);
|
||||
rr->layers = re->result->layers;
|
||||
rr->xof = re->disprect.xmin;
|
||||
rr->yof = re->disprect.ymin;
|
||||
@@ -431,6 +431,7 @@ void RE_AcquireResultImage(Render *re, RenderResult *rr, const int view_id)
|
||||
|
||||
/* actview view */
|
||||
rv = RE_RenderViewGetById(re->result, view_id);
|
||||
rr->have_combined = (rv->rectf != NULL);
|
||||
|
||||
rr->rectf = rv->rectf;
|
||||
rr->rectz = rv->rectz;
|
||||
@@ -447,7 +448,6 @@ void RE_AcquireResultImage(Render *re, RenderResult *rr, const int view_id)
|
||||
rr->rectz = RE_RenderLayerGetPass(rl, RE_PASSNAME_Z, rv->name);
|
||||
}
|
||||
|
||||
rr->have_combined = (rv->rectf != NULL);
|
||||
rr->layers = re->result->layers;
|
||||
rr->views = re->result->views;
|
||||
|
||||
|
||||
@@ -883,7 +883,7 @@ bool RE_WriteRenderResult(ReportList *reports, RenderResult *rr, const char *fil
|
||||
char passname[EXR_PASS_MAXNAME];
|
||||
for (a = 0; a < 4; a++) {
|
||||
set_pass_name(passname, RE_PASSNAME_COMBINED, a, "RGBA");
|
||||
IMB_exr_add_channel(exrhandle, RE_PASSNAME_COMBINED, passname,
|
||||
IMB_exr_add_channel(exrhandle, "Composite", passname,
|
||||
chan_view, 4, 4 * width, rview->rectf + a,
|
||||
use_half_float);
|
||||
}
|
||||
@@ -1370,7 +1370,7 @@ void render_result_rect_get_pixels(RenderResult *rr, unsigned int *rect, int rec
|
||||
|
||||
/*************************** multiview functions *****************************/
|
||||
|
||||
bool RE_HasFakeLayer(RenderResult *res)
|
||||
bool RE_HasCombinedLayer(RenderResult *res)
|
||||
{
|
||||
RenderView *rv;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user