]> git.seodisparate.com - blue_noise_generation/commitdiff
Vulkan compute: minor refactoring
authorStephen Seo <seo.disparate@gmail.com>
Thu, 28 Mar 2024 07:42:56 +0000 (16:42 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Wed, 3 Apr 2024 09:22:14 +0000 (18:22 +0900)
src/blue_noise.cpp
src/blue_noise.hpp

index 725759c2764e507a27445800f5366d2c8c181e99..3063f1289c990bc1c0dad5edc79fa9d8665e820f 100644 (file)
@@ -680,7 +680,7 @@ std::optional<std::pair<int, int>> dither::internal::vulkan_minmax(
     std::array<VkDescriptorSet, 2> minmax_desc_sets, VkBuffer max_in_buf,
     VkBuffer min_in_buf, VkBuffer max_out_buf, VkBuffer min_out_buf,
     VkBuffer state_buf, const int size, const float *const filter_mapped,
-    std::vector<bool> pbp) {
+    const std::vector<bool> &pbp) {
   // ensure minority pixel is "true"
   unsigned int count = 0;
   for (bool value : pbp) {
@@ -688,17 +688,21 @@ std::optional<std::pair<int, int>> dither::internal::vulkan_minmax(
       ++count;
     }
   }
+  bool flip;
   if (count * 2 >= pbp.size()) {
-    // std::cout << "MINMAX flip\n"; // DEBUG
-    for (unsigned int i = 0; i < pbp.size(); ++i) {
-      pbp[i] = !pbp[i];
-    }
+    flip = true;
+  } else {
+    flip = false;
   }
 
   std::vector<FloatAndIndex> fai(size);
   for (int i = 0; i < size; ++i) {
     fai[i].value = filter_mapped[i];
-    fai[i].pbp = pbp[i] ? 1 : 0;
+    if (flip) {
+      fai[i].pbp = pbp[i] ? 0 : 1;
+    } else {
+      fai[i].pbp = pbp[i] ? 1 : 0;
+    }
     fai[i].idx = i;
   }
 
index 20a268f660b5753e810139d7f7ce731337de42e3..a954746cfd1dd674821a1c9c25d6c5cd1a1e7cfc 100644 (file)
@@ -197,7 +197,7 @@ std::optional<std::pair<int, int>> vulkan_minmax(
     std::array<VkDescriptorSet, 2> minmax_desc_sets, VkBuffer max_in_buf,
     VkBuffer min_in_buf, VkBuffer max_out_buf, VkBuffer min_out_buf,
     VkBuffer state_buf, const int size, const float *const filter_mapped,
-    std::vector<bool> pbp);
+    const std::vector<bool> &pbp);
 
 #endif