[Bf-blender-cvs] [175f00c] master: Revert "Cycles: Fix wrong SSS with regular path tracing and clamping enabled"
Sergey Sharybin
noreply at git.blender.org
Fri Nov 27 13:15:06 CET 2015
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,
More information about the Bf-blender-cvs
mailing list