[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