From 4737b1246241fd575921f93ddf229da656c7fb5a Mon Sep 17 00:00:00 2001 From: Lukas Stockner Date: Wed, 29 Jul 2015 22:04:36 +0200 Subject: Cycles: Fix issue in closure merge function. * Did not check data2, this partially fixes T45583. * Initialize data2 in some closures to avoid potential problems. Differential Revision: https://developer.blender.org/D1436 --- intern/cycles/kernel/kernel_shader.h | 2 +- intern/cycles/kernel/svm/svm_closure.h | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) (limited to 'intern/cycles/kernel') diff --git a/intern/cycles/kernel/kernel_shader.h b/intern/cycles/kernel/kernel_shader.h index 94e13028599..6b560f5fdb2 100644 --- a/intern/cycles/kernel/kernel_shader.h +++ b/intern/cycles/kernel/kernel_shader.h @@ -459,7 +459,7 @@ ccl_device void shader_merge_closures(ShaderData *sd) continue; #endif - if(!(sci->type == scj->type && sci->data0 == scj->data0 && sci->data1 == scj->data1)) + if(!(sci->type == scj->type && sci->data0 == scj->data0 && sci->data1 == scj->data1 && sci->data2 == scj->data2)) continue; if(CLOSURE_IS_BSDF_OR_BSSRDF(sci->type)) { diff --git a/intern/cycles/kernel/svm/svm_closure.h b/intern/cycles/kernel/svm/svm_closure.h index 20a6cb8cd45..20105fd84f0 100644 --- a/intern/cycles/kernel/svm/svm_closure.h +++ b/intern/cycles/kernel/svm/svm_closure.h @@ -30,6 +30,7 @@ ccl_device void svm_node_glass_setup(ShaderData *sd, ShaderClosure *sc, int type else { sc->data0 = 0.0f; sc->data1 = 0.0f; + sc->data2 = 0.0f; ccl_fetch(sd, flag) |= bsdf_reflection_setup(sc); } } @@ -393,6 +394,7 @@ ccl_device void svm_node_closure_bsdf(KernelGlobals *kg, ShaderData *sd, float * sc->N = N; sc->data0 = 0.0f; sc->data1 = 0.0f; + sc->data2 = 0.0f; ccl_fetch(sd, flag) |= bsdf_transparent_setup(sc); } } @@ -545,6 +547,7 @@ ccl_device void svm_node_closure_volume(KernelGlobals *kg, ShaderData *sd, float if(sc) { sc->data0 = param2; /* g */ sc->data1 = 0.0f; + sc->data2 = 0.0f; ccl_fetch(sd, flag) |= volume_henyey_greenstein_setup(sc); } break; -- cgit v1.2.3