diff options
author | Patrick Mours <pmours@nvidia.com> | 2020-02-25 15:31:08 +0300 |
---|---|---|
committer | Patrick Mours <pmours@nvidia.com> | 2020-02-25 17:27:11 +0300 |
commit | 0c09700f20646bb4083063bfe525e05d52e79b10 (patch) | |
tree | 116bf608ce95b8cff7177cd89d43731f5d7e4a12 /intern/cycles/blender | |
parent | a4a1074f3d2411a562c5cd4d5ebee6d92a1f0a27 (diff) |
Cycles: Add option to change which sample to start viewport denoising at
This patch adds a new user-configurable option to change at which sample viewport
denoising should kick in. Setting it to zero retains previous behavior (start immediately), while
other values will defer denoising until the particular sample has been reached. Default is now
at one, to avoid the weirdness that is AI denoising at small resolutions.
Reviewed By: brecht
Differential Revision: https://developer.blender.org/D6906
Diffstat (limited to 'intern/cycles/blender')
-rw-r--r-- | intern/cycles/blender/addon/properties.py | 6 | ||||
-rw-r--r-- | intern/cycles/blender/addon/ui.py | 5 | ||||
-rw-r--r-- | intern/cycles/blender/blender_session.cpp | 1 | ||||
-rw-r--r-- | intern/cycles/blender/blender_sync.cpp | 1 |
4 files changed, 13 insertions, 0 deletions
diff --git a/intern/cycles/blender/addon/properties.py b/intern/cycles/blender/addon/properties.py index c60881f9351..d66a1f70c48 100644 --- a/intern/cycles/blender/addon/properties.py +++ b/intern/cycles/blender/addon/properties.py @@ -569,6 +569,12 @@ class CyclesRenderSettings(bpy.types.PropertyGroup): default=64, subtype='PIXEL' ) + preview_denoising_start_sample: IntProperty( + name="Start Denoising", + description="Sample to start denoising the preview at", + min=0, max=(1 << 24), + default=1, + ) debug_reset_timeout: FloatProperty( name="Reset timeout", diff --git a/intern/cycles/blender/addon/ui.py b/intern/cycles/blender/addon/ui.py index 3efd2a0c209..ed9e3a4c9cf 100644 --- a/intern/cycles/blender/addon/ui.py +++ b/intern/cycles/blender/addon/ui.py @@ -710,6 +710,11 @@ class CYCLES_RENDER_PT_performance_viewport(CyclesButtonsPanel, Panel): col.prop(rd, "preview_pixel_size", text="Pixel Size") col.prop(cscene, "preview_start_resolution", text="Start Pixels") + if show_optix_denoising(context): + sub = col.row(align=True) + sub.active = cscene.preview_denoising != 'NONE' + sub.prop(cscene, "preview_denoising_start_sample", text="Denoising Start Sample") + class CYCLES_RENDER_PT_filter(CyclesButtonsPanel, Panel): bl_label = "Filter" diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp index 388af80a79a..5cfb1200c7c 100644 --- a/intern/cycles/blender/blender_session.cpp +++ b/intern/cycles/blender/blender_session.cpp @@ -849,6 +849,7 @@ void BlenderSession::synchronize(BL::Depsgraph &b_depsgraph_) /* increase samples, but never decrease */ session->set_samples(session_params.samples); + session->set_denoising_start_sample(session_params.denoising_start_sample); session->set_pause(session_pause); /* copy recalc flags, outside of mutex so we can decide to do the real diff --git a/intern/cycles/blender/blender_sync.cpp b/intern/cycles/blender/blender_sync.cpp index bfa3df1b295..50442c6ebdc 100644 --- a/intern/cycles/blender/blender_sync.cpp +++ b/intern/cycles/blender/blender_sync.cpp @@ -832,6 +832,7 @@ SessionParams BlenderSync::get_session_params(BL::RenderEngine &b_engine, /* other parameters */ params.start_resolution = get_int(cscene, "preview_start_resolution"); + params.denoising_start_sample = get_int(cscene, "preview_denoising_start_sample"); params.pixel_size = b_engine.get_preview_pixel_size(b_scene); /* other parameters */ |