Commit: 94f65851972d6e1b9b7a7016e8f1dddfe77adff0 Author: Lukas Stockner Date: Wed Mar 30 17:17:15 2016 +0200 Branches: experimental-build https://developer.blender.org/rB94f65851972d6e1b9b7a7016e8f1dddfe77adff0
Revert "Cycles: Experimental proof-of-concept LWR denoising v2" This reverts commit 5bf2b6facead2ed98e2076dd47337e61d6280a7c. =================================================================== M intern/cycles/blender/addon/properties.py M intern/cycles/blender/addon/ui.py M intern/cycles/blender/blender_session.cpp M intern/cycles/blender/blender_session.h M intern/cycles/blender/blender_sync.cpp M intern/cycles/device/device_cpu.cpp M intern/cycles/device/device_cuda.cpp M intern/cycles/device/device_task.h M intern/cycles/kernel/CMakeLists.txt M intern/cycles/kernel/closure/bsdf.h M intern/cycles/kernel/closure/bsdf_ashikhmin_shirley.h M intern/cycles/kernel/closure/bsdf_ashikhmin_velvet.h M intern/cycles/kernel/closure/bsdf_diffuse.h M intern/cycles/kernel/closure/bsdf_hair.h M intern/cycles/kernel/closure/bsdf_microfacet.h M intern/cycles/kernel/closure/bsdf_oren_nayar.h M intern/cycles/kernel/closure/bsdf_reflection.h M intern/cycles/kernel/closure/bsdf_refraction.h M intern/cycles/kernel/closure/bsdf_toon.h M intern/cycles/kernel/closure/bsdf_transparent.h M intern/cycles/kernel/kernel_accumulate.h D intern/cycles/kernel/kernel_filter.h M intern/cycles/kernel/kernel_passes.h M intern/cycles/kernel/kernel_path.h M intern/cycles/kernel/kernel_path_branched.h M intern/cycles/kernel/kernel_path_state.h M intern/cycles/kernel/kernel_path_surface.h M intern/cycles/kernel/kernel_shader.h M intern/cycles/kernel/kernel_types.h M intern/cycles/kernel/kernels/cpu/kernel_cpu.h M intern/cycles/kernel/kernels/cpu/kernel_cpu_impl.h M intern/cycles/kernel/kernels/cuda/kernel.cu M intern/cycles/render/buffers.cpp M intern/cycles/render/buffers.h M intern/cycles/render/film.cpp M intern/cycles/render/film.h M intern/cycles/render/session.cpp M intern/cycles/render/session.h M intern/cycles/render/tile.cpp M intern/cycles/render/tile.h M intern/cycles/util/CMakeLists.txt M intern/cycles/util/util_atomic.h M intern/cycles/util/util_math.h =================================================================== diff --git a/intern/cycles/blender/addon/properties.py b/intern/cycles/blender/addon/properties.py index 0dd5a16..01aa619 100644 --- a/intern/cycles/blender/addon/properties.py +++ b/intern/cycles/blender/addon/properties.py @@ -255,63 +255,6 @@ class CyclesRenderSettings(bpy.types.PropertyGroup): default='USE', ) - cls.use_filtering = BoolProperty( - name="Use LWR filtering", - description="Apply a post-processing filter to the image that removes noise at the cost of accuracy", - default=False, - ) - cls.filter_half_window = IntProperty( - name="Half Window", - description="Radius of the LWR filter window (larger values produce smoother results, but take longer to filter and potentially lose more detail)", - min=2, max=64, - default=5, - ) - cls.filter_bandwidth_factor = FloatProperty( - name="Bandwidth factor", - description="Controls the strength of the filtering - 0 is the automatically selected strength (and should be fine for most scenes, except for hair/fur)", - min=-2, max=2, - default=0, - ) - - cls.filter_diffuse_direct = BoolProperty( - name="Diffuse Direct", - description="Filter the diffuse direct pass separately", - default=False, - ) - cls.filter_diffuse_indirect = BoolProperty( - name="Diffuse Indirect", - description="Filter the diffuse indirect pass separately", - default=False, - ) - cls.filter_glossy_direct = BoolProperty( - name="Glossy Direct", - description="Filter the glossy direct pass separately", - default=False, - ) - cls.filter_glossy_indirect = BoolProperty( - name="Glossy Indirect", - description="Filter the glossy indirect pass separately", - default=False, - ) - cls.filter_transmission_direct = BoolProperty( - name="Transmission Direct", - description="Filter the transmission direct pass separately", - default=False, - ) - cls.filter_transmission_indirect = BoolProperty( - name="Transmissison Indirect", - description="Filter the transmission indirect pass separately", - default=False, - ) - - cls.prepass_samples = IntProperty( - name="Prepass Samples", - description="Number of samples to render before the remaining samples are rendered" - "in order to give a faster preview of the result", - min=0, max=16384, - default=0, - ) - cls.sample_all_lights_direct = BoolProperty( name="Sample All Direct Lights", description="Sample all lights (for direct samples), rather than randomly picking one", diff --git a/intern/cycles/blender/addon/ui.py b/intern/cycles/blender/addon/ui.py index a2fc55c..b9e51df 100644 --- a/intern/cycles/blender/addon/ui.py +++ b/intern/cycles/blender/addon/ui.py @@ -200,22 +200,6 @@ class CyclesRender_PT_sampling(CyclesButtonsPanel, Panel): if not (use_opencl(context) and cscene.feature_set != 'EXPERIMENTAL'): layout.row().prop(cscene, "sampling_pattern", text="Pattern") - row = layout.row() - sub = row.column() - sub.prop(cscene, "use_filtering") - if cscene.use_filtering: - sub.prop(cscene, "filter_half_window") - sub.prop(cscene, "filter_bandwidth_factor", slider=True) - col = sub.column(align=True) - row = col.row(align=True) - row.prop(cscene, "filter_diffuse_direct", toggle=True) - row.prop(cscene, "filter_glossy_direct", toggle=True) - row.prop(cscene, "filter_transmission_direct", toggle=True) - row = col.row(align=True) - row.prop(cscene, "filter_diffuse_indirect", toggle=True) - row.prop(cscene, "filter_glossy_indirect", toggle=True) - row.prop(cscene, "filter_transmission_indirect", toggle=True) - for rl in scene.render.layers: if rl.samples > 0: layout.separator() @@ -379,7 +363,6 @@ class CyclesRender_PT_performance(CyclesButtonsPanel, Panel): sub.prop(rd, "tile_y", text="Y") sub.prop(cscene, "use_progressive_refine") - sub.prop(cscene, "prepass_samples") subsub = sub.column(align=True) subsub.enabled = not rd.use_border diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp index 39e9c0c..92b5b72 100644 --- a/intern/cycles/blender/blender_session.cpp +++ b/intern/cycles/blender/blender_session.cpp @@ -379,12 +379,16 @@ static void end_render_result(BL::RenderEngine& b_engine, b_engine.end_result(b_rr, (int)cancel, (int)do_merge_results); } -void BlenderSession::do_write_update_render_tile(RenderTile& rtile, bool highlight, bool do_update_only) +void BlenderSession::do_write_update_render_tile(RenderTile& rtile, bool do_update_only) { + BufferParams& params = rtile.buffers->params; + int x = params.full_x - session->tile_manager.params.full_x; + int y = params.full_y - session->tile_manager.params.full_y; + int w = params.width; + int h = params.height; + /* get render result */ - int x = rtile.x - session->tile_manager.params.full_x; - int y = rtile.y - session->tile_manager.params.full_y; - BL::RenderResult b_rr = begin_render_result(b_engine, x, y, rtile.w, rtile.h, b_rlay_name.c_str(), b_rview_name.c_str()); + BL::RenderResult b_rr = begin_render_result(b_engine, x, y, w, h, b_rlay_name.c_str(), b_rview_name.c_str()); /* can happen if the intersected rectangle gives 0 width or height */ if(b_rr.ptr.data == NULL) { @@ -411,37 +415,37 @@ void BlenderSession::do_write_update_render_tile(RenderTile& rtile, bool highlig update_render_result(b_rr, b_rlay, rtile); } - end_render_result(b_engine, b_rr, highlight, true); + end_render_result(b_engine, b_rr, true, true); } else { /* write result */ write_render_result(b_rr, b_rlay, rtile); - end_render_result(b_engine, b_rr, highlight, true); + end_render_result(b_engine, b_rr, false, true); } } void BlenderSession::write_render_tile(RenderTile& rtile) { - do_write_update_render_tile(rtile, false, false); + do_write_update_render_tile(rtile, false); } -void BlenderSession::update_render_tile(RenderTile& rtile, bool highlight) +void BlenderSession::update_render_tile(RenderTile& rtile) { /* use final write for preview renders, otherwise render result wouldn't be * be updated in blender side * would need to be investigated a bit further, but for now shall be fine */ if(!b_engine.is_preview()) - do_write_update_render_tile(rtile, highlight, true); + do_write_update_render_tile(rtile, true); else - do_write_update_render_tile(rtile, false, false); + do_write_update_render_tile(rtile, false); } void BlenderSession::render() { /* set callback to write out render results */ session->write_render_tile_cb = function_bind(&BlenderSession::write_render_tile, this, _1); - session->update_render_tile_cb = function_bind(&BlenderSession::update_render_tile, this, _1, _2); + session->update_render_tile_cb = function_bind(&BlenderSession::update_render_tile, this, _1); /* get buffer parameters */ SessionParams session_params = BlenderSync::get_session_params(b_engine, b_userpref, b_scene, background); @@ -451,7 +455,7 @@ void BlenderSession::render() BL::RenderSettings r = b_scene.render(); BL::RenderSettings::layers_iterator b_layer_iter; BL::RenderResult::views_iterator b_view_iter; - + for(r.layers.begin(b_layer_iter); b_layer_iter != r.layers.end(); ++b_layer_iter) { b_rlay_name = b_layer_iter->name(); @@ -489,9 +493,8 @@ void BlenderSession::render() } buffer_params.passes = passes; - buffer_params.lwr_passes = session_params.filter_params; scene->film->pass_alpha_threshold = b_layer_iter->pass_alpha_threshold(); - scene->film->tag_passes_update(scene, passes, session_params.filter_params); + scene->film->tag_passes_update(scene, passes); scene->film->tag_update(scene); scene->integrator->tag_update(scene); @@ -715,9 +718,10 @@ void BlenderSession::do_write_update_render_result(BL::RenderResult& b_rr, if(!buffers->copy_from_device()) return; + BufferParams& params = buffers->params; float exposure = scene->film->exposure; - vector<float> pixels(rtile.w*rtile.h*4); + vector<float> pixels(params.width*params.height*4); /* Adjust absolute sample number to the range. */ int sample = rtile.sample; @@ -738,7 +742,7 @@ void BlenderSession::do_write_update_render_result(BL::RenderResult& b_rr, int components = b_pass.channels(); /* copy pixels */ - if(!buffers->get_pass_rect(pass_type, exposure, sample, components, &pixels[0], rtile.x, rtile.y, rtile.w, rtile.h)) + if(!buffers->get_pass_rect(pass_type, exposure, sample, components, &pixels[0])) memset(&pixels[0], 0, pixels.size()*sizeof(float)); b_pass.rect(&pixels[0]); @@ -747,7 +751,7 @@ void BlenderSession::do_write_update_render_result(BL::RenderResult& b_rr, else { /* copy combined pass */ BL::RenderPass b_combined_pass(b_rlay.passes.find_by_type(BL::RenderPass::type_COMBINED, b_rview_name.c_str())); - if(buffers->get_pass_rect(PASS_COMBINED, exposure, sample, 4, &pixels[0], rtile.x, rtile.y, rtile.w, rtile.h)) + if(buffers->get_pass_rect(PASS_COMBINED, exposure, sample, 4, &pixels[0])) b_combined_pass.rect(&pixels[0]); } diff --git a/intern/cycles/blender/blender_session.h b/intern/cycles/blender/blender_session.h index 80da467..66a6945 100644 --- a/intern/cycles/blender/blender_session.h +++ b/intern/cycles/blender/blender_session.h @@ -79,7 +79,7 @@ public: void update_render_result(BL::RenderResult& b_rr, @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs