[Bf-blender-cvs] [9c7ef45214c] functions: Use float3 instead of custom vector type in function system

Jacques Lucke noreply at git.blender.org
Wed Jul 3 15:34:58 CEST 2019


Commit: 9c7ef45214c8c752e5137312a2fe8aaa1e1cfb4a
Author: Jacques Lucke
Date:   Wed Jul 3 15:34:47 2019 +0200
Branches: functions
https://developer.blender.org/rB9c7ef45214c8c752e5137312a2fe8aaa1e1cfb4a

Use float3 instead of custom vector type in function system

===================================================================

M	source/blender/blenlib/BLI_math.hpp
M	source/blender/functions/frontends/data_flow_nodes/builder.cpp
M	source/blender/functions/frontends/data_flow_nodes/inserters/sockets.cpp
M	source/blender/functions/functions/lists.cpp
M	source/blender/functions/functions/object_input.cpp
M	source/blender/functions/functions/vectors.cpp
M	source/blender/functions/functions/vectors.hpp
M	source/blender/functions/types/numeric.cpp
M	source/blender/functions/types/numeric.hpp
M	source/blender/functions/types/numeric_lists.cpp
M	source/blender/functions/types/numeric_lists.hpp
M	source/blender/functions/types/tuple_access-c.cpp
M	source/blender/functions/types/tuple_access-c.h
M	source/blender/functions/types/types-c.cpp
M	source/blender/functions/types/types-c.h
M	source/blender/modifiers/intern/MOD_displace.c
M	source/blender/modifiers/intern/MOD_functiondeform.c
M	source/blender/modifiers/intern/MOD_functionpoints.c

===================================================================

diff --git a/source/blender/blenlib/BLI_math.hpp b/source/blender/blenlib/BLI_math.hpp
index f51904b4fb7..965ca949400 100644
--- a/source/blender/blenlib/BLI_math.hpp
+++ b/source/blender/blenlib/BLI_math.hpp
@@ -138,6 +138,11 @@ struct float3 {
   {
     return a.x * b.x + a.y * b.y + a.z * b.z;
   }
+
+  static float distance(float3 a, float3 b)
+  {
+    return (a - b).length();
+  }
 };
 
 struct float4x4 {
diff --git a/source/blender/functions/frontends/data_flow_nodes/builder.cpp b/source/blender/functions/frontends/data_flow_nodes/builder.cpp
index 9de517ae151..feefdb763f7 100644
--- a/source/blender/functions/frontends/data_flow_nodes/builder.cpp
+++ b/source/blender/functions/frontends/data_flow_nodes/builder.cpp
@@ -234,7 +234,7 @@ SharedType &BTreeGraphBuilder::type_by_name(const char *data_type) const
     return Types::GET_TYPE_int32();
   }
   else if (STREQ(data_type, "Vector")) {
-    return Types::GET_TYPE_fvec3();
+    return Types::GET_TYPE_float3();
   }
   else if (STREQ(data_type, "Boolean")) {
     return Types::GET_TYPE_bool();
@@ -243,7 +243,7 @@ SharedType &BTreeGraphBuilder::type_by_name(const char *data_type) const
     return Types::GET_TYPE_float_list();
   }
   else if (STREQ(data_type, "Vector List")) {
-    return Types::GET_TYPE_fvec3_list();
+    return Types::GET_TYPE_float3_list();
   }
   else if (STREQ(data_type, "Integer List")) {
     return Types::GET_TYPE_int32_list();
diff --git a/source/blender/functions/frontends/data_flow_nodes/inserters/sockets.cpp b/source/blender/functions/frontends/data_flow_nodes/inserters/sockets.cpp
index cb1e75d6d1f..6857fb69705 100644
--- a/source/blender/functions/frontends/data_flow_nodes/inserters/sockets.cpp
+++ b/source/blender/functions/frontends/data_flow_nodes/inserters/sockets.cpp
@@ -8,6 +8,8 @@
 namespace FN {
 namespace DataFlowNodes {
 
+using BLI::float3;
+
 static void LOAD_float(PointerRNA *rna, Tuple &tuple, uint index)
 {
   float value = RNA_float_get(rna, "value");
@@ -18,7 +20,7 @@ static void LOAD_vector(PointerRNA *rna, Tuple &tuple, uint index)
 {
   float vector[3];
   RNA_float_get_array(rna, "value", vector);
-  tuple.set<Types::Vector>(index, Types::Vector(vector));
+  tuple.set<float3>(index, float3(vector));
 }
 
 static void LOAD_integer(PointerRNA *rna, Tuple &tuple, uint index)
@@ -46,7 +48,7 @@ void initialize_socket_inserters(GraphInserters &inserters)
   inserters.reg_socket_loader("Integer", LOAD_integer);
   inserters.reg_socket_loader("Boolean", LOAD_boolean);
   inserters.reg_socket_loader("Float List", LOAD_empty_list<float>);
-  inserters.reg_socket_loader("Vector List", LOAD_empty_list<Types::Vector>);
+  inserters.reg_socket_loader("Vector List", LOAD_empty_list<float3>);
   inserters.reg_socket_loader("Integer List", LOAD_empty_list<int32_t>);
   inserters.reg_socket_loader("Boolean List", LOAD_empty_list<bool>);
 }
diff --git a/source/blender/functions/functions/lists.cpp b/source/blender/functions/functions/lists.cpp
index 682ec2c752c..a7d170db2aa 100644
--- a/source/blender/functions/functions/lists.cpp
+++ b/source/blender/functions/functions/lists.cpp
@@ -224,7 +224,7 @@ BLI_LAZY_INIT_STATIC(ListFunctions, get_list_functions)
 {
   ListFunctions functions;
   insert_list_functions_for_type<float>(functions, GET_TYPE_float(), GET_TYPE_float_list());
-  insert_list_functions_for_type<Vector>(functions, GET_TYPE_fvec3(), GET_TYPE_fvec3_list());
+  insert_list_functions_for_type<float3>(functions, GET_TYPE_float3(), GET_TYPE_float3_list());
   insert_list_functions_for_type<int32_t>(functions, GET_TYPE_int32(), GET_TYPE_int32_list());
   insert_list_functions_for_type<bool>(functions, GET_TYPE_bool(), GET_TYPE_bool_list());
   return functions;
diff --git a/source/blender/functions/functions/object_input.cpp b/source/blender/functions/functions/object_input.cpp
index 5994f9e9ae7..f0d37f3d8dc 100644
--- a/source/blender/functions/functions/object_input.cpp
+++ b/source/blender/functions/functions/object_input.cpp
@@ -23,11 +23,11 @@ class ObjectTransforms : public TupleCallBody {
   void call(Tuple &UNUSED(fn_in), Tuple &fn_out, ExecutionContext &UNUSED(ctx)) const override
   {
     if (m_object) {
-      Vector position = *(Vector *)m_object->loc;
-      fn_out.set<Vector>(0, position);
+      float3 position = m_object->loc;
+      fn_out.set<float3>(0, position);
     }
     else {
-      fn_out.set<Vector>(0, Vector());
+      fn_out.set<float3>(0, float3());
     }
   }
 };
@@ -50,7 +50,7 @@ class ObjectTransformsDependency : public DependenciesBody {
 SharedFunction GET_FN_object_location(Object *object)
 {
   FunctionBuilder builder;
-  builder.add_output("Location", GET_TYPE_fvec3());
+  builder.add_output("Location", GET_TYPE_float3());
   auto fn = builder.build("Object Transforms");
   fn->add_body<ObjectTransforms>(object);
   fn->add_body<ObjectTransformsDependency>(object);
diff --git a/source/blender/functions/functions/vectors.cpp b/source/blender/functions/functions/vectors.cpp
index 5a34e5fc209..7d6cc530df4 100644
--- a/source/blender/functions/functions/vectors.cpp
+++ b/source/blender/functions/functions/vectors.cpp
@@ -16,7 +16,7 @@ class CombineVectorGen : public LLVMBuildIRBody {
                 CodeInterface &interface,
                 const BuildIRSettings &UNUSED(settings)) const override
   {
-    llvm::Type *vector_ty = get_llvm_type(GET_TYPE_fvec3(), builder.getContext());
+    llvm::Type *vector_ty = get_llvm_type(GET_TYPE_float3(), builder.getContext());
 
     llvm::Value *vector = builder.getUndef(vector_ty);
     vector = builder.CreateInsertElement(vector, interface.get_input(0), 0);
@@ -32,7 +32,7 @@ BLI_LAZY_INIT(SharedFunction, GET_FN_combine_vector)
   builder.add_input("X", GET_TYPE_float());
   builder.add_input("Y", GET_TYPE_float());
   builder.add_input("Z", GET_TYPE_float());
-  builder.add_output("Vector", GET_TYPE_fvec3());
+  builder.add_output("Vector", GET_TYPE_float3());
 
   auto fn = builder.build("Combine Vector");
   fn->add_body<CombineVectorGen>();
@@ -54,7 +54,7 @@ class SeparateVector : public LLVMBuildIRBody {
 BLI_LAZY_INIT(SharedFunction, GET_FN_separate_vector)
 {
   FunctionBuilder builder;
-  builder.add_input("Vector", GET_TYPE_fvec3());
+  builder.add_input("Vector", GET_TYPE_float3());
   builder.add_output("X", GET_TYPE_float());
   builder.add_output("Y", GET_TYPE_float());
   builder.add_output("Z", GET_TYPE_float());
@@ -67,18 +67,17 @@ BLI_LAZY_INIT(SharedFunction, GET_FN_separate_vector)
 class VectorDistance : public TupleCallBody {
   void call(Tuple &fn_in, Tuple &fn_out, ExecutionContext &UNUSED(ctx)) const override
   {
-    Vector a = fn_in.get<Vector>(0);
-    Vector b = fn_in.get<Vector>(1);
-    float distance = len_v3v3((float *)&a, (float *)&b);
-    fn_out.set<float>(0, distance);
+    float3 a = fn_in.get<float3>(0);
+    float3 b = fn_in.get<float3>(1);
+    fn_out.set<float>(0, float3::distance(a, b));
   }
 };
 
 BLI_LAZY_INIT(SharedFunction, GET_FN_vector_distance)
 {
   FunctionBuilder builder;
-  builder.add_input("A", GET_TYPE_fvec3());
-  builder.add_input("B", GET_TYPE_fvec3());
+  builder.add_input("A", GET_TYPE_float3());
+  builder.add_input("B", GET_TYPE_float3());
   builder.add_output("Distance", GET_TYPE_float());
 
   auto fn = builder.build("Vector Distance");
@@ -89,19 +88,18 @@ BLI_LAZY_INIT(SharedFunction, GET_FN_vector_distance)
 static SharedFunction get_math_function__two_inputs(std::string name)
 {
   FunctionBuilder builder;
-  builder.add_input("A", GET_TYPE_fvec3());
-  builder.add_input("B", GET_TYPE_fvec3());
-  builder.add_output("Result", GET_TYPE_fvec3());
+  builder.add_input("A", GET_TYPE_float3());
+  builder.add_input("B", GET_TYPE_float3());
+  builder.add_output("Result", GET_TYPE_float3());
   return builder.build(name);
 }
 
 class AddVectors : public TupleCallBody {
   void call(Tuple &fn_in, Tuple &fn_out, ExecutionContext &UNUSED(ctx)) const override
   {
-    Vector a = fn_in.get<Vector>(0);
-    Vector b = fn_in.get<Vector>(1);
-    Vector result(a.x + b.x, a.y + b.y, a.z + b.z);
-    fn_out.set<Vector>(0, result);
+    float3 a = fn_in.get<float3>(0);
+    float3 b = fn_in.get<float3>(1);
+    fn_out.set<float3>(0, a + b);
   }
 };
 
@@ -128,30 +126,30 @@ BLI_LAZY_INIT(SharedFunction, GET_FN_add_vectors)
 /* Constant vector builders
  *****************************************/
 
-class ConstFVec3 : public TupleCallBody {
+class ConstFloat3 : public TupleCallBody {
  private:
-  Vector m_vector;
+  float3 m_vector;
 
  public:
-  ConstFVec3(Vector vector) : m_vector(vector)
+  ConstFloat3(float3 vector) : m_vector(vector)
   {
   }
 
   void call(Tuple &UNUSED(fn_in), Tuple &fn_out, ExecutionContext &UNUSED(ctx)) const override
   {
-    fn_out.set<Vector>(0, m_vector);
+    fn_out.set<float3>(0, m_vector);
   }
 };
 
-class ConstFVec3Gen : public LLVMBuildIRBody {
+class ConstFloat3Gen : public LLVMBuildIRBody {
  private:
-  Vector m_vector;
+  float3 m_vector;
   LLVMTypeInfo *m_type_info;
 
  public:
-  ConstFVec3Gen(Vector vector) : m_vector(vector)
+  ConstFloat3Gen(float3 vector) : m_vector(vector)
   {
-    m_type_info = GET_TYPE_fvec3()->extension<LLVMTypeInfo>();
+    m_type_info = GET_TYPE_float3()->extension<LLVMTypeInfo>();
   }
 
   void build_ir(CodeBuilder &builder,
@@ -166,24 +164,24 @@ class ConstFVec3Gen : public LLVMBuildIRBody {
   }
 };
 
-static SharedFunction get_output_fvec3_function(Vector vector)
+static SharedFunction get_output_float3_function(float3 vector)
 {
   FunctionBuilder builder;
-  builder.add_output("Vector", GET_TYPE_fvec3());
+  builder.add_output("Vector", GET_TYPE_float3());
   auto fn = builder.build("Build Vector");
-  fn->add_body<ConstFVec3>(vector);
-  fn->add_body<ConstFVec3Gen>(vector);
+  fn->add_body<ConstFloat3>(vector);
+  fn->add_body<ConstFloat3Gen>(vector);
   return fn;
 }
 
-BLI_LAZY_INIT(SharedFunction, GET_FN_output_fvec3_0)
+BLI_LAZY_INIT(SharedFunction, GET_FN_output_float3_0)
 {
-  return get_output_fvec3_function(Vector(0, 0, 0));
+  return get_output_float3_function(float3(0, 0, 0));
 }
 
-BLI_LAZY_INIT(SharedFunction, GET_FN_output_fvec3_1)
+BLI_LAZY_INIT(SharedFunction, GET_FN_output_float3_1)
 {
-  return get_output_fvec3_func

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list