Revision: 36666 http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=36666 Author: blendix Date: 2011-05-13 12:11:08 +0000 (Fri, 13 May 2011) Log Message: ----------- Cycles: fix BSDF closure inputs ignoring links.
Modified Paths: -------------- branches/cycles/intern/cycles/kernel/svm/svm.h branches/cycles/intern/cycles/kernel/svm/svm_closure.h branches/cycles/intern/cycles/render/nodes.cpp Modified: branches/cycles/intern/cycles/kernel/svm/svm.h =================================================================== --- branches/cycles/intern/cycles/kernel/svm/svm.h 2011-05-13 12:10:03 UTC (rev 36665) +++ branches/cycles/intern/cycles/kernel/svm/svm.h 2011-05-13 12:11:08 UTC (rev 36666) @@ -167,7 +167,7 @@ else return; } else if(node.x == NODE_CLOSURE_BSDF) - svm_node_closure_bsdf(sd, node.y, node.z, node.w, randb); + svm_node_closure_bsdf(sd, stack, node, randb); else if(node.x == NODE_CLOSURE_EMISSION) svm_node_closure_emission(sd); else if(node.x == NODE_CLOSURE_BACKGROUND) Modified: branches/cycles/intern/cycles/kernel/svm/svm_closure.h =================================================================== --- branches/cycles/intern/cycles/kernel/svm/svm_closure.h 2011-05-13 12:10:03 UTC (rev 36665) +++ branches/cycles/intern/cycles/kernel/svm/svm_closure.h 2011-05-13 12:11:08 UTC (rev 36666) @@ -20,11 +20,14 @@ /* Closure Nodes */ -__device void svm_node_closure_bsdf(ShaderData *sd, uint type, int iparam1, int iparam2, float randb) +__device void svm_node_closure_bsdf(ShaderData *sd, float *stack, uint4 node, float randb) { - float param1 = __int_as_float(iparam1); - float param2 = __int_as_float(iparam2); + uint type, param1_offset, param2_offset; + decode_node_uchar4(node.y, &type, ¶m1_offset, ¶m2_offset, NULL); + float param1 = (stack_valid(param1_offset))? stack_load_float(stack, param1_offset): __int_as_float(node.z); + float param2 = (stack_valid(param2_offset))? stack_load_float(stack, param2_offset): __int_as_float(node.w); + switch(type) { case CLOSURE_BSDF_DIFFUSE_ID: bsdf_diffuse_setup(sd, sd->N); Modified: branches/cycles/intern/cycles/render/nodes.cpp =================================================================== --- branches/cycles/intern/cycles/render/nodes.cpp 2011-05-13 12:10:03 UTC (rev 36665) +++ branches/cycles/intern/cycles/render/nodes.cpp 2011-05-13 12:11:08 UTC (rev 36666) @@ -987,9 +987,16 @@ } else compiler.add_node(NODE_CLOSURE_SET_WEIGHT, color_in->value); + + if(param1) + compiler.stack_assign(param1); + if(param2) + compiler.stack_assign(param2); compiler.add_node(NODE_CLOSURE_BSDF, - closure, + compiler.encode_uchar4(closure, + (param1)? param1->stack_offset: SVM_STACK_INVALID, + (param2)? param2->stack_offset: SVM_STACK_INVALID), __float_as_int((param1)? param1->value.x: 0.0f), __float_as_int((param2)? param2->value.x: 0.0f)); } _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs