Commit: a9ef88b1d88674dcb6412f94cec4b9cc3342f399
Author: Lukas Stockner
Date:   Thu Nov 17 14:00:56 2016 +0100
Branches: soc-2016-cycles_denoising
https://developer.blender.org/rBa9ef88b1d88674dcb6412f94cec4b9cc3342f399

Cycles: Rename collaborative denoising option

===================================================================

M       intern/cycles/blender/addon/ui.py
M       intern/cycles/blender/blender_session.cpp
M       intern/cycles/device/device_cpu.cpp
M       intern/cycles/device/device_cuda.cpp
M       intern/cycles/kernel/kernel_filter.h
M       intern/cycles/kernel/kernel_filter_pre.h
M       intern/cycles/kernel/kernel_types.h
M       intern/cycles/render/integrator.cpp
M       intern/cycles/render/integrator.h
M       source/blender/makesdna/DNA_scene_types.h
M       source/blender/makesrna/intern/rna_scene.c

===================================================================

diff --git a/intern/cycles/blender/addon/ui.py 
b/intern/cycles/blender/addon/ui.py
index 06607aa..a0b387d 100644
--- a/intern/cycles/blender/addon/ui.py
+++ b/intern/cycles/blender/addon/ui.py
@@ -578,7 +578,7 @@ class CyclesRender_PT_denoising(CyclesButtonsPanel, Panel):
         sub.prop(rl, "half_window")
         sub.prop(rl, "filter_strength", slider=True)
         sub.prop(rl, "filter_weighting_adjust", slider=True)
-        sub.prop(rl, "filter_collaborative")
+        sub.prop(rl, "filter_gradients")
         sub.prop(rl, "filter_use_nlm_weights")
 
         sub = col.column(align=True)
diff --git a/intern/cycles/blender/blender_session.cpp 
b/intern/cycles/blender/blender_session.cpp
index d629e55..7867c0e 100644
--- a/intern/cycles/blender/blender_session.cpp
+++ b/intern/cycles/blender/blender_session.cpp
@@ -467,7 +467,8 @@ void BlenderSession::render()
                scene->integrator->filter_strength = powf(2.0f, 
b_layer_iter->filter_strength());
                scene->integrator->weighting_adjust = powf(2.0f, 
b_layer_iter->filter_weighting_adjust());
                scene->integrator->use_nlm_weights = 
b_layer_iter->filter_use_nlm_weights();
-               scene->integrator->use_collaborative_filtering = 
b_layer_iter->filter_collaborative();
+               if(scene->integrator->use_nlm_weights) 
scene->integrator->weighting_adjust /= 2.0f;
+               scene->integrator->use_gradients = 
b_layer_iter->filter_gradients();
 
                scene->film->pass_alpha_threshold = 
b_layer_iter->pass_alpha_threshold();
                scene->film->tag_passes_update(scene, passes);
diff --git a/intern/cycles/device/device_cpu.cpp 
b/intern/cycles/device/device_cpu.cpp
index 821879d..7fb97bf 100644
--- a/intern/cycles/device/device_cpu.cpp
+++ b/intern/cycles/device/device_cpu.cpp
@@ -434,7 +434,7 @@ public:
        {
                bool old_filter = getenv("OLD_FILTER");
                bool only_nlm_filter = getenv("ONLY_NLM_FILTER");
-               bool use_collaborative_filtering = 
kg->__data.integrator.use_collaborative_filtering;
+               bool use_gradients = kg->__data.integrator.use_gradients;
                bool nlm_weights = kg->__data.integrator.use_nlm_weights;
 
                FilterStorage *storage = new 
FilterStorage[filter_area.z*filter_area.w];
@@ -536,7 +536,7 @@ public:
 #endif
                }
 
-               if(use_collaborative_filtering) {
+               if(use_gradients) {
                        for(int y = 0; y < filter_area.w; y++) {
                                for(int x = 0; x < filter_area.z; x++) {
                                        filter_divide_combined_kernel()(kg, x + 
filter_area.x, y + filter_area.y, sample, buffers, offset, stride);
diff --git a/intern/cycles/device/device_cuda.cpp 
b/intern/cycles/device/device_cuda.cpp
index 1f2cfdc..cfcd037 100644
--- a/intern/cycles/device/device_cuda.cpp
+++ b/intern/cycles/device/device_cuda.cpp
@@ -1178,7 +1178,7 @@ public:
                        cuda_assert(cuCtxSynchronize());
                }
 
-               if(kernel_globals.integrator.use_collaborative_filtering) {
+               if(kernel_globals.integrator.use_gradients) {
                        void *divide_args[] = {&d_buffers,
                                               &sample,
                                               &rtile.offset,
diff --git a/intern/cycles/kernel/kernel_filter.h 
b/intern/cycles/kernel/kernel_filter.h
index b8f6c42..edafafa 100644
--- a/intern/cycles/kernel/kernel_filter.h
+++ b/intern/cycles/kernel/kernel_filter.h
@@ -387,11 +387,11 @@ ccl_device void 
kernel_filter_final_pass_wlr(KernelGlobals *kg, int sample, floa
                for(int col = 0; col < row; col++)
                        XtX[row*matrix_size+col] = 0.0f;
 
-       /* When using collaborative filtering, we need to solve for the 
intercept and gradients.
+       /* When using gradients for filtering, we need to solve for the 
intercept and gradients.
         * Otherwise, just the intercept is enough. */
-       int solution_size = kernel_data.integrator.use_collaborative_filtering? 
matrix_size : 1;
+       int solution_size = kernel_data.integrator.use_gradients? matrix_size : 
1;
        float XtWXinv[(DENOISE_FEATURES+1)*(DENOISE_FEATURES+1)];
-       if(kernel_data.integrator.use_collaborative_filtering)
+       if(kernel_data.integrator.use_gradients)
                math_matrix_zero(XtWXinv, matrix_size);
        else
                math_vector_zero(XtWXinv, matrix_size);
@@ -420,7 +420,7 @@ ccl_device void kernel_filter_final_pass_wlr(KernelGlobals 
*kg, int sample, floa
                }
        } END_FOR_PIXEL_WINDOW
 
-       if(kernel_data.integrator.use_collaborative_filtering) {
+       if(kernel_data.integrator.use_gradients) {
                FOR_PIXEL_WINDOW {
                        float3 color = filter_get_pixel_color(pixel_buffer, 
pass_stride);
                        float variance = 
filter_get_pixel_variance(pixel_buffer, pass_stride);
@@ -537,11 +537,11 @@ ccl_device void 
kernel_filter_final_pass_nlm(KernelGlobals *kg, int sample, floa
                for(int col = 0; col < row; col++)
                        XtX[row*matrix_size+col] = 0.0f;
 
-       /* When using collaborative filtering, we need to solve for the 
intercept and gradients.
+       /* When using gradients for filtering, we need to solve for the 
intercept and gradients.
         * Otherwise, just the intercept is enough. */
-       int solution_size = kernel_data.integrator.use_collaborative_filtering? 
matrix_size : 1;
+       int solution_size = kernel_data.integrator.use_gradients? matrix_size : 
1;
        float XtWXinv[(DENOISE_FEATURES+1)*(DENOISE_FEATURES+1)];
-       if(kernel_data.integrator.use_collaborative_filtering)
+       if(kernel_data.integrator.use_gradients)
                math_matrix_zero(XtWXinv, matrix_size);
        else
                math_vector_zero(XtWXinv, matrix_size);
@@ -580,7 +580,7 @@ ccl_device void kernel_filter_final_pass_nlm(KernelGlobals 
*kg, int sample, floa
                }
        } END_FOR_PIXEL_WINDOW
 
-       if(kernel_data.integrator.use_collaborative_filtering) {
+       if(kernel_data.integrator.use_gradients) {
                FOR_PIXEL_WINDOW {
                        float weight;
                        if(cache_idx < WEIGHT_CACHE_SIZE) {
@@ -1310,11 +1310,11 @@ ccl_device void 
kernel_filter_final_pass_wlr(KernelGlobals *kg, int sample, floa
                for(int col = 0; col < row; col++)
                        XtX[row*matrix_size+col] = 0.0f;
 
-       /* When using collaborative filtering, we need to solve for the 
intercept and gradients.
+       /* When using gradients for filtering, we need to solve for the 
intercept and gradients.
         * Otherwise, just the intercept is enough. */
-       int solution_size = kernel_data.integrator.use_collaborative_filtering? 
matrix_size : 1;
+       int solution_size = kernel_data.integrator.use_gradients? matrix_size : 
1;
        float XtWXinv[(DENOISE_FEATURES+1)*(DENOISE_FEATURES+1)];
-       if(kernel_data.integrator.use_collaborative_filtering)
+       if(kernel_data.integrator.use_gradients)
                math_matrix_zero(XtWXinv, matrix_size);
        else
                math_vector_zero(XtWXinv, matrix_size);
@@ -1343,7 +1343,7 @@ ccl_device void 
kernel_filter_final_pass_wlr(KernelGlobals *kg, int sample, floa
                }
        } END_FOR_PIXEL_WINDOW
 
-       if(kernel_data.integrator.use_collaborative_filtering) {
+       if(kernel_data.integrator.use_gradients) {
                FOR_PIXEL_WINDOW {
                        float3 color = filter_get_pixel_color(pixel_buffer, 
pass_stride);
                        float variance = 
filter_get_pixel_variance(pixel_buffer, pass_stride);
@@ -1460,9 +1460,9 @@ ccl_device void 
kernel_filter_final_pass_nlm(KernelGlobals *kg, int sample, floa
                for(int col = 0; col < row; col++)
                        XtX[row*matrix_size+col] = 0.0f;
 
-       int solution_size = kernel_data.integrator.use_collaborative_filtering? 
matrix_size : 1;
+       int solution_size = kernel_data.integrator.use_gradients? matrix_size : 
1;
        float XtWXinv[(DENOISE_FEATURES+1)*(DENOISE_FEATURES+1)];
-       if(kernel_data.integrator.use_collaborative_filtering)
+       if(kernel_data.integrator.use_gradients)
                math_matrix_zero(XtWXinv, matrix_size);
        else
                math_vector_zero(XtWXinv, matrix_size);
@@ -1489,9 +1489,9 @@ ccl_device void 
kernel_filter_final_pass_nlm(KernelGlobals *kg, int sample, floa
                }
        } END_FOR_PIXEL_WINDOW
 
-       if(kernel_data.integrator.use_collaborative_filtering) {
+       if(kernel_data.integrator.use_gradients) {
                FOR_PIXEL_WINDOW {
-                       /* TODO: Atomics to be able to collaborate across 
tiles. */
+                       /* TODO: Atomics to be able to use gradients across 
tiles. */
                        if(py >= filter_area.y && py < 
filter_area.y+filter_area.w && px >= filter_area.x && px < 
filter_area.x+filter_area.z) {
                                float weight = weight_cache[cache_idx];
                                if(weight == 0.0f) continue;
diff --git a/intern/cycles/kernel/kernel_filter_pre.h 
b/intern/cycles/kernel/kernel_filter_pre.h
index d9edd58..2b272a9 100644
--- a/intern/cycles/kernel/kernel_filter_pre.h
+++ b/intern/cycles/kernel/kernel_filter_pre.h
@@ -32,7 +32,7 @@ ccl_device void kernel_filter_divide_shadow(KernelGlobals 
*kg, int sample, float
        int tile = ytile*3+xtile;
        float *center_buffer = buffers[tile] + (offset[tile] + y*stride[tile] + 
x)*kernel_data.film.pass_stride;
 
-       if(kernel_data.integrator.use_collaborative_filtering && tile == 4) {
+       if(kernel_data.integrator.use_gradients && tile == 4) {
                center_buffer[0] = center_buffer[1] = center_buffer[2] = 
center_buffer[3] = 0.0f;
        }
        center_buffer += kernel_data.film.pass_denoising;
diff --git a/intern/cycles/kernel/kernel_types.h 
b/intern/cycles/kernel/kernel_types.h
index 4ffa03d..51f9f7e 100644
--- a/intern/cycles/kernel/kernel_types.h
+++ b/intern/cycles/kernel/kernel_types.h
@@ -1163,7 +1163,7 @@ typedef struct KernelIntegrator {
        int half_window;
        float filter_strength;
        float weighting_adjust;
-       int use_collaborative_filtering;
+       int use_gradients;
        int use_nlm_weights;
 } KernelIntegrator;
 static_assert_align(KernelIntegrator, 16);
diff --git a/intern/cycles/render/integrator.cpp 
b/intern/cycles/render/integrator.cpp
index f1e84e6..cf82667 100644
--- a/intern/cycles/render/integrator.cpp
+++ b/intern/cycles/render/integrator.cpp
@@ -81,7 +81,7 @@ NODE_DEFINE(Integrator)
        SOCKET_FLOAT(filter_strength, "Filter Strength", 0.0f);
        SOCKET_FLOAT(weighting_adjust, "Weighting Adjust", 1.0f);
        SOCKET_BOOLEAN(use_nlm_weights, "Use NLM weights", true);
-       SOCKET_BOOLEAN(use_collaborative_filtering, "Use Collaborative 
Filtering", true);
+       SOCKET_BOOLEAN(use_gradients, "Use Gradients for filtering", true);
 
        return type;
 }
@@ -212,7 +212,7 @@ void Integrator::device_update(Device *device, DeviceScene 
*dscene, Scene *scene
        kintegrator->half_window = half_window;
        kintegrator->filter_strength = filter_strength;
        kintegrator->weighting_adjust = weighting_adjust;
-       kintegrator->use_collaborative_filtering = use_collaborative_filtering;
+       kintegrator->use_gradients = use_gradients;
        kintegrator->use_nlm_weights = use_nlm_weights;
 
        need_update = false;
diff --git a/intern/cycles/rende

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to