[Bf-blender-cvs] [68b8979137e] functions: new Vector from Value node
Jacques Lucke
noreply at git.blender.org
Wed Dec 18 13:53:44 CET 2019
Commit: 68b8979137ef252d4c25b2c8ecb3ec3cdc396559
Author: Jacques Lucke
Date: Wed Dec 18 12:39:02 2019 +0100
Branches: functions
https://developer.blender.org/rB68b8979137ef252d4c25b2c8ecb3ec3cdc396559
new Vector from Value node
===================================================================
M release/scripts/startup/nodes/function_nodes/vector.py
M source/blender/functions/intern/inlined_tree_multi_function_network/mappings_nodes.cc
M source/blender/functions/intern/multi_functions/mixed.cc
M source/blender/functions/intern/multi_functions/mixed.h
===================================================================
diff --git a/release/scripts/startup/nodes/function_nodes/vector.py b/release/scripts/startup/nodes/function_nodes/vector.py
index 70ccc055964..34c99a0d333 100644
--- a/release/scripts/startup/nodes/function_nodes/vector.py
+++ b/release/scripts/startup/nodes/function_nodes/vector.py
@@ -4,6 +4,17 @@ from .. base import FunctionNode
from .. node_builder import NodeBuilder
+class VectorFromValueNode(bpy.types.Node, FunctionNode):
+ bl_idname = "fn_VectorFromValueNode"
+ bl_label = "Vector from Value"
+
+ use_list__value: NodeBuilder.VectorizedProperty()
+
+ def declaration(self, builder: NodeBuilder):
+ builder.vectorized_input("value", "use_list__value", "Value", "Values", "Float")
+ builder.vectorized_output("vector", ["use_list__value"], "Vector", "Vectors", "Vector")
+
+
class CombineVectorNode(bpy.types.Node, FunctionNode):
bl_idname = "fn_CombineVectorNode"
bl_label = "Combine Vector"
diff --git a/source/blender/functions/intern/inlined_tree_multi_function_network/mappings_nodes.cc b/source/blender/functions/intern/inlined_tree_multi_function_network/mappings_nodes.cc
index 03296564076..a77b90bf9a8 100644
--- a/source/blender/functions/intern/inlined_tree_multi_function_network/mappings_nodes.cc
+++ b/source/blender/functions/intern/inlined_tree_multi_function_network/mappings_nodes.cc
@@ -33,6 +33,11 @@ static void INSERT_separate_vector(VNodeMFNetworkBuilder &builder)
builder.set_vectorized_constructed_matching_fn<MF_SeparateVector>({"use_list__vector"});
}
+static void INSERT_vector_from_value(VNodeMFNetworkBuilder &builder)
+{
+ builder.set_vectorized_constructed_matching_fn<MF_VectorFromValue>({"use_list__value"});
+}
+
static void INSERT_list_length(VNodeMFNetworkBuilder &builder)
{
const CPPType &type = builder.cpp_type_from_property("active_type");
@@ -529,6 +534,7 @@ void add_inlined_tree_node_mapping_info(VTreeMultiFunctionMappings &mappings)
mappings.xnode_inserters.add_new("fn_SeparateColorNode", INSERT_separate_color);
mappings.xnode_inserters.add_new("fn_CombineVectorNode", INSERT_combine_vector);
mappings.xnode_inserters.add_new("fn_SeparateVectorNode", INSERT_separate_vector);
+ mappings.xnode_inserters.add_new("fn_VectorFromValueNode", INSERT_vector_from_value);
mappings.xnode_inserters.add_new("fn_SwitchNode", INSERT_switch);
mappings.xnode_inserters.add_new("fn_SelectNode", INSERT_select);
mappings.xnode_inserters.add_new("fn_ListLengthNode", INSERT_list_length);
diff --git a/source/blender/functions/intern/multi_functions/mixed.cc b/source/blender/functions/intern/multi_functions/mixed.cc
index 6ee1684001b..bef1d2bed5c 100644
--- a/source/blender/functions/intern/multi_functions/mixed.cc
+++ b/source/blender/functions/intern/multi_functions/mixed.cc
@@ -132,6 +132,24 @@ void MF_SeparateVector::call(MFMask mask, MFParams params, MFContext UNUSED(cont
}
}
+MF_VectorFromValue::MF_VectorFromValue()
+{
+ MFSignatureBuilder signature = this->get_builder("Vector from Value");
+ signature.single_input<float>("Value");
+ signature.single_output<float3>("Vector");
+}
+
+void MF_VectorFromValue::call(MFMask mask, MFParams params, MFContext UNUSED(context)) const
+{
+ VirtualListRef<float> values = params.readonly_single_input<float>(0, "Value");
+ MutableArrayRef<float3> r_vectors = params.uninitialized_single_output<float3>(1, "Vector");
+
+ for (uint i : mask.indices()) {
+ float value = values[i];
+ r_vectors[i] = {value, value, value};
+ }
+}
+
MF_FloatArraySum::MF_FloatArraySum()
{
MFSignatureBuilder signature = this->get_builder("Float Array Sum");
diff --git a/source/blender/functions/intern/multi_functions/mixed.h b/source/blender/functions/intern/multi_functions/mixed.h
index 89b73faf634..479f1592fd1 100644
--- a/source/blender/functions/intern/multi_functions/mixed.h
+++ b/source/blender/functions/intern/multi_functions/mixed.h
@@ -30,6 +30,12 @@ class MF_SeparateVector final : public MultiFunction {
void call(MFMask mask, MFParams params, MFContext context) const override;
};
+class MF_VectorFromValue final : public MultiFunction {
+ public:
+ MF_VectorFromValue();
+ void call(MFMask mask, MFParams params, MFContext context) const override;
+};
+
class MF_FloatArraySum final : public MultiFunction {
public:
MF_FloatArraySum();
More information about the Bf-blender-cvs
mailing list