Commit: a21277b99680e02fcc09ea47026f063b1363fe40 Author: Lukas Stockner Date: Fri May 19 03:27:38 2017 +0200 Branches: master https://developer.blender.org/rBa21277b99680e02fcc09ea47026f063b1363fe40
Fix T51555: Cycles tile count is incorrect when denoising is enabled Now rendered and denoised tiles are counted and displayed separately. =================================================================== M intern/cycles/render/session.cpp M intern/cycles/util/util_progress.h =================================================================== diff --git a/intern/cycles/render/session.cpp b/intern/cycles/render/session.cpp index 3eaf34c847f..3f080407b1f 100644 --- a/intern/cycles/render/session.cpp +++ b/intern/cycles/render/session.cpp @@ -479,7 +479,7 @@ void Session::release_tile(RenderTile& rtile) { thread_scoped_lock tile_lock(tile_mutex); - progress.add_finished_tile(); + progress.add_finished_tile(rtile.task == RenderTile::DENOISE); bool delete_tile; @@ -912,7 +912,7 @@ void Session::update_status_time(bool show_pause, bool show_done) int progressive_sample = tile_manager.state.sample; int num_samples = tile_manager.get_num_effective_samples(); - int tile = progress.get_finished_tiles(); + int tile = progress.get_rendered_tiles(); int num_tiles = tile_manager.state.num_tiles; /* update status */ @@ -920,11 +920,12 @@ void Session::update_status_time(bool show_pause, bool show_done) if(!params.progressive) { const bool is_cpu = params.device.type == DEVICE_CPU; + const bool rendering_finished = (tile == num_tiles); const bool is_last_tile = (tile + 1) == num_tiles; substatus = string_printf("Path Tracing Tile %d/%d", tile, num_tiles); - if(device->show_samples() || (is_cpu && is_last_tile)) { + if(!rendering_finished && (device->show_samples() || (is_cpu && is_last_tile))) { /* Some devices automatically support showing the sample number: * - CUDADevice * - OpenCLDevice when using the megakernel (the split kernel renders multiple @@ -936,6 +937,9 @@ void Session::update_status_time(bool show_pause, bool show_done) */ substatus += string_printf(", Sample %d/%d", progress.get_current_sample(), num_samples); } + if(params.use_denoising) { + substatus += string_printf(", Denoised %d tiles", progress.get_denoised_tiles()); + } } else if(tile_manager.num_samples == INT_MAX) substatus = string_printf("Path Tracing Sample %d", progressive_sample+1); diff --git a/intern/cycles/util/util_progress.h b/intern/cycles/util/util_progress.h index 39c1eed04e7..bc672669e1f 100644 --- a/intern/cycles/util/util_progress.h +++ b/intern/cycles/util/util_progress.h @@ -37,7 +37,8 @@ public: pixel_samples = 0; total_pixel_samples = 0; current_tile_sample = 0; - finished_tiles = 0; + rendered_tiles = 0; + denoised_tiles = 0; start_time = time_dt(); render_start_time = time_dt(); status = "Initializing"; @@ -75,7 +76,8 @@ public: pixel_samples = 0; total_pixel_samples = 0; current_tile_sample = 0; - finished_tiles = 0; + rendered_tiles = 0; + denoised_tiles = 0; start_time = time_dt(); render_start_time = time_dt(); status = "Initializing"; @@ -177,7 +179,8 @@ public: pixel_samples = 0; current_tile_sample = 0; - finished_tiles = 0; + rendered_tiles = 0; + denoised_tiles = 0; } void set_total_pixel_samples(uint64_t total_pixel_samples_) @@ -209,11 +212,16 @@ public: set_update(); } - void add_finished_tile() + void add_finished_tile(bool denoised) { thread_scoped_lock lock(progress_mutex); - finished_tiles++; + if(denoised) { + denoised_tiles++; + } + else { + rendered_tiles++; + } } int get_current_sample() @@ -223,9 +231,14 @@ public: return current_tile_sample; } - int get_finished_tiles() + int get_rendered_tiles() + { + return rendered_tiles; + } + + int get_denoised_tiles() { - return finished_tiles; + return denoised_tiles; } /* status messages */ @@ -318,7 +331,7 @@ protected: int current_tile_sample; /* Stores the number of tiles that's already finished. * Used to determine whether all but the last tile are finished rendering, in which case the current_tile_sample is displayed. */ - int finished_tiles; + int rendered_tiles, denoised_tiles; double start_time, render_start_time; _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs