Commit: 4737b1246241fd575921f93ddf229da656c7fb5a
Author: Lukas Stockner
Date:   Wed Jul 29 22:04:36 2015 +0200
Branches: master
https://developer.blender.org/rB4737b1246241fd575921f93ddf229da656c7fb5a

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

===================================================================

M       intern/cycles/kernel/kernel_shader.h
M       intern/cycles/kernel/svm/svm_closure.h

===================================================================

diff --git a/intern/cycles/kernel/kernel_shader.h 
b/intern/cycles/kernel/kernel_shader.h
index 94e1302..6b560f5 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 20a6cb8..20105fd 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;

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to