Commit: 7bda09e55d637c45bbdbc5c8b0dced889d1c2352 Author: Lukas Stockner Date: Fri Jan 25 15:30:18 2019 +0100 Branches: experimental-build https://developer.blender.org/rB7bda09e55d637c45bbdbc5c8b0dced889d1c2352
Revert "Squashed commit of D3889" This reverts commit b26cc7ce2e58d1ac2837feec66e49909f2a6fdd9. =================================================================== M intern/cycles/blender/addon/engine.py M intern/cycles/blender/blender_python.cpp M intern/cycles/blender/blender_session.cpp 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_denoising.cpp M intern/cycles/device/device_denoising.h M intern/cycles/device/device_task.h M intern/cycles/device/opencl/opencl.h M intern/cycles/device/opencl/opencl_base.cpp M intern/cycles/kernel/filter/filter_defines.h M intern/cycles/kernel/filter/filter_features.h M intern/cycles/kernel/filter/filter_features_sse.h M intern/cycles/kernel/filter/filter_nlm_cpu.h M intern/cycles/kernel/filter/filter_nlm_gpu.h M intern/cycles/kernel/filter/filter_prefilter.h M intern/cycles/kernel/filter/filter_reconstruction.h M intern/cycles/kernel/filter/filter_transform.h M intern/cycles/kernel/filter/filter_transform_gpu.h M intern/cycles/kernel/filter/filter_transform_sse.h M intern/cycles/kernel/kernel_types.h M intern/cycles/kernel/kernels/cpu/filter_cpu.h M intern/cycles/kernel/kernels/cpu/filter_cpu_impl.h M intern/cycles/kernel/kernels/cuda/filter.cu M intern/cycles/kernel/kernels/opencl/filter.cl M intern/cycles/render/CMakeLists.txt M intern/cycles/render/buffers.cpp M intern/cycles/render/buffers.h D intern/cycles/render/denoising.cpp D intern/cycles/render/denoising.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/util/util_system.cpp M intern/cycles/util/util_system.h =================================================================== diff --git a/intern/cycles/blender/addon/engine.py b/intern/cycles/blender/addon/engine.py index b8bc74f9e35..7829e090c98 100644 --- a/intern/cycles/blender/addon/engine.py +++ b/intern/cycles/blender/addon/engine.py @@ -270,11 +270,14 @@ def register_passes(engine, scene, srl): engine.register_pass(scene, srl, "Noisy Image", 4, "RGBA", 'COLOR') if crl.denoising_store_passes: engine.register_pass(scene, srl, "Denoising Normal", 3, "XYZ", 'VECTOR') + engine.register_pass(scene, srl, "Denoising Normal Variance", 3, "XYZ", 'VECTOR') engine.register_pass(scene, srl, "Denoising Albedo", 3, "RGB", 'COLOR') + engine.register_pass(scene, srl, "Denoising Albedo Variance", 3, "RGB", 'COLOR') engine.register_pass(scene, srl, "Denoising Depth", 1, "Z", 'VALUE') - engine.register_pass(scene, srl, "Denoising Shadowing", 1, "X", 'VALUE') - engine.register_pass(scene, srl, "Denoising Variance", 3, "RGB", 'COLOR') - engine.register_pass(scene, srl, "Denoising Intensity", 1, "X", 'VALUE') + engine.register_pass(scene, srl, "Denoising Depth Variance", 1, "Z", 'VALUE') + engine.register_pass(scene, srl, "Denoising Shadow A", 3, "XYV", 'VECTOR') + engine.register_pass(scene, srl, "Denoising Shadow B", 3, "XYV", 'VECTOR') + engine.register_pass(scene, srl, "Denoising Image Variance", 3, "RGB", 'COLOR') clean_options = ("denoising_diffuse_direct", "denoising_diffuse_indirect", "denoising_glossy_direct", "denoising_glossy_indirect", "denoising_transmission_direct", "denoising_transmission_indirect", diff --git a/intern/cycles/blender/blender_python.cpp b/intern/cycles/blender/blender_python.cpp index 426176d37d0..bf5c2432bc7 100644 --- a/intern/cycles/blender/blender_python.cpp +++ b/intern/cycles/blender/blender_python.cpp @@ -21,8 +21,6 @@ #include "blender/blender_sync.h" #include "blender/blender_session.h" -#include "render/denoising.h" - #include "util/util_debug.h" #include "util/util_foreach.h" #include "util/util_logging.h" @@ -620,97 +618,6 @@ static PyObject *opencl_disable_func(PyObject * /*self*/, PyObject * /*value*/) } #endif -static PyObject *denoise_func(PyObject * /*self*/, PyObject *args, PyObject *keywords) -{ - static const char *keyword_list[] = {"in", "out", "device", "threads", "tile_width", "tile_height", - "frames", "frameradius", "radius", "strength", "featurestrength", - "relativepca", "ldr", "views", "list_devices", "samples", NULL}; - const char *in_str = NULL, *out_str = NULL, *device_name = NULL, *frames_str = NULL; - PyObject *relative_pca = NULL, *ldr = NULL, *views = NULL, *list_devices = NULL; - int threads = 0, tile_width = 64, tile_height = -1, frame_radius = 2, radius = 8, samples = 0; - float strength = 0.5f, feature_strength = 0.5f; - - if (!PyArg_ParseTupleAndKeywords(args, keywords, "|sssiiisiiffOOOOi", (char**)keyword_list, - &in_str, &out_str, &device_name, &threads, - &tile_width, &tile_height, &frames_str, &frame_radius, - &radius, &strength, &feature_strength, &relative_pca, - &ldr, &views, &list_devices, &samples)) { - Py_RETURN_FALSE; - } - - if(list_devices && PyObject_IsTrue(list_devices)) { - vector<DeviceInfo>& devices = Device::available_devices(); - printf("Devices:\n"); - foreach(DeviceInfo& info, devices) { - printf(" %-10s%s%s\n", - Device::string_from_type(info.type).c_str(), - info.description.c_str(), - (info.display_device)? " (display)": ""); - } - - Py_RETURN_TRUE; - } - - string in = string(in_str? in_str : ""), out = string(out_str? out_str : ""); - - if(in.empty() || out.empty()) { - fprintf(stderr, "Both input and output name/pattern must be specified!\n"); - Py_RETURN_FALSE; - } - - TaskScheduler::init(threads); - - DeviceType device_type = Device::type_from_string(device_name? device_name : "CPU"); - vector<DeviceInfo>& devices = Device::available_devices(); - vector<DeviceInfo> picked_devices; - foreach(DeviceInfo& info, devices) { - if(device_type == info.type) { - picked_devices.push_back(info); - } - } - if(picked_devices.size() == 0) { - fprintf(stderr, "Unknown device type!\n"); - Py_RETURN_FALSE; - } - - DeviceInfo device; - if(picked_devices.size() == 1) { - device = picked_devices[0]; - } - else { - device = Device::get_multi_device(picked_devices, 0, true); - } - - Stats stats; - Profiler profiler; - StandaloneDenoiser denoiser(Device::create(device, stats, profiler, true)); - denoiser.views = views && PyObject_IsTrue(views); - denoiser.tile_size = make_int2(tile_width, (tile_height > 0)? tile_height : tile_width); - denoiser.samples = samples; - denoiser.ldr_out = ldr && PyObject_IsTrue(ldr); - denoiser.center_frame = string(frames_str? frames_str : ""); - denoiser.frame_radius = frame_radius; - denoiser.strength = strength; - denoiser.feature_strength = feature_strength; - denoiser.relative_pca = relative_pca && PyObject_IsTrue(relative_pca); - denoiser.radius = radius; - denoiser.in_path = in; - denoiser.out_path = out; - denoiser.passthrough_incomplete = true; - denoiser.passthrough_additional = true; - denoiser.passthrough_unknown = true; - - if(!denoiser.run_filter()) { - fprintf(stderr, "%s\n", denoiser.error.c_str()); - TaskScheduler::exit(); - Py_RETURN_FALSE; - } - - TaskScheduler::exit(); - - Py_RETURN_TRUE; -} - static PyObject *debug_flags_update_func(PyObject * /*self*/, PyObject *args) { PyObject *pyscene; @@ -871,9 +778,6 @@ static PyMethodDef methods[] = { {"opencl_disable", opencl_disable_func, METH_NOARGS, ""}, #endif - /* Standalone denoising */ - {"denoise", (PyCFunction)denoise_func, METH_VARARGS|METH_KEYWORDS, ""}, - /* Debugging routines */ {"debug_flags_update", debug_flags_update_func, METH_VARARGS, ""}, {"debug_flags_reset", debug_flags_reset_func, METH_NOARGS, ""}, diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp index aa5a93a2a0e..c634926ea9f 100644 --- a/intern/cycles/blender/blender_session.cpp +++ b/intern/cycles/blender/blender_session.cpp @@ -422,19 +422,15 @@ void BlenderSession::render(BL::Depsgraph& b_depsgraph_) buffer_params.passes = passes; PointerRNA crl = RNA_pointer_get(&b_view_layer.ptr, "cycles"); - bool full_denoising = get_boolean(crl, "use_denoising"); - bool write_denoising_passes = get_boolean(crl, "denoising_store_passes"); + bool use_denoising = get_boolean(crl, "use_denoising"); + bool denoising_passes = use_denoising || get_boolean(crl, "denoising_store_passes"); - bool run_denoising = full_denoising || write_denoising_passes; - - session->tile_manager.schedule_denoising = run_denoising; - buffer_params.denoising_data_pass = run_denoising; + session->tile_manager.schedule_denoising = use_denoising; + buffer_params.denoising_data_pass = denoising_passes; buffer_params.denoising_clean_pass = (scene->film->denoising_flags & DENOISING_CLEAN_ALL_PASSES); - buffer_params.denoising_prefiltered_pass = write_denoising_passes; - session->params.run_denoising = run_denoising; - session->params.full_denoising = full_denoising; - session->params.write_denoising_passes = write_denoising_passes; + session->params.use_denoising = use_denoising; + session->params.denoising_passes = denoising_passes; session->params.denoising_radius = get_int(crl, "denoising_radius"); session->params.denoising_strength = get_float(crl, "denoising_strength"); session->params.denoising_feature_strength = get_float(crl, "denoising_feature_strength"); @@ -442,7 +438,6 @@ void BlenderSession::render(BL::Depsgraph& b_depsgraph_) scene->film->denoising_data_pass = buffer_params.denoising_data_pass; scene->film->denoising_clean_pass = buffer_params.denoising_clean_pass; - scene->film->denoising_prefiltered_pass = buffer_params.denoising_prefiltered_pass; session->params.denoising_radius = get_int(crl, "denoising_radius"); session->params.denoising_strength = get_float(crl, "denoising_strength"); session->params.denoising_feature_strength = get_float(crl, "denoising_feature_strength"); @@ -513,11 +508,10 @@ void BlenderSession::render(BL::Depsgraph& b_depsgraph_) break; } - BL::RenderResult b_full_rr = b_engine.get_result(); - string num_aa_samples = string_printf("%d", session->params.samples); - render_add_metadata(b_full_rr, "Cycles Samples " + b_rlay_name, num_aa_samples); if(is_single_layer) { - render_add_metadata(b_full_rr, "Cycles Samples", num_aa_samples); + BL::RenderResult b_rr = b_engine.get_result(); + string num_aa_samples = string_printf("%d", session->params.samples); + b_rr.stamp_data_add_field("Cycles Samples", num_aa_samples.c_str()); /* TODO(sergey): Report whether we're doing resumable render * and also start/end sample if so. */ diff --git a/intern/cycles/blender/blender_sync.cpp b/intern/cycles/blender/blender_sync.cpp index 0a8be11dbad..60192bfa8f8 100644 --- a/intern/cycles/blender/blender_sync.cpp +++ b/intern/cycles/blender/blender_sync.cpp @@ -482,7 +482,7 @@ int BlenderSync::get_denoising_pass(BL::RenderPass& b_pass) { string name = b_pass.name(); - if(name == "Noisy Image") return DENOISING_PASS_PREFILTERED_COLOR; + if(name == "Noisy Image") return DENOISING_PASS_COLOR; if(name.substr(0, 10) != "Denoising ") { return -1; @@ -490,12 +490,15 @@ int BlenderSync::get_denoising_pass(BL::RenderPass& b_pass) name = name.substr(10); #define MAP_PASS(passname, offset) if(name == passname) return offset; - MAP_PASS("Normal", DENOISING_PASS_PREFILTERED_NORMAL); - MAP_PASS("Albedo", DENOISING_PASS_PREFILTERED_ALBEDO); - MAP_PASS("Depth", DENOISING_PASS_PREFILTERED_DEPTH); - MAP_PASS("Shadowing", DENOISING_PASS_PREFILTERED_SHADOWING); - MAP_PASS("Variance", DENOISING_PASS_PREFILTERED_VARIANCE); - MAP_PASS("Intensity", DENOISING_PASS_PREFILTERED_INTENSITY); + MAP_PASS("No @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs