[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