Commit: 8e1e90d8795f7a512d3b2d620801cae620ee17fa
Author: Lukas Stockner
Date:   Tue Nov 22 19:35:45 2016 +0100
Branches: soc-2016-cycles_denoising
https://developer.blender.org/rB8e1e90d8795f7a512d3b2d620801cae620ee17fa

Cycles: Fix selective denoising

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

M       intern/cycles/kernel/filter/filter.h
M       intern/cycles/kernel/filter/filter_final_pass_impl.h

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

diff --git a/intern/cycles/kernel/filter/filter.h 
b/intern/cycles/kernel/filter/filter.h
index 1f5d682..ae94526 100644
--- a/intern/cycles/kernel/filter/filter.h
+++ b/intern/cycles/kernel/filter/filter.h
@@ -110,9 +110,17 @@ CCL_NAMESPACE_BEGIN
 
 ccl_device void kernel_filter_divide_combined(KernelGlobals *kg, int x, int y, 
int sample, float *buffers, int offset, int stride)
 {
-       float4 *combined_buffer = (float4*) (buffers + (offset + y*stride + 
x)*kernel_data.film.pass_stride);
-       float fac = sample / combined_buffer->w;
-       *combined_buffer = *combined_buffer * fac;
+       float *combined_buffer = buffers + (offset + y*stride + 
x)*kernel_data.film.pass_stride;
+       float fac = sample / combined_buffer[3];
+       combined_buffer[0] *= fac;
+       combined_buffer[1] *= fac;
+       combined_buffer[2] *= fac;
+       combined_buffer[3] *= fac;
+       if(kernel_data.film.pass_no_denoising) {
+               combined_buffer[0] += 
combined_buffer[kernel_data.film.pass_no_denoising+0];
+               combined_buffer[1] += 
combined_buffer[kernel_data.film.pass_no_denoising+1];
+               combined_buffer[2] += 
combined_buffer[kernel_data.film.pass_no_denoising+2];
+       }
 }
 
 CCL_NAMESPACE_END
\ No newline at end of file
diff --git a/intern/cycles/kernel/filter/filter_final_pass_impl.h 
b/intern/cycles/kernel/filter/filter_final_pass_impl.h
index 7f6ccbf..19c4633 100644
--- a/intern/cycles/kernel/filter/filter_final_pass_impl.h
+++ b/intern/cycles/kernel/filter/filter_final_pass_impl.h
@@ -214,9 +214,15 @@ ccl_device void FUNCTION_NAME(KernelGlobals *kg, int 
sample, float ccl_readonly_
                } END_FOR_PIXEL_WINDOW
        }
        else {
-               float3 final_color = sample*solution[0];
+               float3 final_color = solution[0];
 #ifdef OUTPUT_RENDERBUFFER
                float *combined_buffer = buffers + (offset + y*stride + 
x)*kernel_data.film.pass_stride;
+               final_color *= sample;
+               if(kernel_data.film.pass_no_denoising) {
+                       final_color.x += 
combined_buffer[kernel_data.film.pass_no_denoising+0];
+                       final_color.y += 
combined_buffer[kernel_data.film.pass_no_denoising+1];
+                       final_color.z += 
combined_buffer[kernel_data.film.pass_no_denoising+2];
+               }
                combined_buffer[0] = final_color.x;
                combined_buffer[1] = final_color.y;
                combined_buffer[2] = final_color.z;

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

Reply via email to