[Bf-blender-cvs] [32d3485] cycles_disney_brdf: Attempt to fix Disney SSS
Jens Verwiebe
noreply at git.blender.org
Thu Jul 21 00:16:14 CEST 2016
Commit: 32d348577d69be251aa04110c5f6156cd2645f48
Author: Jens Verwiebe
Date: Thu Jul 21 00:15:48 2016 +0200
Branches: cycles_disney_brdf
https://developer.blender.org/rB32d348577d69be251aa04110c5f6156cd2645f48
Attempt to fix Disney SSS
===================================================================
M intern/cycles/kernel/svm/svm_closure.h
===================================================================
diff --git a/intern/cycles/kernel/svm/svm_closure.h b/intern/cycles/kernel/svm/svm_closure.h
index 64a290d..2c04e9c 100644
--- a/intern/cycles/kernel/svm/svm_closure.h
+++ b/intern/cycles/kernel/svm/svm_closure.h
@@ -187,6 +187,13 @@ ccl_device void svm_node_closure_bsdf(KernelGlobals *kg, ShaderData *sd, float *
float3 weight = sc->weight;
float sample_weight = sc->sample_weight;
+#ifdef __BSDF_DISNEY_DIFFUSE__
+# ifndef __SPLIT_KERNEL__
+# define sc_next(sc) sc++
+# else
+# define sc_next(sc) sc = ccl_fetch_array(sd, closure, ccl_fetch(sd, num_closure))
+# endif
+
/* subsurface */
float3 albedo = baseColor;
float3 subsurf_weight = baseColor * sc->weight * mix_weight * subsurface * diffuse_weight;
@@ -215,6 +222,7 @@ ccl_device void svm_node_closure_bsdf(KernelGlobals *kg, ShaderData *sd, float *
ccl_fetch(sd, flag) |= bssrdf_setup(sc, (ClosureType)CLOSURE_BSSRDF_BURLEY_ID);
ccl_fetch(sd, num_closure)++;
+ sc_next(sc);
}
if (fabsf(subsurf_weight.y) > 0.0f) {
@@ -233,6 +241,7 @@ ccl_device void svm_node_closure_bsdf(KernelGlobals *kg, ShaderData *sd, float *
ccl_fetch(sd, flag) |= bssrdf_setup(sc, (ClosureType)CLOSURE_BSSRDF_BURLEY_ID);
ccl_fetch(sd, num_closure)++;
+ sc_next(sc);
}
if (fabsf(subsurf_weight.z) > 0.0f) {
@@ -251,9 +260,12 @@ ccl_device void svm_node_closure_bsdf(KernelGlobals *kg, ShaderData *sd, float *
ccl_fetch(sd, flag) |= bssrdf_setup(sc, (ClosureType)CLOSURE_BSSRDF_BURLEY_ID);
ccl_fetch(sd, num_closure)++;
+ sc_next(sc);
}
}
+#endif // __BSDF_DISNEY_DIFFUSE__
+
/* diffuse */
if (metallic < 1.0f) {
if (ccl_fetch(sd, num_closure) < MAX_CLOSURE) {
More information about the Bf-blender-cvs
mailing list