[Bf-blender-cvs] [e543c9ad323] functions: add global sin and cos functions
Jacques Lucke
noreply at git.blender.org
Fri Feb 14 11:40:15 CET 2020
Commit: e543c9ad323e1073fff648513f71f5b5d2a01132
Author: Jacques Lucke
Date: Fri Feb 14 11:40:02 2020 +0100
Branches: functions
https://developer.blender.org/rBe543c9ad323e1073fff648513f71f5b5d2a01132
add global sin and cos functions
===================================================================
M source/blender/functions/intern/multi_functions/global_functions.cc
M source/blender/functions/intern/multi_functions/global_functions.h
M source/blender/functions/intern/node_tree_multi_function_network/mappings_nodes.cc
===================================================================
diff --git a/source/blender/functions/intern/multi_functions/global_functions.cc b/source/blender/functions/intern/multi_functions/global_functions.cc
index 31d2f667a34..a8b304020cd 100644
--- a/source/blender/functions/intern/multi_functions/global_functions.cc
+++ b/source/blender/functions/intern/multi_functions/global_functions.cc
@@ -7,6 +7,8 @@ const MultiFunction *MF_GLOBAL_add_floats_2 = nullptr;
const MultiFunction *MF_GLOBAL_multiply_floats_2 = nullptr;
const MultiFunction *MF_GLOBAL_subtract_floats = nullptr;
const MultiFunction *MF_GLOBAL_safe_division_floats = nullptr;
+const MultiFunction *MF_GLOBAL_sin_float = nullptr;
+const MultiFunction *MF_GLOBAL_cos_float = nullptr;
void init_global_functions()
{
@@ -20,6 +22,11 @@ void init_global_functions()
"safe divide 2 floats",
[](float a, float b) { return (b != 0.0f) ? a / b : 0.0f; },
BLI_RAND_PER_LINE_UINT32);
+
+ MF_GLOBAL_sin_float = new MF_Custom_In1_Out1<float, float>(
+ "sin float", [](float a) { return std::sin(a); }, BLI_RAND_PER_LINE_UINT32);
+ MF_GLOBAL_cos_float = new MF_Custom_In1_Out1<float, float>(
+ "cos float", [](float a) { return std::cos(a); }, BLI_RAND_PER_LINE_UINT32);
}
void free_global_functions()
@@ -28,6 +35,8 @@ void free_global_functions()
delete MF_GLOBAL_multiply_floats_2;
delete MF_GLOBAL_subtract_floats;
delete MF_GLOBAL_safe_division_floats;
+ delete MF_GLOBAL_sin_float;
+ delete MF_GLOBAL_cos_float;
}
} // namespace FN
diff --git a/source/blender/functions/intern/multi_functions/global_functions.h b/source/blender/functions/intern/multi_functions/global_functions.h
index 6a77ec16621..a36894085d1 100644
--- a/source/blender/functions/intern/multi_functions/global_functions.h
+++ b/source/blender/functions/intern/multi_functions/global_functions.h
@@ -11,5 +11,7 @@ extern const MultiFunction *MF_GLOBAL_add_floats_2;
extern const MultiFunction *MF_GLOBAL_multiply_floats_2;
extern const MultiFunction *MF_GLOBAL_subtract_floats;
extern const MultiFunction *MF_GLOBAL_safe_division_floats;
+extern const MultiFunction *MF_GLOBAL_sin_float;
+extern const MultiFunction *MF_GLOBAL_cos_float;
} // namespace FN
diff --git a/source/blender/functions/intern/node_tree_multi_function_network/mappings_nodes.cc b/source/blender/functions/intern/node_tree_multi_function_network/mappings_nodes.cc
index 0fc10e0a52b..b46babc4e11 100644
--- a/source/blender/functions/intern/node_tree_multi_function_network/mappings_nodes.cc
+++ b/source/blender/functions/intern/node_tree_multi_function_network/mappings_nodes.cc
@@ -170,6 +170,11 @@ static void build_math_fn_in1_out1(FNodeMFBuilder &builder,
{"use_list"}, builder.fnode().name(), func, operation_hash);
}
+static void build_math_fn_in1_out1(FNodeMFBuilder &builder, const MultiFunction &base_fn)
+{
+ builder.set_vectorized_matching_fn({"use_list"}, base_fn);
+}
+
template<typename InT1, typename InT2, typename OutT, typename FuncT>
static void build_math_fn_in2_out1(FNodeMFBuilder &builder,
FuncT element_func,
@@ -270,14 +275,12 @@ static void INSERT_abs_float(FNodeMFBuilder &builder)
static void INSERT_sine_float(FNodeMFBuilder &builder)
{
- build_math_fn_in1_out1<float, float>(
- builder, [](float a) -> float { return std::sin(a); }, BLI_RAND_PER_LINE_UINT32);
+ build_math_fn_in1_out1(builder, *MF_GLOBAL_sin_float);
}
static void INSERT_cosine_float(FNodeMFBuilder &builder)
{
- build_math_fn_in1_out1<float, float>(
- builder, [](float a) -> float { return std::cos(a); }, BLI_RAND_PER_LINE_UINT32);
+ build_math_fn_in1_out1(builder, *MF_GLOBAL_cos_float);
}
static void INSERT_ceil_float(FNodeMFBuilder &builder)
More information about the Bf-blender-cvs
mailing list