[Bf-blender-cvs] [0fac021] soc-2016-pbvh-painting: Refactoring

Nathan Vollmer noreply at git.blender.org
Wed Sep 14 01:47:47 CEST 2016


Commit: 0fac021c2165ef4b7bf975bfbe7f41f9583276e0
Author: Nathan Vollmer
Date:   Tue Sep 13 17:47:09 2016 -0600
Branches: soc-2016-pbvh-painting
https://developer.blender.org/rB0fac021c2165ef4b7bf975bfbe7f41f9583276e0

Refactoring

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

M	release/scripts/startup/bl_ui/space_view3d_toolbar.py
M	source/blender/blenkernel/BKE_paint.h
M	source/blender/blenkernel/intern/paint.c
M	source/blender/blenlib/BLI_math_base.h
M	source/blender/blenlib/intern/math_base_inline.c
M	source/blender/blenloader/intern/versioning_defaults.c
M	source/blender/editors/sculpt_paint/paint_vertex.c

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

diff --git a/release/scripts/startup/bl_ui/space_view3d_toolbar.py b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
index ee9b7e5..7df4d59 100644
--- a/release/scripts/startup/bl_ui/space_view3d_toolbar.py
+++ b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
@@ -1702,7 +1702,6 @@ class VIEW3D_PT_tools_brush_appearance(Panel, View3DPaintPanel):
 class VIEW3D_PT_tools_weightpaint(View3DPanel, Panel):
     bl_category = "Tools"
     bl_context = "weightpaint"
-    bl_options = {'DEFAULT_CLOSED'}
     bl_label = "Weight Tools"
 
     def draw(self, context):
diff --git a/source/blender/blenkernel/BKE_paint.h b/source/blender/blenkernel/BKE_paint.h
index eb47cd8..9be9f64 100644
--- a/source/blender/blenkernel/BKE_paint.h
+++ b/source/blender/blenkernel/BKE_paint.h
@@ -204,16 +204,16 @@ typedef struct SculptSession {
 	struct SculptStroke *stroke;
 	struct StrokeCache *cache;
 
-	int *map_mem;
-	MeshElemMap* vert_to_loop;
+	int *vert_map_mem;
+	MeshElemMap *vert_to_loop;
 	int *poly_map_mem;
-	MeshElemMap* vert_to_poly;
+	MeshElemMap *vert_to_poly;
 
-	unsigned long* totalColor;
-	double* totalWeight;
-	unsigned int *totloopsHit;
-	float *maxWeight;
-	unsigned int *previousColor;
+	unsigned int *total_color;
+	double *total_weight;
+	unsigned int *tot_loops_hit;
+	float *max_weight;
+	unsigned int *previous_color;
 } SculptSession;
 
 void BKE_sculptsession_free(struct Object *ob);
diff --git a/source/blender/blenkernel/intern/paint.c b/source/blender/blenkernel/intern/paint.c
index 734d2bf..08a4308 100644
--- a/source/blender/blenkernel/intern/paint.c
+++ b/source/blender/blenkernel/intern/paint.c
@@ -750,26 +750,24 @@ void BKE_sculptsession_free(Object *ob)
 		/* Free maps */
 		if (ss->vert_to_loop)
 			MEM_freeN(ss->vert_to_loop);
-		if (ss->map_mem)
-			MEM_freeN(ss->map_mem);
+		if (ss->vert_map_mem)
+			MEM_freeN(ss->vert_map_mem);
 		if (ss->vert_to_poly)
 			MEM_freeN(ss->vert_to_poly);
 		if (ss->poly_map_mem)
 			MEM_freeN(ss->poly_map_mem);
 
-		/* Free average brush arrays */
-		if (ob->sculpt->totloopsHit)
-			MEM_freeN(ob->sculpt->totloopsHit);
-
-		if (ob->sculpt->totalColor)
-			MEM_freeN(ob->sculpt->totalColor);
-
-		MEM_freeN(ob->sculpt->totalWeight);
-
-		if (ob->sculpt->maxWeight)
-			MEM_freeN(ob->sculpt->maxWeight);
-		if (ob->sculpt->previousColor)
-			MEM_freeN(ob->sculpt->previousColor);
+		/* Free average, blur, and spray brush arrays */
+		if (ob->sculpt->tot_loops_hit)
+			MEM_freeN(ob->sculpt->tot_loops_hit);
+		if (ob->sculpt->total_color)
+			MEM_freeN(ob->sculpt->total_color);
+		if (ob->sculpt->total_weight)
+		  MEM_freeN(ob->sculpt->total_weight);
+		if (ob->sculpt->max_weight)
+			MEM_freeN(ob->sculpt->max_weight);
+		if (ob->sculpt->previous_color)
+			MEM_freeN(ob->sculpt->previous_color);
 
 		MEM_freeN(ss);
 
diff --git a/source/blender/blenlib/BLI_math_base.h b/source/blender/blenlib/BLI_math_base.h
index 5751aee..e97a250 100644
--- a/source/blender/blenlib/BLI_math_base.h
+++ b/source/blender/blenlib/BLI_math_base.h
@@ -205,7 +205,6 @@ MINLINE unsigned int power_of_2_min_u(unsigned int x);
 
 MINLINE int iroundf(float a);
 MINLINE int divide_round_i(int a, int b);
-MINLINE unsigned long divide_round_ul(unsigned long a, unsigned long b);
 MINLINE int mod_i(int i, int n);
 
 int pow_i(int base, int exp);
diff --git a/source/blender/blenlib/intern/math_base_inline.c b/source/blender/blenlib/intern/math_base_inline.c
index e7362ed..8d2d80c 100644
--- a/source/blender/blenlib/intern/math_base_inline.c
+++ b/source/blender/blenlib/intern/math_base_inline.c
@@ -193,11 +193,6 @@ MINLINE int divide_round_i(int a, int b)
 	return (2 * a + b) / (2 * b);
 }
 
-MINLINE unsigned long divide_round_ul(unsigned long a, unsigned long b)
-{
-  return (2 * a + b) / (2 * b);
-}
-
 /**
  * modulo that handles negative numbers, works the same as Python's.
  */
diff --git a/source/blender/blenloader/intern/versioning_defaults.c b/source/blender/blenloader/intern/versioning_defaults.c
index 8ca5dbe..46e5038 100644
--- a/source/blender/blenloader/intern/versioning_defaults.c
+++ b/source/blender/blenloader/intern/versioning_defaults.c
@@ -94,14 +94,12 @@ void BLO_update_defaults_startup_blend(Main *bmain)
 				sculpt->detail_size = 12;
 			}
 			
-			if (ts->vpaint)
-			{
+			if (ts->vpaint) {
 				VPaint *vp = ts->vpaint;
 				vp->radial_symm[0] = vp->radial_symm[1] = vp->radial_symm[2] = 1;
 			}
 
-			if (ts->wpaint)
-			{
+			if (ts->wpaint) {
 				VPaint *wp = ts->wpaint;
 				wp->radial_symm[0] = wp->radial_symm[1] = wp->radial_symm[2] = 1;
 			}
diff --git a/source/blender/editors/sculpt_paint/paint_vertex.c b/source/blender/editors/sculpt_paint/paint_vertex.c
index c2ce7be..0945b59 100644
--- a/source/blender/editors/sculpt_paint/paint_vertex.c
+++ b/source/blender/editors/sculpt_paint/paint_vertex.c
@@ -1728,11 +1728,11 @@ static void vertex_paint_init_session(Scene *scene, Object *ob)
 static void vertex_paint_init_session_maps(Object *ob) {
 	/* Create maps */
 	Mesh *me = ob->data;
-	ob->sculpt->map_mem = NULL;
+	ob->sculpt->vert_map_mem = NULL;
 	ob->sculpt->vert_to_loop = NULL;
 	ob->sculpt->poly_map_mem = NULL;
 	ob->sculpt->vert_to_poly = NULL;
-	BKE_mesh_vert_loop_map_create(&ob->sculpt->vert_to_loop, &ob->sculpt->map_mem, me->mpoly, me->mloop, me->totvert, me->totpoly, me->totloop);
+	BKE_mesh_vert_loop_map_create(&ob->sculpt->vert_to_loop, &ob->sculpt->vert_map_mem, me->mpoly, me->mloop, me->totvert, me->totpoly, me->totloop);
 	BKE_mesh_vert_poly_map_create(&ob->sculpt->vert_to_poly, &ob->sculpt->poly_map_mem, me->mpoly, me->mloop, me->totvert, me->totpoly, me->totloop);
 }
 
@@ -1744,11 +1744,11 @@ static void vertex_paint_init_session_average_arrays(Object *ob){
 	Mesh *me = BKE_mesh_from_object(ob);
 
 	//Need unsigned long to prevent overflow when averaging multiple whites, which take up an entire unsigned int each.
-	ob->sculpt->totalColor = MEM_callocN(totNode * 3 * sizeof(unsigned long), "totalColor");
-	ob->sculpt->totalWeight = MEM_callocN(totNode * sizeof(double), "totalWeight");
-	ob->sculpt->totloopsHit = MEM_callocN(totNode * sizeof(unsigned int), "totloopsHit");
-  ob->sculpt->maxWeight = MEM_callocN(me->totvert * sizeof(float), "maxWeight");
-  ob->sculpt->previousColor = MEM_callocN(me->totloop * sizeof(unsigned int), "previousColor");
+	ob->sculpt->total_color = MEM_callocN(totNode * 3 * sizeof(unsigned int), "total_color");
+	ob->sculpt->total_weight = MEM_callocN(totNode * sizeof(double), "total_weight");
+	ob->sculpt->tot_loops_hit = MEM_callocN(totNode * sizeof(unsigned int), "tot_loops_hit");
+	ob->sculpt->max_weight = MEM_callocN(me->totvert * sizeof(float), "max_weight");
+	ob->sculpt->previous_color = MEM_callocN(me->totloop * sizeof(unsigned int), "previous_color");
 }
 
 /* *************** set wpaint operator ****************** */
@@ -2184,13 +2184,13 @@ static bool wpaint_stroke_test_start(bContext *C, wmOperator *op, const float mo
 	if (!ob->sculpt->vert_to_loop)
 		vertex_paint_init_session_maps(ob);
 
-	if (!ob->sculpt->totloopsHit)
+	if (!ob->sculpt->tot_loops_hit)
 		vertex_paint_init_session_average_arrays(ob);
 
 	vwpaint_update_cache_invariants(C, vd, ss, op, mouse);
 
-  for (int i = 0; i < me->totvert; ++i)
-    ss->maxWeight[i] = -1.0;
+	for (int i = 0; i < me->totvert; ++i)
+		ss->max_weight[i] = -1.0;
 
 	return true;
 }
@@ -2329,7 +2329,7 @@ static void calc_area_normal(
 static float dot_vf3vs3(const float brushNormal[3], const short vertexNormal[3]){
 	float normal[3];
 	normal_short_to_float_v3(normal, vertexNormal);
-	return dot_v3v3(brushNormal, normal);;
+	return dot_v3v3(brushNormal, normal);
 }
 
 /* Flip all the editdata across the axis/axes specified by symm. Used to
@@ -2377,7 +2377,7 @@ static void do_wpaint_brush_blur_task_cb_ex(
   StrokeCache *cache = ss->cache;
   const float bstrength = cache->bstrength;
 
-  int totalHitLoops;
+  int total_hit_loops;
   double finalColor;
 
   //for each vertex
@@ -2393,14 +2393,14 @@ static void do_wpaint_brush_blur_task_cb_ex(
       const int vertexIndex = vd.vert_indices[vd.i];
 
       //Get the average poly color
-      totalHitLoops = 0;
+      total_hit_loops = 0;
       finalColor = 0;
 
       for (int j = 0; j < ss->vert_to_poly[vertexIndex].count; j++) {
         int polyIndex = ss->vert_to_poly[vertexIndex].indices[j];
         MPoly poly = data->me->mpoly[polyIndex];
 
-        totalHitLoops += poly.totloop;
+        total_hit_loops += poly.totloop;
         for (int k = 0; k < poly.totloop; ++k) {
           int loopIndex = poly.loopstart + k;
           MLoop loop = data->me->mloop[loopIndex];
@@ -2409,11 +2409,11 @@ static void do_wpaint_brush_blur_task_cb_ex(
           finalColor += dw->weight;
         }
       }
-      if (totalHitLoops != 0) {
+      if (total_hit_loops != 0) {
         const float fade = BKE_brush_curve_strength(brush, test.dist, cache->radius);
         const float dot = dot_vf3vs3(cache->sculpt_normal_symm, vd.no);
 
-        finalColor /= totalHitLoops;
+        finalColor /= total_hit_loops;
         if (dot > 0.0) {
           do_weight_paint_vertex(data->vp, data->ob, data->wpi, vertexIndex, dot * fade * bstrength, (float)finalColor);
         }
@@ -2514,27 +2514,30 @@ static void do_wpaint_brush_draw_task_cb_ex(
       const int vertexIndex = vd.vert_indices[vd.i];
       const float dot = dot_vf3vs3(cache->sculpt_normal_symm, vd.no);
       const float fade = BKE_brush_curve_strength(brush, test.dist, cache->radius);
-      float actualStrength = bstrength * fade * dot;
+      const float brush_alpha_value = BKE_brush_alpha_get(scene, brush);
+      const float brush_alpha_pressure =
+	      brush_alpha_value * (BKE_brush_use_alpha_pressure(scene, brush) ? ss->cache->pressure : 1.0f);
+      float actualStrength = bstrength * fade * dot * brush_alpha_pressure;
       float currentWeight;
 
       //Spray logic
       if (!(data->vp->flag & VP_SPRAY)) {
-        MDeformVert *dv = &data->me->dvert[vertexIndex];
-        MDeformWeight *dw;
-        dw = (data->vp->flag & VP_ONLYVGROUP) ? defvert_find_index(dv, data->wpi->active.index) :
-                                                defvert_verify_index(dv, data->wpi->active.index);
-        currentWeight = dw-

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list