Commit: 977c6b2316ef09d0fa14a59bc39bda88c69f2033
Author: Bastien Montagne
Date:   Wed May 25 12:05:32 2016 +0200
Branches: soc-2016-pbvh-painting
https://developer.blender.org/rB977c6b2316ef09d0fa14a59bc39bda88c69f2033

Remove call to BKE_pbvh_draw from draw_mesh_paint, add pbvh BB drawing to dm's 
mappedfaces drawing callbacks.

Reading BKE_draw_pbvh code, this function actually handles the whole drawing,
seems like it does a partial update of only modified geometry (optimized drawing
in solid shadding case), don’t think we need that for v/wpaint, at least for 
now.

So rather just added a call to BKE_pbvh_draw_BB (in case debug value is set)
in dm's mappedfaces drawing callbacks, should do for now.

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

M       source/blender/blenkernel/BKE_pbvh.h
M       source/blender/blenkernel/intern/cdderivedmesh.c
M       source/blender/blenkernel/intern/pbvh.c
M       source/blender/blenkernel/intern/subsurf_ccg.c
M       source/blender/editors/space_view3d/drawmesh.c
M       source/blender/editors/space_view3d/drawobject.c

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

diff --git a/source/blender/blenkernel/BKE_pbvh.h 
b/source/blender/blenkernel/BKE_pbvh.h
index 927303f..39ca3fe 100644
--- a/source/blender/blenkernel/BKE_pbvh.h
+++ b/source/blender/blenkernel/BKE_pbvh.h
@@ -118,6 +118,7 @@ void BKE_pbvh_raycast_project_ray_root(
 void BKE_pbvh_node_draw(PBVHNode *node, void *data);
 void BKE_pbvh_draw(PBVH *bvh, float (*planes)[4], float (*face_nors)[3],
                    int (*setMaterial)(int matnr, void *attribs), bool 
wireframe, bool fast);
+void BKE_pbvh_draw_BB(PBVH *bvh);
 
 /* PBVH Access */
 typedef enum {
diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c 
b/source/blender/blenkernel/intern/cdderivedmesh.c
index af1ad49..8f83bdf 100644
--- a/source/blender/blenkernel/intern/cdderivedmesh.c
+++ b/source/blender/blenkernel/intern/cdderivedmesh.c
@@ -668,6 +668,11 @@ static void cdDM_drawMappedFaces(
 
        const int *index_mp_to_orig  = dm->getPolyDataArray(dm, CD_ORIGINDEX);
 
+       if (cddm->pbvh) {
+               if (G.debug_value == 14)
+                       BKE_pbvh_draw_BB(cddm->pbvh);
+       }
+
        /* fist, setup common buffers */
        GPU_vertex_setup(dm);
        GPU_triangle_setup(dm);
diff --git a/source/blender/blenkernel/intern/pbvh.c 
b/source/blender/blenkernel/intern/pbvh.c
index d73f087..f66bcbc 100644
--- a/source/blender/blenkernel/intern/pbvh.c
+++ b/source/blender/blenkernel/intern/pbvh.c
@@ -1156,7 +1156,7 @@ static void pbvh_update_draw_buffers(PBVH *bvh, PBVHNode 
**nodes, int totnode)
        }
 }
 
-static void pbvh_draw_BB(PBVH *bvh)
+void BKE_pbvh_draw_BB(PBVH *bvh)
 {
        GPU_init_draw_pbvh_BB();
 
@@ -1850,7 +1850,7 @@ void BKE_pbvh_draw(PBVH *bvh, float (*planes)[4], float 
(*fnors)[3],
        }
 
        if (G.debug_value == 14)
-               pbvh_draw_BB(bvh);
+               BKE_pbvh_draw_BB(bvh);
 }
 
 void BKE_pbvh_grids_update(PBVH *bvh, CCGElem **grids, void **gridfaces,
diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c 
b/source/blender/blenkernel/intern/subsurf_ccg.c
index 5fd418f..7eaeb09 100644
--- a/source/blender/blenkernel/intern/subsurf_ccg.c
+++ b/source/blender/blenkernel/intern/subsurf_ccg.c
@@ -3564,6 +3564,11 @@ static void ccgDM_drawMappedFaces(DerivedMesh *dm,
        int gridFaces = gridSize - 1, totface;
        int prev_mat_nr = -1;
 
+       if (ccgdm->pbvh) {
+               if (G.debug_value == 14)
+                       BKE_pbvh_draw_BB(ccgdm->pbvh);
+       }
+
 #ifdef WITH_OPENSUBDIV
        if (ccgdm->useGpuBackend) {
                int new_matnr;
diff --git a/source/blender/editors/space_view3d/drawmesh.c 
b/source/blender/editors/space_view3d/drawmesh.c
index fe9ec3a..86f3edf 100644
--- a/source/blender/editors/space_view3d/drawmesh.c
+++ b/source/blender/editors/space_view3d/drawmesh.c
@@ -69,8 +69,6 @@
 
 #include "ED_uvedit.h"
 
-#include "BKE_pbvh.h"
-
 #include "view3d_intern.h"  /* own include */
 
 /* user data structures for derived mesh callbacks */
@@ -1370,18 +1368,5 @@ void draw_mesh_paint(View3D *v3d, RegionView3D *rv3d,
                        set_inverted_drawing(0);
                }
        }
-
-       /* For drawing the PBVH */
-       if (ob->sculpt){
-               if (ob->sculpt->pbvh) {
-                       if (BKE_pbvh_has_faces(ob->sculpt->pbvh)) {
-                               float(*face_nors)[3] = 
CustomData_get_layer(&dm->polyData, CD_NORMAL);
-
-                               BKE_pbvh_draw(ob->sculpt->pbvh, NULL, face_nors,
-                                       GPU_object_material_visible, false, 
false);
-                               glShadeModel(GL_FLAT);
-                       }
-               }
-       }
 }
 
diff --git a/source/blender/editors/space_view3d/drawobject.c 
b/source/blender/editors/space_view3d/drawobject.c
index 75af46e..8487726 100644
--- a/source/blender/editors/space_view3d/drawobject.c
+++ b/source/blender/editors/space_view3d/drawobject.c
@@ -4168,7 +4168,7 @@ static void draw_mesh_fancy(Scene *scene, ARegion *ar, 
View3D *v3d, RegionView3D
                }
        }
        else if (dt == OB_PAINT) {
-               draw_mesh_paint(v3d, rv3d, ob, dm, draw_flags, NULL, 
GPU_object_material_bind);
+               draw_mesh_paint(v3d, rv3d, ob, dm, draw_flags);
 
                /* since we already draw wire as wp guide, don't draw over the 
top */
                draw_wire = OBDRAW_WIRE_OFF;

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

Reply via email to