[Bf-blender-cvs] [bc91cba] object_nodes: Pass input arguments as const void* when calling bvm functions.

Lukas Tönne noreply at git.blender.org
Tue Dec 8 14:52:24 CET 2015


Commit: bc91cba012e0bc494ea4c86b12dd681a7f60714b
Author: Lukas Tönne
Date:   Tue Dec 8 11:11:39 2015 +0100
Branches: object_nodes
https://developer.blender.org/rBbc91cba012e0bc494ea4c86b12dd681a7f60714b

Pass input arguments as const void* when calling bvm functions.

This is not used yet, but will replace the EvalData pointer.

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

M	source/blender/blenvm/bvm/bvm_eval.cc
M	source/blender/blenvm/bvm/bvm_eval.h
M	source/blender/blenvm/intern/bvm_api.cc

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

diff --git a/source/blender/blenvm/bvm/bvm_eval.cc b/source/blender/blenvm/bvm/bvm_eval.cc
index b01c566..2d4f8c7 100644
--- a/source/blender/blenvm/bvm/bvm_eval.cc
+++ b/source/blender/blenvm/bvm/bvm_eval.cc
@@ -800,7 +800,7 @@ void EvalContext::eval_instructions(const EvalGlobals *globals, const EvalData *
 	}
 }
 
-void EvalContext::eval_function(const EvalGlobals *globals, const EvalData *data, const Function *fn, void **results) const
+void EvalContext::eval_function(const EvalGlobals *globals, const EvalData *data, const Function *fn, const void *arguments[], void *results[]) const
 {
 	float stack[BVM_STACK_SIZE] = {0};
 	
diff --git a/source/blender/blenvm/bvm/bvm_eval.h b/source/blender/blenvm/bvm/bvm_eval.h
index 646d463..c30bc3d 100644
--- a/source/blender/blenvm/bvm/bvm_eval.h
+++ b/source/blender/blenvm/bvm/bvm_eval.h
@@ -128,7 +128,7 @@ struct EvalContext {
 	EvalContext();
 	~EvalContext();
 	
-	void eval_function(const EvalGlobals *globals, const EvalData *data, const Function *fn, void **results) const;
+	void eval_function(const EvalGlobals *globals, const EvalData *data, const Function *fn, const void *arguments[], void *results[]) const;
 	void eval_expression(const EvalGlobals *globals, const EvalData *data, const Function *fn, int entry_point, float *stack) const;
 	
 protected:
diff --git a/source/blender/blenvm/intern/bvm_api.cc b/source/blender/blenvm/intern/bvm_api.cc
index a2d3223..7a64c48 100644
--- a/source/blender/blenvm/intern/bvm_api.cc
+++ b/source/blender/blenvm/intern/bvm_api.cc
@@ -283,6 +283,10 @@ struct BVMFunction *BVM_gen_forcefield_function(const struct BVMEvalGlobals *glo
 	
 	NodeGraph graph;
 	{
+		graph.add_input("effector.object", BVM_POINTER);
+		graph.add_input("effector.position", BVM_FLOAT3);
+		graph.add_input("effector.velocity", BVM_FLOAT3);
+		
 		float zero[3] = {0.0f, 0.0f, 0.0f};
 		graph.add_output("force", BVM_FLOAT3, zero);
 		graph.add_output("impulse", BVM_FLOAT3, zero);
@@ -304,12 +308,14 @@ void BVM_eval_forcefield(struct BVMEvalGlobals *globals, struct BVMEvalContext *
 	using namespace bvm;
 	
 	EvalData data;
-	RNA_id_pointer_create((ID *)effob, &data.effector.object);
-	data.effector.position = float3(point->loc[0], point->loc[1], point->loc[2]);
-	data.effector.velocity = float3(point->vel[0], point->vel[1], point->vel[2]);
+	EffectorEvalData &effdata = data.effector;
+	RNA_id_pointer_create((ID *)effob, &effdata.object);
+	effdata.position = float3(point->loc[0], point->loc[1], point->loc[2]);
+	effdata.velocity = float3(point->vel[0], point->vel[1], point->vel[2]);
+	const void *args[] = { &effdata.object, point->loc, point->vel };
 	void *results[] = { force, impulse };
 	
-	_CTX(ctx)->eval_function(_GLOBALS(globals), &data, _FUNC(fn), results);
+	_CTX(ctx)->eval_function(_GLOBALS(globals), &data, _FUNC(fn), args, results);
 }
 
 /* ------------------------------------------------------------------------- */
@@ -805,6 +811,12 @@ struct BVMFunction *BVM_gen_texture_function(const struct BVMEvalGlobals *global
 	
 	NodeGraph graph;
 	{
+		graph.add_input("texture.co", BVM_FLOAT3);
+		graph.add_input("texture.dxt", BVM_FLOAT3);
+		graph.add_input("texture.dyt", BVM_FLOAT3);
+		graph.add_input("texture.cfra", BVM_INT);
+		graph.add_input("texture.osatex", BVM_INT);
+		
 		float C[4] = {0.0f, 0.0f, 0.0f, 1.0f};
 		float N[3] = {0.0f, 0.0f, 0.0f};
 		graph.add_output("color", BVM_FLOAT4, C);
@@ -843,9 +855,10 @@ void BVM_eval_texture(struct BVMEvalContext *ctx, struct BVMFunction *fn,
 
 	float4 color;
 	float3 normal;
+	const void *args[] = { coord, dxt, dyt, &cfra, &osatex };
 	void *results[] = { &color.x, &normal.x };
 	
-	_CTX(ctx)->eval_function(&globals, &data, _FUNC(fn), results);
+	_CTX(ctx)->eval_function(&globals, &data, _FUNC(fn), args, results);
 	
 	target->tr = color.x;
 	target->tg = color.y;
@@ -932,6 +945,7 @@ struct BVMFunction *BVM_gen_modifier_function(const struct BVMEvalGlobals *globa
 	using namespace bvm;
 	
 	NodeGraph graph;
+	graph.add_input("modifier.base_mesh", BVM_POINTER);
 	graph.add_output("mesh", BVM_MESH, __empty_mesh__);
 	
 	CompileContext comp(_GLOBALS(globals));
@@ -958,10 +972,13 @@ struct DerivedMesh *BVM_eval_modifier(struct BVMEvalContext *ctx, struct BVMFunc
 	ModifierEvalData &moddata = data.modifier;
 	moddata.base_mesh = base_mesh;
 
+	PointerRNA base_mesh_ptr;
+	RNA_id_pointer_create((ID *)base_mesh, &base_mesh_ptr);
 	mesh_ptr result;
+	const void *args[] = { &base_mesh_ptr };
 	void *results[] = { &result };
 	
-	_CTX(ctx)->eval_function(&globals, &data, _FUNC(fn), results);
+	_CTX(ctx)->eval_function(&globals, &data, _FUNC(fn), args, results);
 	
 	return result.get();
 }




More information about the Bf-blender-cvs mailing list