[Bf-blender-cvs] [9b6f3d2d0af] master: Cleanup: Removed unused code in curve mask creation.

Jeroen Bakker noreply at git.blender.org
Mon Nov 22 11:25:02 CET 2021


Commit: 9b6f3d2d0af2538014e7175a00d98128749a2bd6
Author: Jeroen Bakker
Date:   Mon Nov 22 11:22:58 2021 +0100
Branches: master
https://developer.blender.org/rB9b6f3d2d0af2538014e7175a00d98128749a2bd6

Cleanup: Removed unused code in curve mask creation.

Generating curve mask for 2d texture painting had some hard-coded
parameters that eventually weren't used in the algorithm (hardness and
rotation of the brush). This patch removes these parameters.

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

M	source/blender/editors/sculpt_paint/paint_image_2d_curve_mask.cc

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

diff --git a/source/blender/editors/sculpt_paint/paint_image_2d_curve_mask.cc b/source/blender/editors/sculpt_paint/paint_image_2d_curve_mask.cc
index 639dfcdae72..a41e102b540 100644
--- a/source/blender/editors/sculpt_paint/paint_image_2d_curve_mask.cc
+++ b/source/blender/editors/sculpt_paint/paint_image_2d_curve_mask.cc
@@ -33,6 +33,18 @@
 
 namespace blender::ed::sculpt_paint {
 
+static int aa_samples_per_texel_axis(const Brush *brush, const float radius)
+{
+  int aa_samples = 1.0f / (radius * 0.20f);
+  if (brush->sampling_flag & BRUSH_PAINT_ANTIALIASING) {
+    aa_samples = clamp_i(aa_samples, 3, 16);
+  }
+  else {
+    aa_samples = 1;
+  }
+  return aa_samples;
+}
+
 /* create a mask with the falloff strength */
 static void update_curve_mask(CurveMaskCache *curve_mask_cache,
                               const Brush *brush,
@@ -45,58 +57,30 @@ static void update_curve_mask(CurveMaskCache *curve_mask_cache,
 
   unsigned short *m = curve_mask_cache->curve_mask;
 
-  int aa_samples = 1.0f / (radius * 0.20f);
-  if (brush->sampling_flag & BRUSH_PAINT_ANTIALIASING) {
-    aa_samples = clamp_i(aa_samples, 3, 16);
-  }
-  else {
-    aa_samples = 1;
-  }
-
-  /* Temporal until we have the brush properties */
-  const float hardness = 1.0f;
-  const float rotation = 0.0f;
-
-  float aa_offset = 1.0f / (2.0f * (float)aa_samples);
-  float aa_step = 1.0f / (float)aa_samples;
+  const int aa_samples = aa_samples_per_texel_axis(brush, radius);
+  const float aa_offset = 1.0f / (2.0f * (float)aa_samples);
+  const float aa_step = 1.0f / (float)aa_samples;
 
   float bpos[2];
   bpos[0] = cursor_position[0] - floorf(cursor_position[0]) + offset - aa_offset;
   bpos[1] = cursor_position[1] - floorf(cursor_position[1]) + offset - aa_offset;
 
-  const float co = cosf(DEG2RADF(rotation));
-  const float si = sinf(DEG2RADF(rotation));
-
-  float norm_factor = 65535.0f / (float)(aa_samples * aa_samples);
+  float weight_factor = 65535.0f / (float)(aa_samples * aa_samples);
 
   for (int y = 0; y < diameter; y++) {
     for (int x = 0; x < diameter; x++, m++) {
-      float total_samples = 0;
+      float total_weight = 0;
       for (int i = 0; i < aa_samples; i++) {
         for (int j = 0; j < aa_samples; j++) {
           float pixel_xy[2] = {x + (aa_step * i), y + (aa_step * j)};
-          float xy_rot[2];
           sub_v2_v2(pixel_xy, bpos);
 
-          xy_rot[0] = co * pixel_xy[0] - si * pixel_xy[1];
-          xy_rot[1] = si * pixel_xy[0] + co * pixel_xy[1];
-
-          float len = len_v2(xy_rot);
-          float p = len / radius;
-          if (hardness < 1.0f) {
-            p = (p - hardness) / (1.0f - hardness);
-            p = 1.0f - p;
-            CLAMP(p, 0.0f, 1.0f);
-          }
-          else {
-            p = 1.0;
-          }
-          float hardness_factor = 3.0f * p * p - 2.0f * p * p * p;
-          float curve = BKE_brush_curve_strength_clamped(brush, len, radius);
-          total_samples += curve * hardness_factor;
+          const float len = len_v2(pixel_xy);
+          const float sample_weight = BKE_brush_curve_strength_clamped(brush, len, radius);
+          total_weight += sample_weight;
         }
       }
-      *m = (unsigned short)(total_samples * norm_factor);
+      *m = (unsigned short)(total_weight * weight_factor);
     }
   }
 }



More information about the Bf-blender-cvs mailing list