[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