Fix T63359: no render preview when save buffers is on
This commit is contained in:
parent
96f0d22e3b
commit
00b10f9c3f
Notes:
blender-bot
2023-02-14 06:00:49 +01:00
Referenced by issue #63359, No render preview when "Save buffers" is on
|
@ -137,10 +137,7 @@ static void image_buffer_rect_update(RenderJob *rj,
|
|||
ColorManagedViewSettings *view_settings;
|
||||
ColorManagedDisplaySettings *display_settings;
|
||||
|
||||
/* Exception for exr tiles -- display buffer conversion happens here,
|
||||
* NOT in the color management pipeline.
|
||||
*/
|
||||
if (ibuf->userflags & IB_DISPLAY_BUFFER_INVALID && rr->do_exr_tile == false) {
|
||||
if (ibuf->userflags & IB_DISPLAY_BUFFER_INVALID) {
|
||||
/* The whole image buffer it so be color managed again anyway. */
|
||||
return;
|
||||
}
|
||||
|
@ -631,7 +628,7 @@ static void image_rect_update(void *rjv, RenderResult *rr, volatile rcti *renrec
|
|||
* this case GLSL doesn't have original float buffer to
|
||||
* operate with.
|
||||
*/
|
||||
if (rr->do_exr_tile || !rj->supports_glsl_draw || ibuf->channels == 1 ||
|
||||
if (!rj->supports_glsl_draw || ibuf->channels == 1 ||
|
||||
ED_draw_imbuf_method(ibuf) != IMAGE_DRAW_METHOD_GLSL) {
|
||||
image_buffer_rect_update(rj, rr, ibuf, &rj->iuser, renrect, viewname);
|
||||
}
|
||||
|
|
|
@ -288,6 +288,7 @@ void RE_engine_end_result(
|
|||
if (re->result->do_exr_tile) {
|
||||
if (!cancel && merge_results) {
|
||||
render_result_exr_file_merge(re->result, result, re->viewname);
|
||||
render_result_merge(re->result, result);
|
||||
}
|
||||
}
|
||||
else if (!(re->test_break(re->tbh) && (re->r.scemode & R_BUTS_PREVIEW))) {
|
||||
|
|
|
@ -240,7 +240,10 @@ static RenderPass *render_layer_add_pass(RenderResult *rr,
|
|||
false);
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
/* Always allocate combined for display, in case of save buffers
|
||||
* other passes are not allocated and only saved to the EXR file. */
|
||||
if (rl->exrhandle == NULL || STREQ(rpass->name, RE_PASSNAME_COMBINED)) {
|
||||
float *rect;
|
||||
int x;
|
||||
|
||||
|
@ -853,10 +856,14 @@ void render_result_merge(RenderResult *rr, RenderResult *rrpart)
|
|||
for (rl = rr->layers.first; rl; rl = rl->next) {
|
||||
rlp = RE_GetRenderLayer(rrpart, rl->name);
|
||||
if (rlp) {
|
||||
/* passes are allocated in sync */
|
||||
/* Passes are allocated in sync. */
|
||||
for (rpass = rl->passes.first, rpassp = rlp->passes.first; rpass && rpassp;
|
||||
rpass = rpass->next) {
|
||||
/* renderresult have all passes, renderpart only the active view's passes */
|
||||
/* For save buffers, skip any passes that are only saved to disk. */
|
||||
if (rpass->rect == NULL || rpassp->rect == NULL) {
|
||||
continue;
|
||||
}
|
||||
/* Renderresult have all passes, renderpart only the active view's passes. */
|
||||
if (strcmp(rpassp->fullname, rpass->fullname) != 0) {
|
||||
continue;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue