diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2016-04-19 13:54:29 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2016-04-19 13:56:33 +0300 |
commit | 9b48f2b27c0f64c7f8cc452ad3820f705c15495d (patch) | |
tree | f3f3ceb6870c3ef1da36c28199499849c0dcd0f2 /intern/cycles | |
parent | 376c8dd95ee2412d91292fe04ee3227d955a6e62 (diff) |
Cycles: Improvements and fixes for the resumable render
- Fix wrong current sample reported in the log
- Also includes fix for progressive refine log
- Explicitly print to the stdout that resumable render is enabled
- Print error message and abort when passing wrong values for the
resumable render. Never waste someone's compute power for wrong
render!
Fixes T48185: Cycles resumable num chunks breaks sample counter
Diffstat (limited to 'intern/cycles')
-rw-r--r-- | intern/cycles/blender/blender_python.cpp | 19 | ||||
-rw-r--r-- | intern/cycles/render/session.cpp | 7 |
2 files changed, 23 insertions, 3 deletions
diff --git a/intern/cycles/blender/blender_python.cpp b/intern/cycles/blender/blender_python.cpp index 989ba80c001..ceb9cbf242e 100644 --- a/intern/cycles/blender/blender_python.cpp +++ b/intern/cycles/blender/blender_python.cpp @@ -644,7 +644,20 @@ static PyObject *set_resumable_chunks_func(PyObject * /*self*/, PyObject *args) if(!PyArg_ParseTuple(args, "ii", &num_resumable_chunks, ¤t_resumable_chunk)) { - return NULL; + Py_RETURN_NONE; + } + + if(num_resumable_chunks <= 0) { + fprintf(stderr, "Cycles: Bad value for number of resumable chunks.\n"); + abort(); + Py_RETURN_NONE; + } + if(current_resumable_chunk < 1 || + current_resumable_chunk > num_resumable_chunks) + { + fprintf(stderr, "Cycles: Bad value for current resumable chunk number.\n"); + abort(); + Py_RETURN_NONE; } VLOG(1) << "Initialized resumable render: " @@ -653,6 +666,10 @@ static PyObject *set_resumable_chunks_func(PyObject * /*self*/, PyObject *args) BlenderSession::num_resumable_chunks = num_resumable_chunks; BlenderSession::current_resumable_chunk = current_resumable_chunk; + printf("Cycles: Will render chunk %d of %d\n", + current_resumable_chunk, + num_resumable_chunks); + Py_RETURN_NONE; } diff --git a/intern/cycles/render/session.cpp b/intern/cycles/render/session.cpp index 84a420ce9b6..24f48b61349 100644 --- a/intern/cycles/render/session.cpp +++ b/intern/cycles/render/session.cpp @@ -831,7 +831,8 @@ void Session::update_status_time(bool show_pause, bool show_done) string status, substatus; if(!params.progressive) { - const int progress_sample = progress.get_sample(), num_samples = tile_manager.num_samples; + const int progress_sample = progress.get_sample(), + num_samples = tile_manager.get_num_effective_samples(); const bool is_gpu = params.device.type == DEVICE_CUDA || params.device.type == DEVICE_OPENCL; const bool is_multidevice = params.device.multi_devices.size() > 1; const bool is_cpu = params.device.type == DEVICE_CPU; @@ -873,7 +874,9 @@ void Session::update_status_time(bool show_pause, bool show_done) else if(tile_manager.num_samples == INT_MAX) substatus = string_printf("Path Tracing Sample %d", sample+1); else - substatus = string_printf("Path Tracing Sample %d/%d", sample+1, tile_manager.num_samples); + substatus = string_printf("Path Tracing Sample %d/%d", + sample+1, + tile_manager.get_num_effective_samples()); if(show_pause) { status = "Paused"; |