[Bf-blender-cvs] [8a8978c] experimental-build: Revert "Cycles: Experimental proof-of-concept LWR denoising"
Lukas Stockner
noreply at git.blender.org
Wed Mar 23 21:56:20 CET 2016
Commit: 8a8978c7291ba7e591178a3025c2d33601e79f90
Author: Lukas Stockner
Date: Wed Mar 23 21:53:30 2016 +0100
Branches: experimental-build
https://developer.blender.org/rB8a8978c7291ba7e591178a3025c2d33601e79f90
Revert "Cycles: Experimental proof-of-concept LWR denoising"
This reverts commit d93cc73ffdf1ecea47b80292f771d11944bbb42c.
===================================================================
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/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 ff9ed92..9234df5 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 8d4c9fc..977ba3d 100644
--- a/intern/cycles/blender/blender_session.cpp
+++ b/intern/cycles/blender/blender_session.cpp
@@ -375,12 +375,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) {
@@ -407,37 +411,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);
@@ -447,7 +451,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();
@@ -485,9 +489,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);
@@ -704,9 +707,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);
if(!do_update_only) {
/* copy each pass */
@@ -720,7 +724,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, rtile.sample, components, &pixels[0], rtile.x, rtile.y, rtile.w, rtile.h))
+ if(!buffers->get_pass_rect(pass_type, exposure, rtile.sample, components, &pixels[0]))
memset(&pixels[0], 0, pixels.size()*sizeof(float));
b_pass.rect(&pixels[0]);
@@ -729,7 +733,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, rtile.sample, 4, &pixels[0], rtile.x, rtile.y, rtile.w, rtile.h))
+ if(buffers->get_pass_rect(PASS_COMBINED, exposure, rtile.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 233d7a6..8492d9f 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. @@
More information about the Bf-blender-cvs
mailing list