Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2014-06-11 21:52:14 +0400
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2014-06-11 21:55:16 +0400
commitfb6cb25c1c8797d239ca8f6c5d775eef50cc801f (patch)
tree6a8c4637382338e4ca2ad56a80979bab68b21e47
parente53c00a2db9e3bf33badca135630d4f5d24b2087 (diff)
Fix T40561: cycles refraction node with sharp distribution gives black.
-rw-r--r--intern/cycles/kernel/svm/svm_closure.h22
1 files changed, 15 insertions, 7 deletions
diff --git a/intern/cycles/kernel/svm/svm_closure.h b/intern/cycles/kernel/svm/svm_closure.h
index 27c5a19a7a0..a7982c64c49 100644
--- a/intern/cycles/kernel/svm/svm_closure.h
+++ b/intern/cycles/kernel/svm/svm_closure.h
@@ -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;