[Bf-blender-cvs] [7e4c4897784] functions: use particle function for gravity force
Jacques Lucke
noreply at git.blender.org
Thu Jul 25 15:10:31 CEST 2019
Commit: 7e4c48977846b7eb18d1ad81d87236baa6356e63
Author: Jacques Lucke
Date: Thu Jul 25 10:01:10 2019 +0200
Branches: functions
https://developer.blender.org/rB7e4c48977846b7eb18d1ad81d87236baa6356e63
use particle function for gravity force
===================================================================
M source/blender/simulations/bparticles/forces.cpp
M source/blender/simulations/bparticles/forces.hpp
M source/blender/simulations/bparticles/inserters.cpp
===================================================================
diff --git a/source/blender/simulations/bparticles/forces.cpp b/source/blender/simulations/bparticles/forces.cpp
index 9101e7d9271..f28fb478785 100644
--- a/source/blender/simulations/bparticles/forces.cpp
+++ b/source/blender/simulations/bparticles/forces.cpp
@@ -13,17 +13,11 @@ void GravityForce::add_force(ForceInterface &interface)
ParticlesBlock &block = interface.block();
ArrayRef<float3> destination = interface.combined_destination();
- FN_TUPLE_CALL_ALLOC_TUPLES(m_compute_acceleration_body, fn_in, fn_out);
-
- FN::ExecutionStack stack;
- FN::ExecutionContext execution_context(stack);
-
- m_compute_acceleration_body.call(fn_in, fn_out, execution_context);
-
- float3 acceleration = fn_out.get<float3>(0);
+ auto inputs = m_compute_inputs.compute(interface);
- for (uint i = 0; i < block.active_amount(); i++) {
- destination[i] += acceleration;
+ for (uint pindex = 0; pindex < block.active_amount(); pindex++) {
+ float3 acceleration = inputs->get<float3>("Direction", 0, pindex);
+ destination[pindex] += acceleration;
}
};
diff --git a/source/blender/simulations/bparticles/forces.hpp b/source/blender/simulations/bparticles/forces.hpp
index 7460a1877c2..83807f26cee 100644
--- a/source/blender/simulations/bparticles/forces.hpp
+++ b/source/blender/simulations/bparticles/forces.hpp
@@ -14,13 +14,10 @@ class Force {
class GravityForce : public Force {
private:
- SharedFunction m_compute_acceleration_fn;
- TupleCallBody &m_compute_acceleration_body;
+ ParticleFunction m_compute_inputs;
public:
- GravityForce(SharedFunction &compute_acceleration_fn)
- : m_compute_acceleration_fn(compute_acceleration_fn),
- m_compute_acceleration_body(m_compute_acceleration_fn->body<TupleCallBody>())
+ GravityForce(ParticleFunction compute_inputs) : m_compute_inputs(std::move(compute_inputs))
{
}
diff --git a/source/blender/simulations/bparticles/inserters.cpp b/source/blender/simulations/bparticles/inserters.cpp
index 4e53f85ccd7..be37daadbc1 100644
--- a/source/blender/simulations/bparticles/inserters.cpp
+++ b/source/blender/simulations/bparticles/inserters.cpp
@@ -232,7 +232,7 @@ static std::unique_ptr<Force> BUILD_FORCE_gravity(BuildContext &ctx, VirtualNode
}
SharedFunction fn = fn_or_error.extract_value();
- return std::unique_ptr<Force>(new GravityForce(fn));
+ return std::unique_ptr<Force>(new GravityForce(ParticleFunction(fn)));
}
static std::unique_ptr<Force> BUILD_FORCE_turbulence(BuildContext &ctx, VirtualNode *vnode)
More information about the Bf-blender-cvs
mailing list