[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