Fix T40561: cycles refraction node with sharp distribution gives black.

This commit is contained in:
Brecht Van Lommel 2014-06-11 19:52:14 +02:00
parent e53c00a2db
commit fb6cb25c1c

@ -203,18 +203,26 @@ ccl_device void svm_node_closure_bsdf(KernelGlobals *kg, ShaderData *sd, float *
if(sc) {
sc->N = N;
sc->data0 = param1;
float eta = fmaxf(param2, 1e-5f);
sc->data1 = (sd->flag & SD_BACKFACING)? 1.0f/eta: eta;
eta = (sd->flag & SD_BACKFACING)? 1.0f/eta: eta;
/* setup bsdf */
if(type == CLOSURE_BSDF_REFRACTION_ID)
if(type == CLOSURE_BSDF_REFRACTION_ID) {
sc->data0 = eta;
sc->data1 = 0.0f;
sd->flag |= bsdf_refraction_setup(sc);
else if(type == CLOSURE_BSDF_MICROFACET_BECKMANN_REFRACTION_ID)
sd->flag |= bsdf_microfacet_beckmann_refraction_setup(sc);
else
sd->flag |= bsdf_microfacet_ggx_refraction_setup(sc);
}
else {
sc->data0 = param1;
sc->data1 = eta;
if(type == CLOSURE_BSDF_MICROFACET_BECKMANN_REFRACTION_ID)
sd->flag |= bsdf_microfacet_beckmann_refraction_setup(sc);
else
sd->flag |= bsdf_microfacet_ggx_refraction_setup(sc);
}
}
break;