[Bf-blender-cvs] [a80ffa4bc5f] functions: cleanup usage of IndexMask
Jacques Lucke
noreply at git.blender.org
Sun Dec 22 14:25:52 CET 2019
Commit: a80ffa4bc5f6f91f2545157dd5ba015145dea949
Author: Jacques Lucke
Date: Sun Dec 22 12:37:42 2019 +0100
Branches: functions
https://developer.blender.org/rBa80ffa4bc5f6f91f2545157dd5ba015145dea949
cleanup usage of IndexMask
===================================================================
M source/blender/simulations/bparticles/actions.cpp
M source/blender/simulations/bparticles/event_interface.hpp
M source/blender/simulations/bparticles/events.cpp
M source/blender/simulations/bparticles/particle_action.cpp
M source/blender/simulations/bparticles/particle_action.hpp
===================================================================
diff --git a/source/blender/simulations/bparticles/actions.cpp b/source/blender/simulations/bparticles/actions.cpp
index cc484f98128..3f74a447260 100644
--- a/source/blender/simulations/bparticles/actions.cpp
+++ b/source/blender/simulations/bparticles/actions.cpp
@@ -29,7 +29,7 @@ static void update_position_and_velocity_offsets(ParticleActionContext &context)
auto position_offsets = attribute_offsets.try_get<float3>("Position");
auto velocity_offsets = attribute_offsets.try_get<float3>("Velocity");
- for (uint pindex : context.pindex_mask().indices()) {
+ for (uint pindex : context.mask()) {
float3 velocity = velocities[pindex];
if (position_offsets.has_value()) {
@@ -43,11 +43,11 @@ static void update_position_and_velocity_offsets(ParticleActionContext &context)
void ConditionAction::execute(ParticleActionContext &context)
{
- ParticleFunctionEvaluator inputs{m_inputs_fn, context.pindex_mask(), context.attributes()};
+ ParticleFunctionEvaluator inputs{m_inputs_fn, context.mask(), context.attributes()};
inputs.compute();
Vector<uint> true_pindices, false_pindices;
- for (uint pindex : context.pindex_mask().indices()) {
+ for (uint pindex : context.mask()) {
if (inputs.get_single<bool>("Condition", 0, pindex)) {
true_pindices.append(pindex);
}
@@ -71,10 +71,10 @@ void SetAttributeAction::execute(ParticleActionContext &context)
GenericMutableArrayRef attribute = *attribute_opt;
- ParticleFunctionEvaluator inputs{m_inputs_fn, context.pindex_mask(), context.attributes()};
+ ParticleFunctionEvaluator inputs{m_inputs_fn, context.mask(), context.attributes()};
inputs.compute();
- for (uint pindex : context.pindex_mask().indices()) {
+ for (uint pindex : context.mask()) {
const void *value = inputs.get_single("Value", 0, pindex);
void *dst = attribute[pindex];
m_attribute_type.copy_to_initialized(value, dst);
@@ -90,7 +90,7 @@ using FN::MFParamType;
void SpawnParticlesAction::execute(ParticleActionContext &context)
{
- if (context.pindex_mask().size() == 0) {
+ if (context.mask().size() == 0) {
return;
}
@@ -100,9 +100,9 @@ void SpawnParticlesAction::execute(ParticleActionContext &context)
}
ArrayRef<float> current_times = current_time_context->current_times;
- uint array_size = context.pindex_mask().min_array_size();
+ uint array_size = context.mask().min_array_size();
- ParticleFunctionEvaluator inputs{m_spawn_function, context.pindex_mask(), context.attributes()};
+ ParticleFunctionEvaluator inputs{m_spawn_function, context.mask(), context.attributes()};
inputs.compute();
LargeScopedArray<int> particle_counts(array_size, -1);
@@ -112,28 +112,28 @@ void SpawnParticlesAction::execute(ParticleActionContext &context)
MFParamType param_type = fn.param_type(param_index);
if (param_type.is_vector_output()) {
FN::GenericVectorArray &vector_array = inputs.computed_vector_array(param_index);
- for (uint i : context.pindex_mask().indices()) {
+ for (uint i : context.mask()) {
FN::GenericArrayRef array = vector_array[i];
particle_counts[i] = std::max<int>(particle_counts[i], array.size());
}
}
}
- for (uint i : context.pindex_mask().indices()) {
+ for (uint i : context.mask()) {
if (particle_counts[i] == -1) {
particle_counts[i] = 1;
}
}
uint total_spawn_amount = 0;
- for (uint i : context.pindex_mask().indices()) {
+ for (uint i : context.mask()) {
total_spawn_amount += particle_counts[i];
}
StringMap<GenericMutableArrayRef> attribute_arrays;
Vector<float> new_birth_times;
- for (uint i : context.pindex_mask().indices()) {
+ for (uint i : context.mask()) {
new_birth_times.append_n_times(current_times[i], particle_counts[i]);
}
attribute_arrays.add_new("Birth Time", new_birth_times.as_mutable_ref());
@@ -151,7 +151,7 @@ void SpawnParticlesAction::execute(ParticleActionContext &context)
GenericArrayRef computed_array = inputs.computed_array(param_index);
uint current = 0;
- for (uint i : context.pindex_mask().indices()) {
+ for (uint i : context.mask()) {
uint amount = particle_counts[i];
array.slice(current, amount).fill__uninitialized(computed_array[i]);
current += amount;
@@ -167,7 +167,7 @@ void SpawnParticlesAction::execute(ParticleActionContext &context)
FN::GenericVectorArray &computed_vector_array = inputs.computed_vector_array(param_index);
uint current = 0;
- for (uint pindex : context.pindex_mask().indices()) {
+ for (uint pindex : context.mask()) {
uint amount = particle_counts[pindex];
GenericMutableArrayRef array_slice = array.slice(current, amount);
GenericArrayRef computed_array = computed_vector_array[pindex];
@@ -212,7 +212,7 @@ void SpawnParticlesAction::execute(ParticleActionContext &context)
attribute_arrays.foreach_key_value_pair(
[&](StringRef attribute_name, GenericMutableArrayRef array) {
if (attribute_name != "Birth Time") {
- array.destruct_indices(context.pindex_mask().indices());
+ array.destruct_indices(context.mask());
MEM_freeN(array.buffer());
}
});
diff --git a/source/blender/simulations/bparticles/event_interface.hpp b/source/blender/simulations/bparticles/event_interface.hpp
index 1fd100dc1f7..de46f85bf94 100644
--- a/source/blender/simulations/bparticles/event_interface.hpp
+++ b/source/blender/simulations/bparticles/event_interface.hpp
@@ -14,7 +14,7 @@ using BLI::IndexMask;
*/
class EventFilterInterface : public BlockStepDataAccess {
private:
- IndexMask m_index_mask;
+ IndexMask m_mask;
ArrayRef<float> m_known_min_time_factors;
Vector<uint> &m_filtered_pindices;
@@ -22,12 +22,12 @@ class EventFilterInterface : public BlockStepDataAccess {
public:
EventFilterInterface(BlockStepData &step_data,
- IndexMask index_mask,
+ IndexMask mask,
ArrayRef<float> known_min_time_factors,
Vector<uint> &r_filtered_pindices,
Vector<float> &r_filtered_time_factors)
: BlockStepDataAccess(step_data),
- m_index_mask(index_mask),
+ m_mask(mask),
m_known_min_time_factors(known_min_time_factors),
m_filtered_pindices(r_filtered_pindices),
m_filtered_time_factors(r_filtered_time_factors)
@@ -37,9 +37,9 @@ class EventFilterInterface : public BlockStepDataAccess {
/**
* Return the indices that should be checked.
*/
- IndexMask index_mask()
+ IndexMask mask()
{
- return m_index_mask;
+ return m_mask;
}
/**
diff --git a/source/blender/simulations/bparticles/events.cpp b/source/blender/simulations/bparticles/events.cpp
index 1a4f366d8f2..4e53c1aed4f 100644
--- a/source/blender/simulations/bparticles/events.cpp
+++ b/source/blender/simulations/bparticles/events.cpp
@@ -14,14 +14,14 @@ void AgeReachedEvent::filter(EventFilterInterface &interface)
{
AttributesRef attributes = interface.attributes();
- ParticleFunctionEvaluator inputs{m_inputs_fn, interface.index_mask(), interface.attributes()};
+ ParticleFunctionEvaluator inputs{m_inputs_fn, interface.mask(), interface.attributes()};
inputs.compute();
float end_time = interface.step_end_time();
auto birth_times = attributes.get<float>("Birth Time");
auto was_activated_before = attributes.get<bool>(m_is_triggered_attribute);
- for (uint pindex : interface.index_mask().indices()) {
+ for (uint pindex : interface.mask()) {
if (was_activated_before[pindex]) {
continue;
}
@@ -64,13 +64,13 @@ void CustomEvent::filter(EventFilterInterface &interface)
FN::EventFilterEndTimeContext end_time_context = {interface.step_end_time()};
FN::EventFilterDurationsContext durations_context = {interface.remaining_durations()};
- ParticleFunctionEvaluator inputs{m_inputs_fn, interface.index_mask(), interface.attributes()};
+ ParticleFunctionEvaluator inputs{m_inputs_fn, interface.mask(), interface.attributes()};
inputs.context_builder().add_global_context(end_time_context);
inputs.context_builder().add_element_context(durations_context,
FN::MFElementContextIndices::FromDirectMapping());
inputs.compute();
- for (uint pindex : interface.index_mask().indices()) {
+ for (uint pindex : interface.mask()) {
bool condition = inputs.get_single<bool>("Condition", 0, pindex);
if (condition) {
float time_factor = inputs.get_single<float>("Time Factor", 1, pindex);
@@ -97,7 +97,7 @@ void MeshCollisionEvent::filter(EventFilterInterface &interface)
uint current_update_index = interface.simulation_state().time().current_update_index();
- for (uint pindex : interface.index_mask().indices()) {
+ for (uint pindex : interface.mask()) {
if (last_collision_step[pindex] == current_update_index) {
continue;
}
diff --git a/source/blender/simulations/bparticles/particle_action.cpp b/source/blender/simulations/bparticles/particle_action.cpp
index f82a69df4d4..77388d08f75 100644
--- a/source/blender/simulations/bparticles/particle_action.cpp
+++ b/source/blender/simulations/bparticles/particle_action.cpp
@@ -82,11 +82,10 @@ void ParticleAction::execute_from_event(EventExecuteInterface &event_interface)
this->execute(context);
}
-void ParticleAction::execute_for_subset(IndexMask pindex_mask,
- ParticleActionContext &parent_context)
+void ParticleAction::execute_for_subset(IndexMask mask, ParticleActionContext &parent_context)
{
ParticleActionContext context(parent_context.particle_allocator(),
- pindex_mask,
+ mask,
parent_context.attributes(),
parent_context.custom_context_ids(),
parent_context.custom_contexts());
diff --git a/source/blender/simulations/bparticles/particle_action.hpp b/source/blender/simulations/bparticles/particle_action.hpp
index
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list