[Bf-blender-cvs] [6fb08f6fb39] custom-manipulators: Merge branch 'blender2.8' into custom-manipulators
Campbell Barton
noreply at git.blender.org
Fri Mar 31 10:09:38 CEST 2017
Commit: 6fb08f6fb39167fb91c375c64d3ded4c52a12a1c
Author: Campbell Barton
Date: Fri Mar 31 19:10:28 2017 +1100
Branches: custom-manipulators
https://developer.blender.org/rB6fb08f6fb39167fb91c375c64d3ded4c52a12a1c
Merge branch 'blender2.8' into custom-manipulators
===================================================================
===================================================================
diff --cc source/blender/editors/include/ED_view3d.h
index ff20f4f1015,b192a6c5c08..7643cacda51
--- a/source/blender/editors/include/ED_view3d.h
+++ b/source/blender/editors/include/ED_view3d.h
@@@ -340,10 -336,9 +340,10 @@@ int ED_view3d_scene_layer_set(int lay,
void *ED_view3d_mats_rv3d_backup(struct RegionView3D *rv3d);
void ED_view3d_mats_rv3d_restore(struct RegionView3D *rv3d, void *rv3dmat_pt);
+void ED_draw_object_facemap(struct Scene *scene, struct Object *ob, const float col[4], const int facemap);
bool ED_view3d_context_activate(struct bContext *C);
- void ED_view3d_draw_offscreen_init(struct Scene *scene, struct View3D *v3d);
+ void ED_view3d_draw_offscreen_init(struct Scene *scene, struct SceneLayer *sl, struct View3D *v3d);
void ED_view3d_draw_offscreen(
struct Scene *scene, struct View3D *v3d, struct ARegion *ar, int winx, int winy, float viewmat[4][4],
float winmat[4][4], bool do_bgpic, bool do_sky, bool is_persp, const char *viewname,
diff --cc source/blender/editors/space_view3d/drawarmature.c
index 2b5ca8fcbe3,752a2a6423c..ac3c123862e
--- a/source/blender/editors/space_view3d/drawarmature.c
+++ b/source/blender/editors/space_view3d/drawarmature.c
@@@ -1943,15 -1943,8 +1943,15 @@@ static void bone_matrix_translate_y(flo
add_v3_v3(mat[3], trans);
}
+BLI_INLINE bool pchan_is_draw_fmap_only(const Scene *scene, const bPoseChannel *pchan)
+{
+ return ((scene->basact && scene->basact->object->mode & OB_MODE_POSE) &&
+ (pchan->fmap != NULL) &&
+ (pchan->bone->flag & BONE_DRAW_FMAP_ONLY));
+}
+
/* assumes object is Armature with pose */
- static void draw_pose_bones(Scene *scene, View3D *v3d, ARegion *ar, BaseLegacy *base,
+ static void draw_pose_bones(Scene *scene, SceneLayer *sl, View3D *v3d, ARegion *ar, Base *base,
const short dt, const unsigned char ob_wire_col[4],
const bool do_const_color, const bool is_outline)
{
diff --cc source/blender/editors/space_view3d/drawobject.c
index a6877fc1578,968d5706870..6a9a7b86def
--- a/source/blender/editors/space_view3d/drawobject.c
+++ b/source/blender/editors/space_view3d/drawobject.c
@@@ -9296,52 -9297,7 +9298,53 @@@ static void draw_object_mesh_instance(S
if (dm) dm->release(dm);
}
++
+void ED_draw_object_facemap(Scene *scene, Object *ob, const float col[4], const int facemap)
+{
+ DerivedMesh *dm = NULL;
+
+ /* happens on undo */
+ if (ob->type != OB_MESH || !ob->data)
+ return;
+
+ dm = mesh_get_derived_final(scene, ob, CD_MASK_BAREMESH);
+ if (!dm || !CustomData_has_layer(&dm->polyData, CD_FACEMAP))
+ return;
+
+ DM_update_materials(dm, ob);
+
+ glFrontFace((ob->transflag & OB_NEG_SCALE) ? GL_CW : GL_CCW);
+
+ /* add polygon offset so we draw above the original surface */
+ glPolygonOffset(1.0, 1.0);
+
+ dm->totfmaps = BLI_listbase_count(&ob->fmaps);
+
+ GPU_facemap_setup(dm);
+
+ glColor4fv(col);
+
+ glPushAttrib(GL_ENABLE_BIT);
+ glEnable(GL_BLEND);
+ glDisable(GL_LIGHTING);
+
+ /* always draw using backface culling */
+ glEnable(GL_CULL_FACE);
+ glCullFace(GL_BACK);
+
+ if (dm->drawObject->facemapindices) {
+ glDrawElements(GL_TRIANGLES, dm->drawObject->facemap_count[facemap] * 3, GL_UNSIGNED_INT,
+ (int *)NULL + dm->drawObject->facemap_start[facemap] * 3);
+ }
+ glPopAttrib();
+
+ GPU_buffers_unbind();
+
+ glPolygonOffset(0.0, 0.0);
+ dm->release(dm);
+}
+
- void draw_object_instance(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *ob, const char dt, int outline, float wire_col[4])
+ void draw_object_instance(Scene *scene, SceneLayer *sl, View3D *v3d, RegionView3D *rv3d, Object *ob, const char dt, int outline, float wire_col[4])
{
if (ob == NULL)
return;
More information about the Bf-blender-cvs
mailing list