[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [36666] branches/cycles/intern/cycles: Cycles: fix BSDF closure inputs ignoring links.
Brecht Van Lommel
brechtvanlommel at pandora.be
Fri May 13 14:11:08 CEST 2011
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));
}
More information about the Bf-blender-cvs
mailing list