[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