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
Notes: blender-bot 2023-02-14 10:31:47 +01:00
Referenced by issue #40561, Cycles: Refraction Node return Black (Sharp mode)
1 changed files with 15 additions and 7 deletions

View File

@ -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;