[Bf-blender-cvs] [6e85ac1] wiggly-widgets: Painfully merge branch 'master' into wiggly-widgets
Julian Eisel
noreply at git.blender.org
Fri Jul 24 01:26:15 CEST 2015
Commit: 6e85ac1ee0423d389c71bf5bd2ca25e962aa7568
Author: Julian Eisel
Date: Fri Jul 24 01:25:32 2015 +0200
Branches: wiggly-widgets
https://developer.blender.org/rB6e85ac1ee0423d389c71bf5bd2ca25e962aa7568
Painfully merge branch 'master' into wiggly-widgets
Conflicts:
source/blender/blenkernel/BKE_DerivedMesh.h
source/blender/blenkernel/intern/subsurf_ccg.c
source/blender/editors/space_sequencer/sequencer_intern.h
source/blender/gpu/GPU_buffers.h
source/blender/gpu/intern/gpu_buffers.c
source/blender/makesdna/DNA_armature_types.h
source/blenderplayer/bad_level_call_stubs/stubs.c
===================================================================
===================================================================
diff --cc source/blender/blenkernel/BKE_DerivedMesh.h
index 65e7d47,32baa45..792f2b3
--- a/source/blender/blenkernel/BKE_DerivedMesh.h
+++ b/source/blender/blenkernel/BKE_DerivedMesh.h
@@@ -182,10 -183,18 +183,19 @@@ struct DerivedMesh
DerivedMeshType type;
float auto_bump_scale;
DMDirtyFlag dirty;
+ short totfmaps;
- short totmat; /* total materials. Will be valid only before object drawing. */
+ int totmat; /* total materials. Will be valid only before object drawing. */
struct Material **mat; /* material array. Will be valid only before object drawing */
+ /**
+ * \warning Typical access is done via #getLoopTriArray, #getNumLoopTri.
+ */
+ struct {
+ struct MLoopTri *array;
+ int num;
+ int num_alloc;
+ } looptris;
+
/* use for converting to BMesh which doesn't store bevel weight and edge crease by default */
char cd_flag;
diff --cc source/blender/blenkernel/intern/customdata.c
index 8fca0dd,b1740d4..1f864fb
--- a/source/blender/blenkernel/intern/customdata.c
+++ b/source/blender/blenkernel/intern/customdata.c
@@@ -1345,32 -1331,32 +1343,32 @@@ static const char *LAYERTYPENAMES[CD_NU
const CustomDataMask CD_MASK_BAREMESH =
- CD_MASK_MVERT | CD_MASK_MEDGE | CD_MASK_MFACE | CD_MASK_MLOOP | CD_MASK_MPOLY | CD_MASK_BWEIGHT;
+ CD_MASK_MVERT | CD_MASK_MEDGE | CD_MASK_MFACE | CD_MASK_MLOOP | CD_MASK_MPOLY | CD_MASK_BWEIGHT | CD_MASK_FACEMAP;
const CustomDataMask CD_MASK_MESH =
CD_MASK_MVERT | CD_MASK_MEDGE | CD_MASK_MFACE |
- CD_MASK_MSTICKY | CD_MASK_MDEFORMVERT | CD_MASK_MTFACE | CD_MASK_MCOL |
+ CD_MASK_MDEFORMVERT | CD_MASK_MTFACE | CD_MASK_MCOL |
CD_MASK_PROP_FLT | CD_MASK_PROP_INT | CD_MASK_PROP_STR | CD_MASK_MDISPS |
CD_MASK_MLOOPUV | CD_MASK_MLOOPCOL | CD_MASK_MPOLY | CD_MASK_MLOOP |
CD_MASK_MTEXPOLY | CD_MASK_RECAST | CD_MASK_PAINT_MASK |
CD_MASK_GRID_PAINT_MASK | CD_MASK_MVERT_SKIN | CD_MASK_FREESTYLE_EDGE | CD_MASK_FREESTYLE_FACE |
- CD_MASK_CUSTOMLOOPNORMAL;
+ CD_MASK_CUSTOMLOOPNORMAL | CD_MASK_FACEMAP;
const CustomDataMask CD_MASK_EDITMESH =
- CD_MASK_MSTICKY | CD_MASK_MDEFORMVERT | CD_MASK_MTFACE | CD_MASK_MLOOPUV |
+ CD_MASK_MDEFORMVERT | CD_MASK_MTFACE | CD_MASK_MLOOPUV |
CD_MASK_MLOOPCOL | CD_MASK_MTEXPOLY | CD_MASK_SHAPE_KEYINDEX |
CD_MASK_MCOL | CD_MASK_PROP_FLT | CD_MASK_PROP_INT | CD_MASK_PROP_STR |
CD_MASK_MDISPS | CD_MASK_SHAPEKEY | CD_MASK_RECAST | CD_MASK_PAINT_MASK |
- CD_MASK_GRID_PAINT_MASK | CD_MASK_MVERT_SKIN | CD_MASK_CUSTOMLOOPNORMAL;
+ CD_MASK_GRID_PAINT_MASK | CD_MASK_MVERT_SKIN | CD_MASK_CUSTOMLOOPNORMAL | CD_MASK_FACEMAP;
const CustomDataMask CD_MASK_DERIVEDMESH =
- CD_MASK_MSTICKY | CD_MASK_MDEFORMVERT | CD_MASK_MTFACE |
+ CD_MASK_MDEFORMVERT | CD_MASK_MTFACE |
CD_MASK_MCOL | CD_MASK_PROP_FLT | CD_MASK_PROP_INT | CD_MASK_CLOTH_ORCO |
CD_MASK_MLOOPUV | CD_MASK_MLOOPCOL | CD_MASK_MTEXPOLY | CD_MASK_PREVIEW_MLOOPCOL |
CD_MASK_PROP_STR | CD_MASK_ORIGSPACE | CD_MASK_ORIGSPACE_MLOOP | CD_MASK_ORCO | CD_MASK_TANGENT |
CD_MASK_PREVIEW_MCOL | CD_MASK_SHAPEKEY | CD_MASK_RECAST |
CD_MASK_ORIGINDEX | CD_MASK_MVERT_SKIN | CD_MASK_FREESTYLE_EDGE | CD_MASK_FREESTYLE_FACE |
- CD_MASK_CUSTOMLOOPNORMAL;
+ CD_MASK_CUSTOMLOOPNORMAL | CD_MASK_FACEMAP;
const CustomDataMask CD_MASK_BMESH =
CD_MASK_MLOOPUV | CD_MASK_MLOOPCOL | CD_MASK_MTEXPOLY |
- CD_MASK_MSTICKY | CD_MASK_MDEFORMVERT | CD_MASK_PROP_FLT | CD_MASK_PROP_INT |
+ CD_MASK_MDEFORMVERT | CD_MASK_PROP_FLT | CD_MASK_PROP_INT |
CD_MASK_PROP_STR | CD_MASK_SHAPEKEY | CD_MASK_SHAPE_KEYINDEX | CD_MASK_MDISPS |
CD_MASK_CREASE | CD_MASK_BWEIGHT | CD_MASK_RECAST | CD_MASK_PAINT_MASK |
CD_MASK_GRID_PAINT_MASK | CD_MASK_MVERT_SKIN | CD_MASK_FREESTYLE_EDGE | CD_MASK_FREESTYLE_FACE |
diff --cc source/blender/editors/include/ED_screen.h
index ee60a28,588b046..0de36ea
--- a/source/blender/editors/include/ED_screen.h
+++ b/source/blender/editors/include/ED_screen.h
@@@ -65,12 -68,9 +68,12 @@@ void ED_region_panels
void ED_region_header_init(struct ARegion *ar);
void ED_region_header(const struct bContext *C, struct ARegion *ar);
void ED_region_toggle_hidden(struct bContext *C, struct ARegion *ar);
- void ED_region_info_draw(struct ARegion *ar, const char *text, int block, float fill_color[4]);
+ void ED_region_info_draw(struct ARegion *ar, const char *text, float fill_color[4], const bool full_redraw);
void ED_region_image_metadata_draw(int x, int y, struct ImBuf *ibuf, rctf frame, float zoomx, float zoomy);
void ED_region_grid_draw(struct ARegion *ar, float zoomx, float zoomy);
+void ED_region_draw_backdrop_view3d(const struct bContext *C, struct Object *camera, const float alpha,
+ const float width, const float height, const float x, const float y,
+ const float zoomx, const float zoomy, const bool draw_background);
float ED_region_blend_factor(struct ARegion *ar);
void ED_region_visible_rect(struct ARegion *ar, struct rcti *rect);
diff --cc source/blender/editors/space_sequencer/sequencer_intern.h
index ef731ad,3e228fd..75a7fa8
--- a/source/blender/editors/space_sequencer/sequencer_intern.h
+++ b/source/blender/editors/space_sequencer/sequencer_intern.h
@@@ -135,9 -134,8 +135,11 @@@ void SEQUENCER_OT_paste(struct wmOperat
void SEQUENCER_OT_rebuild_proxy(struct wmOperatorType *ot);
void SEQUENCER_OT_enable_proxies(struct wmOperatorType *ot);
+void SEQUENCER_OT_overdrop_transform(struct wmOperatorType *ot);
+void SEQUENCER_OT_image_transform_widget(struct wmOperatorType *ot);
+
+ void SEQUENCER_OT_export_subtitles(struct wmOperatorType *ot);
+
/* preview specific operators */
void SEQUENCER_OT_view_all_preview(struct wmOperatorType *ot);
diff --cc source/blender/editors/space_view3d/drawobject.c
index 4d5b783,9abc63f..3445bac
--- a/source/blender/editors/space_view3d/drawobject.c
+++ b/source/blender/editors/space_view3d/drawobject.c
@@@ -8658,48 -8655,6 +8656,48 @@@ static void draw_object_mesh_instance(S
if (dm) dm->release(dm);
}
+void ED_draw_object_facemap(Scene *scene, struct Object *ob, int facemap)
+{
+ DerivedMesh *dm = NULL;
+
+ 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);
+
+ glColor4f(0.7, 1.0, 1.0, 0.5);
+
+ glPushAttrib(GL_ENABLE_BIT);
+ glEnable(GL_BLEND);
+ glDisable(GL_LIGHTING);
+
+ if (dm->drawObject->facemapindices) {
+ if (dm->drawObject->facemapindices->use_vbo)
+ glDrawElements(GL_TRIANGLES, dm->drawObject->facemap_count[facemap], GL_UNSIGNED_INT,
+ (int *)NULL + dm->drawObject->facemap_start[facemap]);
+ else
+ glDrawElements(GL_TRIANGLES, dm->drawObject->facemap_count[facemap], GL_UNSIGNED_INT,
+ (int *)dm->drawObject->facemapindices->pointer + dm->drawObject->facemap_start[facemap]);
+ }
+ glPopAttrib();
+
- GPU_buffer_unbind();
++ GPU_buffer_unbind(dm->drawObject->facemapindices, GPU_BINDING_INDEX);
+
+ 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/gpu/GPU_buffers.h
index aa75bfe,a50d63d..0da078d
--- a/source/blender/gpu/GPU_buffers.h
+++ b/source/blender/gpu/GPU_buffers.h
@@@ -47,12 -49,10 +49,13 @@@ struct DerivedMesh
struct GSet;
struct GPUVertPointLink;
struct PBVH;
+ struct MVert;
+typedef void (*GPUBufferCopyFunc)(DerivedMesh *dm, float *varray, int *index,
+ int *mat_orig_to_new, void *user_data);
+
typedef struct GPUBuffer {
- int size; /* in bytes */
+ 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 */
@@@ -91,11 -95,8 +98,9 @@@ typedef struct GPUDrawObject
GPUBuffer *colors;
GPUBuffer *edges;
GPUBuffer *uvedges;
+ GPUBuffer *triangles; /* triangle index buffer */
+ GPUBuffer *facemapindices;
- /* for each triangle, the original MFace index */
- int *triangle_to_mface;
-
/* for each original vertex, the list of related points */
struct GPUVertPointLink *vert_points;
@@@ -111,22 -112,37 +116,41 @@@
GPUBufferMaterial *materials;
int totmaterial;
- int tot_triangle_point;
- int tot_loose_point;
+ unsigned int tot_triangle_point;
+ unsigned int tot_loose_point;
+ /* different than total loops since ngons get tesselated still */
+ unsigned int tot_loop_verts;
/* caches of the original DerivedMesh values */
- int totvert;
- int totedge;
+ unsigned int totvert;
+ unsigned int totedge;
- int loose_edge_offset;
- int tot_loose_edge_drawn;
- int tot_edge_drawn;
+ unsigned int loose_edge_offset;
+ unsigned int tot_loose_edge_drawn;
+ unsigned int tot_edge_drawn;
+
+ /* for subsurf, offset where drawing of interior edges starts */
+ unsigned int interior_offset;
+ unsigned int totinterior;
+
+ int totfacemaps; /* total facemaps */
+ int *facemap_start; /* beginning of facemap */
+ int *facemap_count; /* elements per facemap */
} GPUDrawObject;
+ /* currently unused */
+ // #define USE_GPU_POINT_LINK
+
+ typedef struct GPUVertPointLink {
+ #ifdef USE_GPU_POINT_LINK
+ struct GPUVertPointLink *next;
+ #endif
+ /* -1 means uninitialized */
+ int point_index;
+ } GPUVertPointLink;
+
+
+
/* used for GLSL materials */
typedef struct GPUAttrib {
int index;
@@@ -152,9 -170,13 +178,14 @@@ typedef enum
GPU_BUFFER_UV_TEXPAINT,
GPU_BUFFER_EDGE,
GPU_BUFFER_UVEDGE,
- GPU_BUFFER_TRIANGLES
++ GPU_BUFFER_TRIANGLES,
+ GPU_BUFFER_FACEMAP
} GPUBufferType;
+ typedef enum {
+ GPU_BINDING_ARRAY = 0,
+
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list