Fix Cycles showing empty tiles while they are being denoised.
This commit is contained in:
@@ -330,20 +330,20 @@ void BlenderSession::do_write_update_render_tile(RenderTile& rtile, bool do_upda
|
|||||||
BL::RenderLayer b_rlay = *b_single_rlay;
|
BL::RenderLayer b_rlay = *b_single_rlay;
|
||||||
|
|
||||||
if(do_update_only) {
|
if(do_update_only) {
|
||||||
/* update only needed */
|
/* Sample would be zero at initial tile update, which is only needed
|
||||||
|
|
||||||
if(rtile.sample != 0) {
|
|
||||||
/* sample would be zero at initial tile update, which is only needed
|
|
||||||
* to tag tile form blender side as IN PROGRESS for proper highlight
|
* to tag tile form blender side as IN PROGRESS for proper highlight
|
||||||
* no buffers should be sent to blender yet
|
* no buffers should be sent to blender yet. For denoise we also
|
||||||
*/
|
* keep showing the noisy buffers until denoise is done. */
|
||||||
|
bool merge = (rtile.sample != 0) && (rtile.task != RenderTile::DENOISE);
|
||||||
|
|
||||||
|
if(merge) {
|
||||||
update_render_result(b_rr, b_rlay, rtile);
|
update_render_result(b_rr, b_rlay, rtile);
|
||||||
}
|
}
|
||||||
|
|
||||||
end_render_result(b_engine, b_rr, true, highlight, false);
|
end_render_result(b_engine, b_rr, true, highlight, merge);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/* write result */
|
/* Write final render result. */
|
||||||
write_render_result(b_rr, b_rlay, rtile);
|
write_render_result(b_rr, b_rlay, rtile);
|
||||||
end_render_result(b_engine, b_rr, false, false, true);
|
end_render_result(b_engine, b_rr, false, false, true);
|
||||||
}
|
}
|
||||||
|
@@ -273,7 +273,7 @@ void RE_engine_end_result(RenderEngine *engine, RenderResult *result, int cancel
|
|||||||
RenderPart *pa = get_part_from_result(re, result);
|
RenderPart *pa = get_part_from_result(re, result);
|
||||||
|
|
||||||
if (pa) {
|
if (pa) {
|
||||||
pa->status = (merge_results)? PART_STATUS_MERGED: PART_STATUS_RENDERED;
|
pa->status = (!cancel && merge_results)? PART_STATUS_MERGED: PART_STATUS_RENDERED;
|
||||||
}
|
}
|
||||||
else if (re->result->do_exr_tile) {
|
else if (re->result->do_exr_tile) {
|
||||||
/* if written result does not match any tile and we are using save
|
/* if written result does not match any tile and we are using save
|
||||||
|
Reference in New Issue
Block a user