Commit: b7532023812b9f3855f74a9da6f3b8986605f3a3
Author: Darshan Kadu
Date:   Sun Jun 11 18:32:04 2017 +0530
Branches: soc-2017-vertex_paint
https://developer.blender.org/rBb7532023812b9f3855f74a9da6f3b8986605f3a3

added accumulate option

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

M       release/scripts/startup/bl_ui/space_view3d_toolbar.py
M       source/blender/blenkernel/BKE_paint.h
M       source/blender/editors/sculpt_paint/paint_vertex.c
A       vpaint.txt

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

diff --git a/release/scripts/startup/bl_ui/space_view3d_toolbar.py 
b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
index 06249c807b7..fa7ab428b08 100644
--- a/release/scripts/startup/bl_ui/space_view3d_toolbar.py
+++ b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
@@ -1166,6 +1166,7 @@ class VIEW3D_PT_tools_brush(Panel, View3DPaintPanel):
             # row.prop(brush, "use_pressure_jitter", toggle=True, text="")
             col.separator()
             col.prop(brush, "vertex_tool", text="Blend")
+            col.prop(brush,"use_accumulate")
 
             col.separator()
             col.template_ID(settings, "palette", new="palette.new")
diff --git a/source/blender/blenkernel/BKE_paint.h 
b/source/blender/blenkernel/BKE_paint.h
index 9f472d3b9d1..1cc5ba3a928 100644
--- a/source/blender/blenkernel/BKE_paint.h
+++ b/source/blender/blenkernel/BKE_paint.h
@@ -214,6 +214,7 @@ typedef struct SculptSession {
                        unsigned int *tot_loops_hit;
                        float *max_weight;
                        unsigned int *previous_color;
+                       float *previous_accum;
                        bool building_vp_handle;
                } vwpaint;
                //struct {
diff --git a/source/blender/editors/sculpt_paint/paint_vertex.c 
b/source/blender/editors/sculpt_paint/paint_vertex.c
index 261cd1aeb7d..53d67dd1c0c 100644
--- a/source/blender/editors/sculpt_paint/paint_vertex.c
+++ b/source/blender/editors/sculpt_paint/paint_vertex.c
@@ -2049,6 +2049,8 @@ static void 
vertex_paint_init_session_average_arrays(Object *ob)
                        MEM_callocN(me->totvert * sizeof(float), "max_weight");
                ob->sculpt->modes.vwpaint.previous_color =
                        MEM_callocN(me->totloop * sizeof(unsigned int), 
"previous_color");
+               ob->sculpt->modes.vwpaint.previous_accum =
+                               MEM_callocN(me->totloop * sizeof(float), 
"previous_accum");
        }
 }
 
@@ -3536,6 +3538,7 @@ static bool vpaint_stroke_test_start(bContext *C, struct 
wmOperator *op, const f
 
        for (int i = 0; i < me->totloop; i++) {
                ob->sculpt->modes.vwpaint.previous_color[i] = 0;
+               ob->sculpt->modes.vwpaint.previous_accum[i] = 0.0f;
        }
 
        return 1;
@@ -3667,9 +3670,18 @@ static void do_vpaint_brush_draw_task_cb_ex(
                                                        if 
(ss->modes.vwpaint.previous_color[l_index] == 0) {
                                                                
ss->modes.vwpaint.previous_color[l_index] = lcol[l_index];
                                                        }
-                                                       const float final_alpha 
=
+                                                       float final_alpha =
                                                                255 * 
brush_fade * brush_strength * view_dot *
                                                                tex_alpha * 
brush_alpha_pressure * grid_alpha;
+                                                       float mask_accum;
+                                                       mask_accum = 
ss->modes.vwpaint.previous_accum[l_index];
+                                                       
+                                                       if 
(brush->flag&BRUSH_ACCUMULATE) {
+                                                               final_alpha = 
final_alpha + mask_accum;
+                                                       }
+                                                       
+                                                       final_alpha = 
min_ff(final_alpha, 255.0f);
+                                                       
ss->modes.vwpaint.previous_accum[l_index] = final_alpha;
                                                        /* Mix the new color 
with the original based on final_alpha. */
                                                        lcol[l_index] = 
vpaint_blend(
                                                                data->vp, 
lcol[l_index],
diff --git a/vpaint.txt b/vpaint.txt
new file mode 100644
index 00000000000..4e1aab5b0d4
--- /dev/null
+++ b/vpaint.txt
@@ -0,0 +1,50 @@
+diff --git a/source/blender/blenkernel/BKE_paint.h 
b/source/blender/blenkernel/BKE_paint.h
+index 9f472d3b9d1..1cc5ba3a928 100644
+--- a/source/blender/blenkernel/BKE_paint.h
++++ b/source/blender/blenkernel/BKE_paint.h
+@@ -214,6 +214,7 @@ typedef struct SculptSession {
+                       unsigned int *tot_loops_hit;
+                       float *max_weight;
+                       unsigned int *previous_color;
++                      float *previous_accum;
+                       bool building_vp_handle;
+               } vwpaint;
+               //struct {
+diff --git a/source/blender/editors/sculpt_paint/paint_vertex.c 
b/source/blender/editors/sculpt_paint/paint_vertex.c
+index 261cd1aeb7d..fb2838a37ba 100644
+--- a/source/blender/editors/sculpt_paint/paint_vertex.c
++++ b/source/blender/editors/sculpt_paint/paint_vertex.c
+@@ -2049,6 +2049,8 @@ static void 
vertex_paint_init_session_average_arrays(Object *ob)
+                       MEM_callocN(me->totvert * sizeof(float), "max_weight");
+               ob->sculpt->modes.vwpaint.previous_color =
+                       MEM_callocN(me->totloop * sizeof(unsigned int), 
"previous_color");
++              ob->sculpt->modes.vwpaint.previous_accum =
++                              MEM_callocN(me->totloop * sizeof(float), 
"previous_accum");
+       }
+ }
+ 
+@@ -3536,6 +3538,7 @@ static bool vpaint_stroke_test_start(bContext *C, struct 
wmOperator *op, const f
+ 
+       for (int i = 0; i < me->totloop; i++) {
+               ob->sculpt->modes.vwpaint.previous_color[i] = 0;
++              ob->sculpt->modes.vwpaint.previous_accum[i] = 0.0f;
+       }
+ 
+       return 1;
+@@ -3667,9 +3670,15 @@ static void do_vpaint_brush_draw_task_cb_ex(
+                                                       if 
(ss->modes.vwpaint.previous_color[l_index] == 0) {
+                                                               
ss->modes.vwpaint.previous_color[l_index] = lcol[l_index];
+                                                       }
+-                                                      const float final_alpha 
=
++                                                      float final_alpha =
+                                                               255 * 
brush_fade * brush_strength * view_dot *
+                                                               tex_alpha * 
brush_alpha_pressure * grid_alpha;
++                                                      float mask_accum;
++                                                      //mask_accum = 
ss->modes.vwpaint.previous_accum[l_index];
++                                                      
++                                              //      final_alpha = 
final_alpha + mask_accum;
++                                              //      final_alpha = 
min_ff(final_alpha, 255.0f);
++                                              //      
ss->modes.vwpaint.previous_accum[l_index] = final_alpha;
+                                                       /* Mix the new color 
with the original based on final_alpha. */
+                                                       lcol[l_index] = 
vpaint_blend(
+                                                               data->vp, 
lcol[l_index],

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to