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; _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs