[Bf-blender-cvs] [fc99eed5be3] master: Fix random walk SSS issues with different base and subsurface color.

Brecht Van Lommel noreply at git.blender.org
Mon Feb 12 21:19:38 CET 2018


Commit: fc99eed5be3f34fca8633b780d3637c2e45a9891
Author: Brecht Van Lommel
Date:   Mon Feb 12 21:08:59 2018 +0100
Branches: master
https://developer.blender.org/rBfc99eed5be3f34fca8633b780d3637c2e45a9891

Fix random walk SSS issues with different base and subsurface color.

Burley SSS uses a bit of strange thing where the albedo and closure weight are
different, which makes the subsurface color act a bit like a subsurface radius
indirectly by the way the Burley SSS profile works.

This can't work for random walk SSS though, and it's not clear to me that this
is actually a good idea since it's really the subsurface radius that is supposed
to control this. For now I'll leave Burley SSS working the same to not break
backwards compatibility.

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

M	intern/cycles/kernel/shaders/node_principled_bsdf.osl
M	intern/cycles/kernel/svm/svm_closure.h

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

diff --git a/intern/cycles/kernel/shaders/node_principled_bsdf.osl b/intern/cycles/kernel/shaders/node_principled_bsdf.osl
index fc0a1c894da..6f54ba3a462 100644
--- a/intern/cycles/kernel/shaders/node_principled_bsdf.osl
+++ b/intern/cycles/kernel/shaders/node_principled_bsdf.osl
@@ -63,7 +63,7 @@ shader node_principled_bsdf(
 				BSDF = mixed_ss_base_color * bssrdf("principled", Normal, Subsurface * SubsurfaceRadius, SubsurfaceColor, "roughness", Roughness);
 			}
 			else {
-				BSDF = mixed_ss_base_color * bssrdf("principled_random_walk", Normal, Subsurface * SubsurfaceRadius, SubsurfaceColor, "roughness", Roughness);
+				BSDF = mixed_ss_base_color * bssrdf("principled_random_walk", Normal, Subsurface * SubsurfaceRadius, mixed_ss_base_color, "roughness", Roughness);
 			}
 		}
 		else {
diff --git a/intern/cycles/kernel/svm/svm_closure.h b/intern/cycles/kernel/svm/svm_closure.h
index fa43e1b60d0..5398f36c267 100644
--- a/intern/cycles/kernel/svm/svm_closure.h
+++ b/intern/cycles/kernel/svm/svm_closure.h
@@ -187,7 +187,7 @@ ccl_device void svm_node_closure_bsdf(KernelGlobals *kg, ShaderData *sd, float *
 
 					if(bssrdf) {
 						bssrdf->radius = subsurface_radius * subsurface;
-						bssrdf->albedo = subsurface_color;
+						bssrdf->albedo = (subsurface_method == CLOSURE_BSSRDF_PRINCIPLED_ID)? subsurface_color:  mixed_ss_base_color;
 						bssrdf->texture_blur = 0.0f;
 						bssrdf->sharpness = 0.0f;
 						bssrdf->N = N;



More information about the Bf-blender-cvs mailing list