[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