[Bf-blender-cvs] [3005dd4] wiggly-widgets: Merge master into wiggly-widgets and update drawing to recent changes in master
Julian Eisel
noreply at git.blender.org
Sun Nov 22 23:35:40 CET 2015
Commit: 3005dd4160336adebcb4baa7f3b899c8fd0d870a
Author: Julian Eisel
Date: Sun Nov 22 23:23:09 2015 +0100
Branches: wiggly-widgets
https://developer.blender.org/rB3005dd4160336adebcb4baa7f3b899c8fd0d870a
Merge master into wiggly-widgets and update drawing to recent changes in master
Conflicts:
source/blender/gpu/intern/gpu_buffers.c
source/blender/makesrna/intern/rna_userdef.c
===================================================================
===================================================================
diff --cc source/blender/editors/space_view3d/drawobject.c
index 256d34c,a2386c5..20a67fa
--- a/source/blender/editors/space_view3d/drawobject.c
+++ b/source/blender/editors/space_view3d/drawobject.c
@@@ -8699,56 -8692,6 +8693,52 @@@ 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) {
- if (dm->drawObject->facemapindices->use_vbo)
- glDrawElements(GL_TRIANGLES, dm->drawObject->facemap_count[facemap] * 3, GL_UNSIGNED_INT,
- (int *)NULL + dm->drawObject->facemap_start[facemap] * 3);
- else
- glDrawElements(GL_TRIANGLES, dm->drawObject->facemap_count[facemap] * 3, GL_UNSIGNED_INT,
- (int *)dm->drawObject->facemapindices->pointer + dm->drawObject->facemap_start[facemap] * 3);
++ 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)
{
if (ob == NULL)
diff --cc source/blender/editors/space_view3d/view3d_intern.h
index c5b4ae2,94c1db8..c44769d
--- a/source/blender/editors/space_view3d/view3d_intern.h
+++ b/source/blender/editors/space_view3d/view3d_intern.h
@@@ -270,19 -271,10 +270,18 @@@ ARegion *view3d_has_tools_region(ScrAre
extern const char *view3d_context_dir[]; /* doc access */
+/* view3d_widgets.c */
+int WIDGETGROUP_camera_poll(const struct bContext *C, struct wmWidgetGroupType *wgrouptype);
+void WIDGETGROUP_camera_create(const struct bContext *C, struct wmWidgetGroup *wgroup);
+int WIDGETGROUP_forcefield_poll(const struct bContext *C, struct wmWidgetGroupType *wgrouptype);
+void WIDGETGROUP_forcefield_create(const struct bContext *C, struct wmWidgetGroup *wgroup);
+int WIDGETGROUP_armature_facemaps_poll(const struct bContext *C, struct wmWidgetGroupType *wgrouptype);
+void WIDGETGROUP_armature_facemaps_create(const struct bContext *C, struct wmWidgetGroup *wgroup);
+
/* draw_volume.c */
void draw_smoke_volume(struct SmokeDomainSettings *sds, struct Object *ob,
- struct GPUTexture *tex, const float min[3], const float max[3],
- const int res[3], float dx, float base_scale, const float viewnormal[3],
- struct GPUTexture *tex_shadow, struct GPUTexture *tex_flame);
+ const float min[3], const float max[3],
+ const int res[3], const float viewnormal[3]);
//#define SMOKE_DEBUG_VELOCITY
//#define SMOKE_DEBUG_HEAT
diff --cc source/blender/gpu/GPU_buffers.h
index 65a1bb9,9c67f40..8b16625
--- a/source/blender/gpu/GPU_buffers.h
+++ b/source/blender/gpu/GPU_buffers.h
@@@ -52,14 -52,9 +52,12 @@@ struct GPUDrawObject
struct PBVH;
struct MVert;
+typedef void (*GPUBufferCopyFunc)(DerivedMesh *dm, float *varray, int *index,
+ int *mat_orig_to_new, void *user_data);
+
typedef struct GPUBuffer {
size_t size; /* in bytes */
- void *pointer; /* used with vertex arrays */
unsigned int id; /* used with vertex buffer objects */
- bool use_vbo; /* true for VBOs, false for vertex arrays */
} GPUBuffer;
typedef struct GPUBufferMaterial {
diff --cc source/blender/gpu/intern/gpu_buffers.c
index d354cc3,69aca31..e5b48e6
--- a/source/blender/gpu/intern/gpu_buffers.c
+++ b/source/blender/gpu/intern/gpu_buffers.c
@@@ -80,23 -80,21 +80,23 @@@ static size_t gpu_buffer_size_from_type
const GPUBufferTypeSettings gpu_buffer_type_settings[] = {
/* vertex */
- {GL_ARRAY_BUFFER_ARB, 3},
+ {GL_ARRAY_BUFFER, 3},
/* normal */
- {GL_ARRAY_BUFFER_ARB, 4}, /* we copy 3 shorts per normal but we add a fourth for alignment */
+ {GL_ARRAY_BUFFER, 4}, /* we copy 3 shorts per normal but we add a fourth for alignment */
/* mcol */
- {GL_ARRAY_BUFFER_ARB, 3},
+ {GL_ARRAY_BUFFER, 3},
/* uv */
- {GL_ARRAY_BUFFER_ARB, 2},
+ {GL_ARRAY_BUFFER, 2},
/* uv for texpaint */
- {GL_ARRAY_BUFFER_ARB, 4},
+ {GL_ARRAY_BUFFER, 4},
/* edge */
- {GL_ELEMENT_ARRAY_BUFFER_ARB, 2},
+ {GL_ELEMENT_ARRAY_BUFFER, 2},
/* uv edge */
- {GL_ELEMENT_ARRAY_BUFFER_ARB, 4},
+ {GL_ELEMENT_ARRAY_BUFFER, 4},
/* triangles, 1 point since we are allocating from tottriangle points, which account for all points */
- {GL_ELEMENT_ARRAY_BUFFER_ARB, 1},
+ {GL_ELEMENT_ARRAY_BUFFER, 1},
+ /* facemap */
- {GL_ELEMENT_ARRAY_BUFFER_ARB, 3},
++ {GL_ELEMENT_ARRAY_BUFFER, 3},
};
#define MAX_GPU_ATTRIB_DATA 32
@@@ -889,31 -770,6 +781,24 @@@ void GPU_triangle_setup(struct DerivedM
GLStates |= GPU_BUFFER_ELEMENT_STATE;
}
+void GPU_facemap_setup(DerivedMesh *dm)
+{
+ if (!gpu_buffer_setup_common(dm, GPU_BUFFER_FACEMAP))
+ return;
+
+ if (!gpu_buffer_setup_common(dm, GPU_BUFFER_VERTEX))
+ return;
+
+ glEnableClientState(GL_VERTEX_ARRAY);
- if (dm->drawObject->points->use_vbo) {
- glBindBufferARB(GL_ARRAY_BUFFER_ARB, dm->drawObject->points->id);
- glVertexPointer(3, GL_FLOAT, 0, 0);
- }
- else {
- glVertexPointer(3, GL_FLOAT, 0, dm->drawObject->points->pointer);
- }
++ glBindBuffer(GL_ARRAY_BUFFER_ARB, dm->drawObject->points->id);
++ glVertexPointer(3, GL_FLOAT, 0, 0);
+
+ GLStates |= GPU_BUFFER_VERTEX_STATE;
- if (dm->drawObject->facemapindices->use_vbo) {
- glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, dm->drawObject->facemapindices->id);
- }
++ glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, dm->drawObject->facemapindices->id);
+
+ GLStates |= GPU_BUFFER_ELEMENT_STATE;
+}
+
static int GPU_typesize(int type)
{
switch (type) {
diff --cc source/blender/makesrna/intern/rna_userdef.c
index f37a762,a61f6b9..c845bcf
--- a/source/blender/makesrna/intern/rna_userdef.c
+++ b/source/blender/makesrna/intern/rna_userdef.c
@@@ -161,25 -161,33 +161,6 @@@ static void rna_userdef_language_update
UI_reinit_font();
}
- static void update_cb(PBVHNode *node, void *UNUSED(rebuild))
-static void rna_userdef_show_manipulator_update(Main *bmain, Scene *scene, PointerRNA *ptr)
--{
- BKE_pbvh_node_mark_rebuild_draw(node);
- }
- UserDef *userdef = (UserDef *)ptr->data;
--
- static void rna_userdef_vbo_update(Main *bmain, Scene *UNUSED(scene), PointerRNA *UNUSED(ptr))
- {
- Object *ob;
-
- for (ob = bmain->object.first; ob; ob = ob->id.next) {
- GPU_drawobject_free(ob->derivedFinal);
- /* lame, loop over all views and set */
- bScreen *sc;
- ScrArea *sa;
- SpaceLink *sl;
--
- if (ob->sculpt && ob->sculpt->pbvh) {
- BKE_pbvh_search_callback(ob->sculpt->pbvh, NULL, NULL, update_cb, NULL);
- /* from scene copy to the other views */
- for (sc = bmain->screen.first; sc; sc = sc->id.next) {
- for (sa = sc->areabase.first; sa; sa = sa->next) {
- for (sl = sa->spacedata.first; sl; sl = sl->next) {
- if (sl->spacetype == SPACE_VIEW3D) {
- View3D *v3d = (View3D *)sl;
- if (userdef->tw_flag & V3D_USE_MANIPULATOR)
- v3d->twflag |= V3D_USE_MANIPULATOR;
- else
- v3d->twflag &= ~V3D_USE_MANIPULATOR;
- }
- }
-- }
-- }
- GPU_buffer_multires_free(false);
-
- rna_userdef_update(bmain, scene, ptr);
--}
--
static void rna_userdef_script_autoexec_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
{
More information about the Bf-blender-cvs
mailing list