Revision: 46524
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=46524
Author:   nicholasbishop
Date:     2012-05-10 20:34:54 +0000 (Thu, 10 May 2012)
Log Message:
-----------
Use paint mask when calculating sculpt strength.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/sculpt_paint/sculpt.c

Modified: trunk/blender/source/blender/editors/sculpt_paint/sculpt.c
===================================================================
--- trunk/blender/source/blender/editors/sculpt_paint/sculpt.c  2012-05-10 
20:34:47 UTC (rev 46523)
+++ trunk/blender/source/blender/editors/sculpt_paint/sculpt.c  2012-05-10 
20:34:54 UTC (rev 46524)
@@ -699,10 +699,11 @@
 
 /* Return a multiplier for brush strength on a particular vertex. */
 static float tex_strength(SculptSession *ss, Brush *br, float point[3],
-                          const float len,
-                          const float sculpt_normal[3],
-                          const short vno[3],
-                          const float fno[3])
+                                                 const float len,
+                                                 const float sculpt_normal[3],
+                                                 const short vno[3],
+                                                 const float fno[3],
+                                                 const float mask)
 {
        MTex *mtex = &br->mtex;
        float avg = 1;
@@ -797,6 +798,9 @@
 
        avg *= frontface(br, sculpt_normal, vno, fno);
 
+       /* Paint mask */
+       avg *= 1.0f - mask;
+
        return avg;
 }
 
@@ -1027,8 +1031,8 @@
 
        BLI_pbvh_vertex_iter_begin(ss->pbvh, node, vd, PBVH_ITER_UNIQUE) {
                if (sculpt_brush_test(&test, vd.co)) {
-                       const float fade = bstrength * tex_strength(ss, brush, 
vd.co, test.dist,
-                                                                   
ss->cache->view_normal, vd.no, vd.fno);
+                       const float fade = bstrength*tex_strength(ss, brush, 
vd.co, test.dist,
+                                                                               
                          ss->cache->view_normal, vd.no, vd.fno, *vd.mask);
                        float avg[3], val[3];
 
                        neighbor_average(ss, avg, vd.vert_indices[vd.i]);
@@ -1108,6 +1112,7 @@
                        for (x = 0; x < gridsize; ++x) {
                                float *co;
                                float *fno;
+                               float *mask;
                                int index;
 
                                if (x == 0 && adj->index[0] == -1)
@@ -1125,10 +1130,11 @@
                                index = x + y*gridsize;
                                co = CCG_elem_offset_co(&key, data, index);
                                fno = CCG_elem_offset_no(&key, data, index);
+                               mask = CCG_elem_offset_no(&key, data, index);
 
                                if (sculpt_brush_test(&test, co)) {
-                                       const float fade = bstrength * 
tex_strength(ss, brush, co, test.dist,
-                                                                               
    ss->cache->view_normal, NULL, fno);
+                                       const float fade = 
bstrength*tex_strength(ss, brush, co, test.dist,
+                                                                               
  ss->cache->view_normal, NULL, fno, *mask);
                                        float *avg, val[3];
                                        float n;
 
@@ -1226,7 +1232,7 @@
                        if (sculpt_brush_test(&test, vd.co)) {
                                /* offset vertex */
                                float fade = tex_strength(ss, brush, vd.co, 
test.dist,
-                                                         area_normal, vd.no, 
vd.fno);
+                                                                               
  area_normal, vd.no, vd.fno, *vd.mask);
 
                                mul_v3_v3fl(proxy[vd.i], offset, fade);
 
@@ -1282,7 +1288,7 @@
                        if (sculpt_brush_test(&test, vd.co)) {
                                /* offset vertex */
                                const float fade = tex_strength(ss, brush, 
vd.co, test.dist,
-                                                               area_normal, 
vd.no, vd.fno);
+                                                               area_normal, 
vd.no, vd.fno, *vd.mask);
                                float val1[3];
                                float val2[3];
 
@@ -1322,8 +1328,9 @@
 
                BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, 
PBVH_ITER_UNIQUE) {
                        if (sculpt_brush_test(&test, vd.co)) {
-                               float fade = bstrength * tex_strength(ss, 
brush, vd.co, test.dist,
-                                                                     
ss->cache->view_normal, vd.no, vd.fno);
+                               float fade = bstrength*tex_strength(ss, brush, 
vd.co, test.dist,
+                                                                               
                        ss->cache->view_normal, vd.no,
+                                                                               
                        vd.fno, *vd.mask);
                                float val[3];
 
                                sub_v3_v3v3(val, test.location, vd.co);
@@ -1384,8 +1391,8 @@
                BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, 
PBVH_ITER_UNIQUE)
                {
                        if (sculpt_brush_test(&test, origco[vd.i])) {
-                               const float fade = bstrength * tex_strength(ss, 
brush, origco[vd.i], test.dist,
-                                                                           an, 
origno[vd.i], NULL);
+                               const float fade = bstrength*tex_strength(ss, 
brush, origco[vd.i], test.dist,
+                                                                         an, 
origno[vd.i], NULL, *vd.mask);
 
                                mul_v3_v3fl(proxy[vd.i], grab_delta, fade);
 
@@ -1426,8 +1433,8 @@
 
                BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, 
PBVH_ITER_UNIQUE) {
                        if (sculpt_brush_test(&test, vd.co)) {
-                               const float fade = bstrength * tex_strength(ss, 
brush, vd.co, test.dist,
-                                                                           an, 
vd.no, vd.fno);
+                               const float fade = bstrength*tex_strength(ss, 
brush, vd.co, test.dist,
+                                                                               
                                  an, vd.no, vd.fno, *vd.mask);
 
                                mul_v3_v3fl(proxy[vd.i], cono, fade);
 
@@ -1476,8 +1483,8 @@
 
                BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, 
PBVH_ITER_UNIQUE) {
                        if (sculpt_brush_test(&test, vd.co)) {
-                               const float fade = bstrength * tex_strength(ss, 
brush, vd.co, test.dist,
-                                                                           an, 
vd.no, vd.fno);
+                               const float fade = bstrength*tex_strength(ss, 
brush, vd.co, test.dist,
+                                                                         an, 
vd.no, vd.fno, *vd.mask);
 
                                mul_v3_v3fl(proxy[vd.i], grab_delta, fade);
 
@@ -1525,8 +1532,8 @@
 
                BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, 
PBVH_ITER_UNIQUE) {
                        if (sculpt_brush_test(&test, origco[vd.i])) {
-                               const float fade = bstrength * tex_strength(ss, 
brush, origco[vd.i], test.dist,
-                                                                           an, 
origno[vd.i], NULL);
+                               const float fade = bstrength*tex_strength(ss, 
brush, origco[vd.i], test.dist,
+                                                                               
                                  an, origno[vd.i], NULL, *vd.mask);
 
                                mul_v3_v3fl(proxy[vd.i], cono, fade);
 
@@ -1579,8 +1586,8 @@
 
                BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, 
PBVH_ITER_UNIQUE) {
                        if (sculpt_brush_test(&test, origco[vd.i])) {
-                               const float fade = bstrength * tex_strength(ss, 
brush, origco[vd.i], test.dist,
-                                                                           an, 
origno[vd.i], NULL);
+                               const float fade = bstrength*tex_strength(ss, 
brush, origco[vd.i], test.dist,
+                                                                         an, 
origno[vd.i], NULL, *vd.mask);
 
                                mul_v3_m4v3(proxy[vd.i], m, origco[vd.i]);
                                sub_v3_v3(proxy[vd.i], origco[vd.i]);
@@ -1632,8 +1639,8 @@
 
                BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, 
PBVH_ITER_UNIQUE) {
                        if (sculpt_brush_test(&test, origco[vd.i])) {
-                               const float fade = bstrength * tex_strength(ss, 
brush, vd.co, test.dist,
-                                                                           
area_normal, vd.no, vd.fno);
+                               const float fade = bstrength*tex_strength(ss, 
brush, vd.co, test.dist,
+                                                                               
                                  area_normal, vd.no, vd.fno, *vd.mask);
                                float *disp = &layer_disp[vd.i];
                                float val[3];
 
@@ -1684,8 +1691,8 @@
 
                BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, 
PBVH_ITER_UNIQUE) {
                        if (sculpt_brush_test(&test, vd.co)) {
-                               const float fade = bstrength * tex_strength(ss, 
brush, vd.co, test.dist,
-                                                                           
ss->cache->view_normal, vd.no, vd.fno);
+                               const float fade = bstrength*tex_strength(ss, 
brush, vd.co, test.dist,
+                                                                         
ss->cache->view_normal, vd.no, vd.fno, *vd.mask);
                                float val[3];
 
                                if (vd.fno) copy_v3_v3(val, vd.fno);
@@ -2020,8 +2027,8 @@
                                sub_v3_v3v3(val, intr, vd.co);
 
                                if (plane_trim(ss->cache, brush, val)) {
-                                       const float fade = bstrength * 
tex_strength(ss, brush, vd.co, sqrt(test.dist),
-                                                                               
    an, vd.no, vd.fno);
+                                       const float fade = 
bstrength*tex_strength(ss, brush, vd.co, sqrt(test.dist),
+                                                                               
  an, vd.no, vd.fno, *vd.mask);
 
                                        mul_v3_v3fl(proxy[vd.i], val, fade);
 
@@ -2092,9 +2099,9 @@
                                        sub_v3_v3v3(val, intr, vd.co);
 
                                        if (plane_trim(ss->cache, brush, val)) {
-                                               const float fade = bstrength * 
tex_strength(ss, brush, vd.co,
-                                                                               
            sqrt(test.dist),
-                                                                               
            an, vd.no, vd.fno);
+                                               const float fade = 
bstrength*tex_strength(ss, brush, vd.co,
+                                                                               
          sqrt(test.dist),
+                                                                               
          an, vd.no, vd.fno, *vd.mask);
 
                                                mul_v3_v3fl(proxy[vd.i], val, 
fade);
 
@@ -2193,9 +2200,9 @@
                                        sub_v3_v3v3(val, intr, vd.co);
 
                                        if (plane_trim(ss->cache, brush, val)) {
-                                               const float fade = bstrength * 
tex_strength(ss, brush, vd.co,
-                                                                               
            ss->cache->radius * test.dist,
-                                                                               
            an, vd.no, vd.fno);
+                                               const float fade = 
bstrength*tex_strength(ss, brush, vd.co,
+                                                                               
          ss->cache->radius*test.dist,
+                                                                               
          an, vd.no, vd.fno, *vd.mask);
 
                                                mul_v3_v3fl(proxy[vd.i], val, 
fade);
 
@@ -2256,9 +2263,9 @@
                                        sub_v3_v3v3(val, intr, vd.co);
 
                                        if (plane_trim(ss->cache, brush, val)) {
-                                               const float fade = bstrength * 
tex_strength(ss, brush, vd.co,
-                                                                               
            sqrt(test.dist),
-                                                                               
            an, vd.no, vd.fno);
+                                               const float fade = 
bstrength*tex_strength(ss, brush, vd.co,
+                                                                               
          sqrt(test.dist),
+                                                                               
          an, vd.no, vd.fno, *vd.mask);
 
                                                mul_v3_v3fl(proxy[vd.i], val, 
fade);
 
@@ -2319,9 +2326,9 @@
                                        sub_v3_v3v3(val, intr, vd.co);
 
                                        if (plane_trim(ss->cache, brush, val)) {
-                                               const float fade = bstrength * 
tex_strength(ss, brush, vd.co,
-                                                                               
            sqrt(test.dist),
-                                                                               
            an, vd.no, vd.fno);
+                                               const float fade = 
bstrength*tex_strength(ss, brush, vd.co,
+                                                                               
          sqrt(test.dist),
+                                                                               
          an, vd.no, vd.fno, *vd.mask);
 
                                                mul_v3_v3fl(proxy[vd.i], val, 
fade);
 

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

Reply via email to