[Bf-blender-cvs] [b985176] object_nodes: Moved math eval functions to a dedicated file.

Lukas Tönne noreply at git.blender.org
Mon Dec 7 12:27:59 CET 2015


Commit: b985176b57397d2a1be6e9b7d5333e699560717b
Author: Lukas Tönne
Date:   Mon Dec 7 11:43:38 2015 +0100
Branches: object_nodes
https://developer.blender.org/rBb985176b57397d2a1be6e9b7d5333e699560717b

Moved math eval functions to a dedicated file.

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

M	source/blender/blenvm/bvm/CMakeLists.txt
M	source/blender/blenvm/bvm/bvm_eval.cc
A	source/blender/blenvm/bvm/bvm_eval_math.h

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

diff --git a/source/blender/blenvm/bvm/CMakeLists.txt b/source/blender/blenvm/bvm/CMakeLists.txt
index 3294e8a..0a5e848 100644
--- a/source/blender/blenvm/bvm/CMakeLists.txt
+++ b/source/blender/blenvm/bvm/CMakeLists.txt
@@ -41,6 +41,7 @@ set(SRC
 	bvm_eval.cc
 	bvm_eval.h
 	bvm_eval_common.h
+	bvm_eval_math.h
 	bvm_eval_mesh.h
 	bvm_eval_texture.h
 	bvm_function.cc
diff --git a/source/blender/blenvm/bvm/bvm_eval.cc b/source/blender/blenvm/bvm/bvm_eval.cc
index 078f292..0611d1d 100644
--- a/source/blender/blenvm/bvm/bvm_eval.cc
+++ b/source/blender/blenvm/bvm/bvm_eval.cc
@@ -44,11 +44,10 @@ extern "C" {
 
 #include "bvm_eval.h"
 #include "bvm_eval_common.h"
+#include "bvm_eval_math.h"
 #include "bvm_eval_mesh.h"
 #include "bvm_eval_texture.h"
 
-#include "bvm_util_math.h"
-
 namespace bvm {
 
 EvalContext::EvalContext()
@@ -143,28 +142,6 @@ static void eval_op_get_elem_float4(float *stack, int index, StackIndex offset_f
 	stack_store_float(stack, offset_to, f[index]);
 }
 
-static void eval_op_matrix44_to_locrotscale(float *stack, StackIndex offset_from, StackIndex offset_loc,
-                                            StackIndex offset_rot, StackIndex offset_scale)
-{
-	matrix44 m = stack_load_matrix44(stack, offset_from);
-	float loc[3], rot[4], scale[3];
-	mat4_decompose(loc, rot, scale, m.data);
-	stack_store_float3(stack, offset_loc, float3::from_data(loc));
-	stack_store_float4(stack, offset_rot, float4::from_data(rot));
-	stack_store_float3(stack, offset_scale, float3::from_data(scale));
-}
-
-static void eval_op_locrotscale_to_matrix44(float *stack, StackIndex offset_loc, StackIndex offset_rot,
-                                              StackIndex offset_scale, StackIndex offset_to)
-{
-	float3 loc = stack_load_float3(stack, offset_loc);
-	float4 rot = stack_load_float4(stack, offset_rot);
-	float3 scale = stack_load_float3(stack, offset_scale);
-	float mat[4][4];
-	loc_quat_size_to_mat4(mat, loc.data(), rot.data(), scale.data());
-	stack_store_matrix44(stack, offset_to, matrix44::from_data(&mat[0][0]));
-}
-
 static void eval_op_init_mesh_ptr(float *stack, StackIndex offset, int use_count)
 {
 	mesh_ptr p(NULL);
@@ -189,210 +166,6 @@ static void eval_op_point_velocity(const EvalData *data, float *stack, StackInde
 	stack_store_float3(stack, offset, data->effector.velocity);
 }
 
-static void eval_op_add_float(float *stack, StackIndex offset_a, StackIndex offset_b, StackIndex offset_r)
-{
-	float a = stack_load_float(stack, offset_a);
-	float b = stack_load_float(stack, offset_b);
-	stack_store_float(stack, offset_r, a + b);
-}
-
-static void eval_op_sub_float(float *stack, StackIndex offset_a, StackIndex offset_b, StackIndex offset_r)
-{
-	float a = stack_load_float(stack, offset_a);
-	float b = stack_load_float(stack, offset_b);
-	stack_store_float(stack, offset_r, a - b);
-}
-
-static void eval_op_mul_float(float *stack, StackIndex offset_a, StackIndex offset_b, StackIndex offset_r)
-{
-	float a = stack_load_float(stack, offset_a);
-	float b = stack_load_float(stack, offset_b);
-	stack_store_float(stack, offset_r, a * b);
-}
-
-static void eval_op_div_float(float *stack, StackIndex offset_a, StackIndex offset_b, StackIndex offset_r)
-{
-	float a = stack_load_float(stack, offset_a);
-	float b = stack_load_float(stack, offset_b);
-	stack_store_float(stack, offset_r, div_safe(a, b));
-}
-
-static void eval_op_sine(float *stack, StackIndex offset, StackIndex offset_r)
-{
-	float f = stack_load_float(stack, offset);
-	stack_store_float(stack, offset_r, sinf(f));
-}
-
-static void eval_op_cosine(float *stack, StackIndex offset, StackIndex offset_r)
-{
-	float f = stack_load_float(stack, offset);
-	stack_store_float(stack, offset_r, cosf(f));
-}
-
-static void eval_op_tangent(float *stack, StackIndex offset, StackIndex offset_r)
-{
-	float f = stack_load_float(stack, offset);
-	stack_store_float(stack, offset_r, tanf(f));
-}
-
-static void eval_op_arcsine(float *stack, StackIndex offset, StackIndex offset_r)
-{
-	float f = stack_load_float(stack, offset);
-	stack_store_float(stack, offset_r, asinf(f));
-}
-
-static void eval_op_arccosine(float *stack, StackIndex offset, StackIndex offset_r)
-{
-	float f = stack_load_float(stack, offset);
-	stack_store_float(stack, offset_r, acosf(f));
-}
-
-static void eval_op_arctangent(float *stack, StackIndex offset, StackIndex offset_r)
-{
-	float f = stack_load_float(stack, offset);
-	stack_store_float(stack, offset_r, atanf(f));
-}
-
-static void eval_op_power(float *stack, StackIndex offset_a, StackIndex offset_b, StackIndex offset_r)
-{
-	float a = stack_load_float(stack, offset_a);
-	float b = stack_load_float(stack, offset_b);
-	stack_store_float(stack, offset_r, (a >= 0.0f)? powf(a, b): 0.0f);
-}
-
-static void eval_op_logarithm(float *stack, StackIndex offset_a, StackIndex offset_b, StackIndex offset_r)
-{
-	float a = stack_load_float(stack, offset_a);
-	float b = stack_load_float(stack, offset_b);
-	stack_store_float(stack, offset_r, (a >= 0.0f && b >= 0.0f)? logf(a) / logf(b): 0.0f);
-}
-
-static void eval_op_minimum(float *stack, StackIndex offset_a, StackIndex offset_b, StackIndex offset_r)
-{
-	float a = stack_load_float(stack, offset_a);
-	float b = stack_load_float(stack, offset_b);
-	stack_store_float(stack, offset_r, min_ff(a, b));
-}
-
-static void eval_op_maximum(float *stack, StackIndex offset_a, StackIndex offset_b, StackIndex offset_r)
-{
-	float a = stack_load_float(stack, offset_a);
-	float b = stack_load_float(stack, offset_b);
-	stack_store_float(stack, offset_r, max_ff(a, b));
-}
-
-static void eval_op_round(float *stack, StackIndex offset, StackIndex offset_r)
-{
-	float f = stack_load_float(stack, offset);
-	stack_store_float(stack, offset_r, floorf(f + 0.5f));
-}
-
-static void eval_op_less_than(float *stack, StackIndex offset_a, StackIndex offset_b, StackIndex offset_r)
-{
-	float a = stack_load_float(stack, offset_a);
-	float b = stack_load_float(stack, offset_b);
-	stack_store_float(stack, offset_r, (a < b) ? 1.0f : 0.0f);
-}
-
-static void eval_op_greater_than(float *stack, StackIndex offset_a, StackIndex offset_b, StackIndex offset_r)
-{
-	float a = stack_load_float(stack, offset_a);
-	float b = stack_load_float(stack, offset_b);
-	stack_store_float(stack, offset_r, (a > b) ? 1.0f : 0.0f);
-}
-
-static void eval_op_modulo(float *stack, StackIndex offset_a, StackIndex offset_b, StackIndex offset_r)
-{
-	float a = stack_load_float(stack, offset_a);
-	float b = stack_load_float(stack, offset_b);
-	stack_store_float(stack, offset_r, (b != 0.0f) ? fmodf(a, b) : 0.0f);
-}
-
-static void eval_op_absolute(float *stack, StackIndex offset, StackIndex offset_r)
-{
-	float f = stack_load_float(stack, offset);
-	stack_store_float(stack, offset_r, fabsf(f));
-}
-
-static void eval_op_clamp(float *stack, StackIndex offset, StackIndex offset_r)
-{
-	float f = stack_load_float(stack, offset);
-	stack_store_float(stack, offset_r, CLAMPIS(f, 0.0f, 1.0f));
-}
-
-static void eval_op_add_float3(float *stack, StackIndex offset_a, StackIndex offset_b, StackIndex offset_r)
-{
-	float3 a = stack_load_float3(stack, offset_a);
-	float3 b = stack_load_float3(stack, offset_b);
-	stack_store_float3(stack, offset_r, float3(a.x + b.x, a.y + b.y, a.z + b.z));
-}
-
-static void eval_op_sub_float3(float *stack, StackIndex offset_a, StackIndex offset_b, StackIndex offset_r)
-{
-	float3 a = stack_load_float3(stack, offset_a);
-	float3 b = stack_load_float3(stack, offset_b);
-	stack_store_float3(stack, offset_r, float3(a.x - b.x, a.y - b.y, a.z - b.z));
-}
-
-static void eval_op_mul_float3(float *stack, StackIndex offset_a, StackIndex offset_b, StackIndex offset_r)
-{
-	float3 a = stack_load_float3(stack, offset_a);
-	float3 b = stack_load_float3(stack, offset_b);
-	stack_store_float3(stack, offset_r, float3(a.x * b.x, a.y * b.y, a.z * b.z));
-}
-
-static void eval_op_div_float3(float *stack, StackIndex offset_a, StackIndex offset_b, StackIndex offset_r)
-{
-	float3 a = stack_load_float3(stack, offset_a);
-	float3 b = stack_load_float3(stack, offset_b);
-	stack_store_float3(stack, offset_r, float3(div_safe(a.x, b.x), div_safe(a.y, b.y), div_safe(a.z, b.z)));
-}
-
-static void eval_op_mul_float3_float(float *stack, StackIndex offset_a, StackIndex offset_b, StackIndex offset_r)
-{
-	float3 a = stack_load_float3(stack, offset_a);
-	float b = stack_load_float(stack, offset_b);
-	stack_store_float3(stack, offset_r, float3(a.x * b, a.y * b, a.z * b));
-}
-
-static void eval_op_div_float3_float(float *stack, StackIndex offset_a, StackIndex offset_b, StackIndex offset_r)
-{
-	float3 a = stack_load_float3(stack, offset_a);
-	float b = stack_load_float(stack, offset_b);
-	stack_store_float3(stack, offset_r, float3(div_safe(a.x, b), div_safe(a.y, b), div_safe(a.z, b)));
-}
-
-static void eval_op_average_float3(float *stack, StackIndex offset_a, StackIndex offset_b, StackIndex offset_r)
-{
-	float3 a = stack_load_float3(stack, offset_a);
-	float3 b = stack_load_float3(stack, offset_b);
-	stack_store_float3(stack, offset_r, float3(0.5f*(a.x+b.x), 0.5f*(a.y+b.y), 0.5f*(a.z+b.z)));
-}
-
-static void eval_op_dot_float3(float *stack, StackIndex offset_a, StackIndex offset_b, StackIndex offset_r)
-{
-	float3 a = stack_load_float3(stack, offset_a);
-	float3 b = stack_load_float3(stack, offset_b);
-	stack_store_float(stack, offset_r, a.x * b.x + a.y * b.y + a.z * b.z);
-}
-
-static void eval_op_cross_float3(float *stack, StackIndex offset_a, StackIndex offset_b, StackIndex offset_r)
-{
-	float3 a = stack_load_float3(stack, offset_a);
-	float3 b = stack_load_float3(stack, offset_b);
-	stack_store_float3(stack, offset_r, float3(a.y*b.z - a.z*b.y, a.z*b.x - a.x*b.z, a.x*b.y - a.y*b.x));
-}
-
-static void eval_op_normalize_float3(float *stack, StackIndex offset, StackIndex offset_vec, StackIndex offset_val)
-{
-	float3 v = stack_load_float3(stack, offset);
-	float l = sqrtf(v.x*v.x + v.y*v.y + v.z*v.z);
-	float f = l > 0.0f ? 1.0f/l : 0.0f;
-	float3 vec(v.x * f, v.y * f, v.z * f);
-	stack_store_float3(stack, offset_vec, vec);
-	stack_store_float(stack, offset_val, l);
-}
-
 static void eval_op_mix_rgb(float *stack, int mode, StackIndex offset_col_a, StackIndex offset_col_b, StackIndex offset_fac, StackIndex offset_r)
 {
 	fl

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list