[Bf-blender-cvs] [74e2186] strand_nodes: Emit function calls for each node.
Lukas Tönne
noreply at git.blender.org
Thu Jul 21 20:17:07 CEST 2016
Commit: 74e21867ffcd445735ab2144f19545487f7be056
Author: Lukas Tönne
Date: Thu Jul 21 18:03:16 2016 +0200
Branches: strand_nodes
https://developer.blender.org/rB74e21867ffcd445735ab2144f19545487f7be056
Emit function calls for each node.
Base functions are yet to be defined.
===================================================================
M source/blender/blenvm/glsl/glsl_codegen.cc
===================================================================
diff --git a/source/blender/blenvm/glsl/glsl_codegen.cc b/source/blender/blenvm/glsl/glsl_codegen.cc
index f23001b..6922b0e 100644
--- a/source/blender/blenvm/glsl/glsl_codegen.cc
+++ b/source/blender/blenvm/glsl/glsl_codegen.cc
@@ -273,6 +273,50 @@ void GLSLCodeGenerator::eval_node(const NodeType *nodetype,
ArrayRef<ValueHandle> input_args,
ArrayRef<ValueHandle> output_args)
{
+ m_code << nodetype->name() << "(";
+
+// if (nodetype->use_globals()) {
+// evalargs.push_back(m_globals_ptr);
+// }
+
+ for (int i = 0; i < nodetype->num_inputs(); ++i) {
+ const NodeInput *input = nodetype->find_input(i);
+ const TypeSpec *typespec = input->typedesc.get_typespec();
+ bool is_constant = (input->value_type == INPUT_CONSTANT);
+ const DualValue &dval = get_value(input_args[i]);
+
+ if (i > 0)
+ m_code << ", ";
+ if (!is_constant && bvm_glsl_type_has_dual_value(typespec)) {
+ m_code << dval.value()->name()
+ << ", " << dval.dx()->name()
+ << ", " << dval.dy()->name();
+ }
+ else {
+ m_code << dval.value()->name();
+ }
+ }
+
+ if (nodetype->num_inputs() > 0)
+ m_code << ", ";
+ for (int i = 0; i < nodetype->num_outputs(); ++i) {
+ const NodeOutput *output = nodetype->find_output(i);
+ const TypeSpec *typespec = output->typedesc.get_typespec();
+ const DualValue &dval = get_value(output_args[i]);
+
+ if (i > 0)
+ m_code << ", ";
+ if (bvm_glsl_type_has_dual_value(typespec)) {
+ m_code << dval.value()->name()
+ << ", " << dval.dx()->name()
+ << ", " << dval.dy()->name();
+ }
+ else {
+ m_code << dval.value()->name();
+ }
+ }
+
+ m_code << ");\n";
}
} /* namespace blenvm */
More information about the Bf-blender-cvs
mailing list