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