[Bf-blender-cvs] [381ece94104] functions: extract birth moment computation
Jacques Lucke
noreply at git.blender.org
Mon Sep 2 12:31:56 CEST 2019
Commit: 381ece941047a0755fb16d0aec40e5f7a37c6182
Author: Jacques Lucke
Date: Mon Sep 2 10:48:21 2019 +0200
Branches: functions
https://developer.blender.org/rB381ece941047a0755fb16d0aec40e5f7a37c6182
extract birth moment computation
===================================================================
M source/blender/simulations/bparticles/emitters.cpp
===================================================================
diff --git a/source/blender/simulations/bparticles/emitters.cpp b/source/blender/simulations/bparticles/emitters.cpp
index 0968a682150..dffe08e88f5 100644
--- a/source/blender/simulations/bparticles/emitters.cpp
+++ b/source/blender/simulations/bparticles/emitters.cpp
@@ -212,6 +212,13 @@ static BLI_NOINLINE void sample_randomly(uint amount,
}
}
+static BLI_NOINLINE void compute_random_birth_moments(MutableArrayRef<float> r_birth_moments)
+{
+ for (float &birth_moment : r_birth_moments) {
+ birth_moment = random_float();
+ }
+}
+
void SurfaceEmitter::emit(EmitterInterface &interface)
{
if (m_object == nullptr) {
@@ -254,15 +261,17 @@ void SurfaceEmitter::emit(EmitterInterface &interface)
particles_to_emit, BLI::ref_c_array(triangles, triangle_amount), looptri_indices);
}
+ TemporaryArray<float> birth_moments(particles_to_emit);
+ compute_random_birth_moments(birth_moments);
+
Vector<float3> positions;
Vector<float3> velocities;
Vector<float> sizes;
Vector<float> birth_times;
for (uint i = 0; i < particles_to_emit; i++) {
- uint triangle_index = looptri_indices[i];
- MLoopTri triangle = triangles[triangle_index];
- float birth_moment = random_float();
+ MLoopTri triangle = triangles[looptri_indices[i]];
+ float birth_moment = birth_moments[i];
float3 v1 = verts[loops[triangle.tri[0]].v].co;
float3 v2 = verts[loops[triangle.tri[1]].v].co;
More information about the Bf-blender-cvs
mailing list