Merge branch 'blender-v2.81-release'
authorPablo Dobarro <pablodp606@gmail.com>
Thu, 31 Oct 2019 13:46:47 +0000 (14:46 +0100)
committerPablo Dobarro <pablodp606@gmail.com>
Thu, 31 Oct 2019 13:46:47 +0000 (14:46 +0100)
release/scripts/startup/bl_ui/properties_paint_common.py
source/blender/blenkernel/intern/brush.c
source/blender/blenloader/intern/versioning_defaults.c
source/blender/editors/sculpt_paint/paint_image_2d.c
source/blender/makesdna/DNA_brush_defaults.h
source/blender/makesdna/DNA_brush_types.h
source/blender/makesrna/intern/rna_brush.c

index 7b82878c58f0a1984f6172e39b08a3d7b0138787..98e812cf02d2eb68e05bdd5f08f57c3664185614 100644 (file)
@@ -199,6 +199,8 @@ def brush_texpaint_common_options(_panel, _context, layout, brush, _settings, *,
 
     if projpaint:
         col.prop(brush, "use_alpha")
+    else:
+        col.prop(brush, "use_paint_antialiasing")
 
 
 # Used in both the View3D toolbar and texture properties
index fe740f4898ed807425f775ff72174a160f32eed5..73b7b1e2858d6f3e5ff38e3c932e1249ab05a448 100644 (file)
@@ -84,6 +84,7 @@ static void brush_defaults(Brush *brush)
   FROM_DEFAULT(normal_weight);
   FROM_DEFAULT(fill_threshold);
   FROM_DEFAULT(flag);
+  FROM_DEFAULT(sampling_flag);
   FROM_DEFAULT_PTR(rgb);
   FROM_DEFAULT_PTR(secondary_rgb);
   FROM_DEFAULT(spacing);
index c9fb8b6990bfc932604c0b134c3342b059ca0369..9fce89558b6dd1458eb1c114ae89339e1d80753f 100644 (file)
@@ -435,6 +435,9 @@ void BLO_update_defaults_startup_blend(Main *bmain, const char *app_template)
      * Note that sculpt is an exception,
      * it's values are overwritten by #BKE_brush_sculpt_reset below. */
     brush->alpha = 1.0;
+
+    /* Enable antialiasing by default */
+    brush->sampling_flag |= BRUSH_PAINT_ANTIALIASING;
   }
 
   {
index 9c95a3cee4dd4ef32ffdb8c6392d81df58a05315..a1e67e78a10a834ee48932bcb4e2c49d75af6b42 100644 (file)
@@ -387,7 +387,12 @@ static unsigned short *brush_painter_curve_mask_new(BrushPainter *painter,
   m = mask;
 
   int aa_samples = 1.0f / (radius * 0.20f);
-  aa_samples = clamp_i(aa_samples, 3, 16);
+  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;
index 714c205cda29dcff49f7a85e8cca92fee17a7a67..b2d4124a348cfcc0fc0d870b0ac8eb9a430b0ef8 100644 (file)
@@ -34,6 +34,7 @@
   { \
     .blend = 0, \
     .flag = (BRUSH_ALPHA_PRESSURE | BRUSH_SPACE | BRUSH_SPACE_ATTEN), \
+    .sampling_flag = (BRUSH_PAINT_ANTIALIASING), \
  \
     .ob_mode = OB_MODE_ALL_PAINT, \
  \
index fc8763f15193e7094efc7d3ec7e4810269d23c37..63fbf576bba7d65318c9136a6b2e9e07ae565039 100644 (file)
@@ -245,8 +245,9 @@ typedef struct Brush {
   float weight;
   /** Brush diameter. */
   int size;
-  /** General purpose flag. */
+  /** General purpose flags. */
   int flag;
+  int sampling_flag;
   /** Pressure influence for mask. */
   int mask_pressure;
   /** Jitter the position of the brush. */
@@ -283,7 +284,7 @@ typedef struct Brush {
   /** Source for fill tool color gradient application. */
   char gradient_fill_mode;
 
-  char _pad;
+  char _pad[5];
   /** Projection shape (sphere, circle). */
   char falloff_shape;
   float falloff_angle;
@@ -435,6 +436,11 @@ typedef enum eBrushFlags {
   BRUSH_CURVE = (1u << 31),
 } eBrushFlags;
 
+/* Brush.sampling_flag */
+typedef enum eBrushSamplingFlags {
+  BRUSH_PAINT_ANTIALIASING = (1 << 0),
+} eBrushSamplingFlags;
+
 typedef enum {
   BRUSH_MASK_PRESSURE_RAMP = (1 << 1),
   BRUSH_MASK_PRESSURE_CUTOFF = (1 << 2),
index 99c1bdfdbee0d2e20241bcb883e856e7e189439c..a392e4c080fa7d687a0117f8484756fd36dfeba3 100644 (file)
@@ -2007,6 +2007,11 @@ static void rna_def_brush(BlenderRNA *brna)
       "Apply the maximum grab strength to the active vertex instead of the cursor location");
   RNA_def_property_update(prop, 0, "rna_Brush_update");
 
+  prop = RNA_def_property(srna, "use_paint_antialiasing", PROP_BOOLEAN, PROP_NONE);
+  RNA_def_property_boolean_sdna(prop, NULL, "sampling_flag", BRUSH_PAINT_ANTIALIASING);
+  RNA_def_property_ui_text(prop, "Antialasing", "Smooths the edges of the strokes");
+  RNA_def_property_update(prop, 0, "rna_Brush_update");
+
   prop = RNA_def_property(srna, "use_pressure_strength", PROP_BOOLEAN, PROP_NONE);
   RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_ALPHA_PRESSURE);
   RNA_def_property_ui_icon(prop, ICON_STYLUS_PRESSURE, 0);