Attempt to fix Disney SSS

This commit is contained in:
2016-07-21 00:15:48 +02:00
parent dbad91ca6d
commit 32d348577d

View File

@@ -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) {