[Bf-blender-cvs] [d33b87477c0] temp-geometry-nodes-distribute-points-cleanup: Updated status (and small cleanup)

Dalai Felinto noreply at git.blender.org
Fri Dec 11 02:00:50 CET 2020


Commit: d33b87477c01d1fc4cd8d9b5faf1c8055f55a491
Author: Dalai Felinto
Date:   Fri Dec 11 01:57:14 2020 +0100
Branches: temp-geometry-nodes-distribute-points-cleanup
https://developer.blender.org/rBd33b87477c01d1fc4cd8d9b5faf1c8055f55a491

Updated status (and small cleanup)

The code is working fine until the heap.
[x] Tiling
[x] Weighting
[-] Heap: Implemented but producing a different result than with cyHeap
[ ] Progressive

===================================================================

M	source/blender/nodes/geometry/nodes/node_geo_point_distribute_poisson_disk.cc

===================================================================

diff --git a/source/blender/nodes/geometry/nodes/node_geo_point_distribute_poisson_disk.cc b/source/blender/nodes/geometry/nodes/node_geo_point_distribute_poisson_disk.cc
index 489bc896d45..6d59b49e97b 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_point_distribute_poisson_disk.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_point_distribute_poisson_disk.cc
@@ -183,7 +183,8 @@ static void points_tiling(Vector<float3> const *input_points,
 static void weighted_sample_elimination(Vector<float3> const *input_points,
                                         Vector<float3> *output_points,
                                         const float maximum_distance,
-                                        const float3 boundbox)
+                                        const float3 boundbox,
+                                        const bool do_copy_eliminated)
 {
   const float minimum_distance = maximum_distance *
                                  weight_limit_fraction_get(input_points->size(),
@@ -232,6 +233,7 @@ static void weighted_sample_elimination(Vector<float3> const *input_points,
   }
 
   /* Copy the samples to the output array. */
+  size_t target_size = do_copy_eliminated ? input_points->size() : output_points->size();
   for (size_t i = 0; i < output_points->size(); i++) {
     size_t index = POINTER_AS_INT(BLI_heap_pop_min(heap));
     output_points->data()[i] = input_points->data()[index];
@@ -247,7 +249,7 @@ void poisson_disk_point_elimination(Vector<float3> const *input_points,
                                     float maximum_density,
                                     float3 boundbox)
 {
-  weighted_sample_elimination(input_points, output_points, maximum_density, boundbox);
+  weighted_sample_elimination(input_points, output_points, maximum_density, boundbox, false);
 
   /* Re-order the points for progressive sampling. */
 #if 0
@@ -260,7 +262,7 @@ void poisson_disk_point_elimination(Vector<float3> const *input_points,
         outSize = inSize / 2;
         // dmax *= Sqrt(2.0f)
         d_max *= ProgressiveRadiusMultiplier(dimensions);
-        //  weighted_sample_elimination(input_points, output_points, maximum_density, boundbox);
+        //  weighted_sample_elimination(input_points, output_points, maximum_density, boundbox, true);
         DoEliminate(inPts, inSize, outPts, outSize, d_max, weightFunction, true);
         if (outPts != outputPoints) {
           MemCopy(outputPoints + outSize, outPts + outSize, inSize - outSize);



More information about the Bf-blender-cvs mailing list