Commit: 175f00c89a88056b5307ec385968333c9327b63f
Author: Sergey Sharybin
Date:   Fri Nov 27 16:41:05 2015 +0500
Branches: master
https://developer.blender.org/rB175f00c89a88056b5307ec385968333c9327b63f

Revert "Cycles: Fix wrong SSS with regular path tracing and clamping enabled"

This wasn't really a complete fix and only worked if there was a single scatter
event recorded only. Proper fix requires some more thoughts to make it correct
without memory use increase.

This reverts commit bf9e88bfbebaf5c6228363560970fa526e779c8b.

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

M       intern/cycles/kernel/kernel_bake.h
M       intern/cycles/kernel/kernel_path.h

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

diff --git a/intern/cycles/kernel/kernel_bake.h 
b/intern/cycles/kernel/kernel_bake.h
index 192cba6..3efd7ec 100644
--- a/intern/cycles/kernel/kernel_bake.h
+++ b/intern/cycles/kernel/kernel_bake.h
@@ -77,6 +77,7 @@ ccl_device void compute_light_pass(KernelGlobals *kg, 
ShaderData *sd, PathRadian
                                while(ss_indirect.num_rays) {
                                        
kernel_path_subsurface_setup_indirect(kg,
                                                                              
&ss_indirect,
+                                                                             
&L_sample,
                                                                              
&state,
                                                                              
&ray,
                                                                              
&ray,
@@ -88,12 +89,6 @@ ccl_device void compute_light_pass(KernelGlobals *kg, 
ShaderData *sd, PathRadian
                                                             state.num_samples,
                                                             &state,
                                                             &L_sample);
-
-                                       /* For render passes, sum and reset 
indirect light pass variables
-                                        * for the next samples.
-                                        */
-                                       path_radiance_sum_indirect(&L_sample);
-                                       path_radiance_reset_indirect(&L_sample);
                                }
                                is_sss_sample = true;
                        }
diff --git a/intern/cycles/kernel/kernel_path.h 
b/intern/cycles/kernel/kernel_path.h
index b362228..885782f 100644
--- a/intern/cycles/kernel/kernel_path.h
+++ b/intern/cycles/kernel/kernel_path.h
@@ -519,6 +519,7 @@ ccl_device bool kernel_path_subsurface_scatter(
 ccl_device void kernel_path_subsurface_setup_indirect(
         KernelGlobals *kg,
         SubsurfaceIndirectRays *ss_indirect,
+        PathRadiance *L,
         PathState *state,
         Ray *orig_ray,
         Ray *ray,
@@ -547,6 +548,12 @@ ccl_device void kernel_path_subsurface_setup_indirect(
 #endif
 
        *ray = *indirect_ray;
+
+       /* For render passes, sum and reset indirect light pass variables
+        * for the next samples.
+        */
+       path_radiance_sum_indirect(L);
+       path_radiance_reset_indirect(L);
 }
 #endif
 
@@ -577,7 +584,7 @@ ccl_device float4 kernel_path_integrate(KernelGlobals *kg, 
RNG *rng, int sample,
         */
        Ray ss_orig_ray;
 
-       for(int ss_indirect_iter = 0; ; ss_indirect_iter++) {
+       for(;;) {
 #endif
 
        /* path iteration */
@@ -841,20 +848,13 @@ ccl_device float4 kernel_path_integrate(KernelGlobals 
*kg, RNG *rng, int sample,
        }
 
 #ifdef __SUBSURFACE__
-               if(ss_indirect_iter != 0) {
-                       /* For render passes, sum and reset indirect light pass 
variables
-                        * for the next samples.
-                        */
-                       path_radiance_sum_indirect(&L);
-                       path_radiance_reset_indirect(&L);
-               }
-
                /* Trace indirect subsurface rays by restarting the loop. this 
uses less
                 * stack memory than invoking kernel_path_indirect.
                 */
                if(ss_indirect.num_rays) {
                        kernel_path_subsurface_setup_indirect(kg,
                                                              &ss_indirect,
+                                                             &L,
                                                              &state,
                                                              &ss_orig_ray,
                                                              &ray,

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

Reply via email to