[Bf-blender-cvs] [8f670dd855b] blender2.8: Merge branch 'master' into blender2.8

Bastien Montagne noreply at git.blender.org
Tue May 29 16:05:28 CEST 2018


Commit: 8f670dd855b1d81fcf619b3b94ba4bfaf51e896d
Author: Bastien Montagne
Date:   Tue May 29 15:59:18 2018 +0200
Branches: blender2.8
https://developer.blender.org/rB8f670dd855b1d81fcf619b3b94ba4bfaf51e896d

Merge branch 'master' into blender2.8

Conflicts:
	source/blender/blenkernel/BKE_material.h
	source/blender/blenkernel/BKE_mesh.h
	source/blender/blenkernel/intern/library_remap.c
	source/blender/blenkernel/intern/material.c
	source/blender/editors/object/object_relations.c
	source/blender/editors/render/render_preview.c
	source/blender/makesrna/intern/rna_object.c

===================================================================



===================================================================

diff --cc source/blender/blenkernel/BKE_material.h
index 43f36618c19,431d1df1ff6..c85017a2216
--- a/source/blender/blenkernel/BKE_material.h
+++ b/source/blender/blenkernel/BKE_material.h
@@@ -102,14 -109,14 +102,14 @@@ void ramp_blend(int type, float r_col[3
  /* copy/paste */
  void clear_matcopybuf(void);
  void free_matcopybuf(void);
- void copy_matcopybuf(struct Material *ma);
- void paste_matcopybuf(struct Material *ma);
+ void copy_matcopybuf(struct Main *bmain, struct Material *ma);
+ void paste_matcopybuf(struct Main *bmain, struct Material *ma);
  
 -/* handle backward compatibility for tface/materials called from doversion */	
 -int do_version_tface(struct Main *main);
 +/* Evaluation. */
 +
 +struct Depsgraph;
 +
 +void BKE_material_eval(struct Depsgraph *depsgraph, struct Material *material);
  
  #ifdef __cplusplus
  }
diff --cc source/blender/blenkernel/BKE_mesh.h
index f1326974f10,2c7ba845960..499bea1dd51
--- a/source/blender/blenkernel/BKE_mesh.h
+++ b/source/blender/blenkernel/BKE_mesh.h
@@@ -127,23 -99,7 +127,23 @@@ float (*BKE_mesh_orco_verts_get(struct 
  void   BKE_mesh_orco_verts_transform(struct Mesh *me, float (*orco)[3], int totvert, int invert);
  int test_index_face(struct MFace *mface, struct CustomData *mfdata, int mfindex, int nr);
  struct Mesh *BKE_mesh_from_object(struct Object *ob);
- void BKE_mesh_assign_object(struct Object *ob, struct Mesh *me);
+ void BKE_mesh_assign_object(struct Main *bmain, struct Object *ob, struct Mesh *me);
 +void BKE_mesh_from_metaball(struct ListBase *lb, struct Mesh *me);
 +int  BKE_mesh_nurbs_to_mdata(
 +        struct Object *ob, struct MVert **r_allvert, int *r_totvert,
 +        struct MEdge **r_alledge, int *r_totedge, struct MLoop **r_allloop, struct MPoly **r_allpoly,
 +        int *r_totloop, int *r_totpoly);
 +int BKE_mesh_nurbs_displist_to_mdata(
 +        struct Object *ob, const struct ListBase *dispbase,
 +        struct MVert **r_allvert, int *r_totvert,
 +        struct MEdge **r_alledge, int *r_totedge,
 +        struct MLoop **r_allloop, struct MPoly **r_allpoly,
 +        struct MLoopUV **r_alluv, int *r_totloop, int *r_totpoly);
 +void BKE_mesh_from_nurbs_displist(
 +        struct Object *ob, struct ListBase *dispbase, const bool use_orco_uv, const char *obdata_name);
 +void BKE_mesh_from_nurbs(struct Object *ob);
 +void BKE_mesh_to_curve_nurblist(struct DerivedMesh *dm, struct ListBase *nurblist, const int edge_users_test);
 +void BKE_mesh_to_curve(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob);
  void BKE_mesh_material_index_remove(struct Mesh *me, short index);
  void BKE_mesh_material_index_clear(struct Mesh *me);
  void BKE_mesh_material_remap(struct Mesh *me, const unsigned int *remap, unsigned int remap_len);
diff --cc source/blender/blenkernel/intern/material.c
index 131d79c249f,3283619587e..404761d2c36
--- a/source/blender/blenkernel/intern/material.c
+++ b/source/blender/blenkernel/intern/material.c
@@@ -532,10 -631,10 +532,10 @@@ void BKE_material_resize_object(Main *b
  	if (ob->totcol && ob->actcol == 0) ob->actcol = 1;
  	if (ob->actcol > ob->totcol) ob->actcol = ob->totcol;
  
 -	DAG_relations_tag_update(bmain);
 +	DEG_relations_tag_update(bmain);
  }
  
- void test_object_materials(Object *ob, ID *id)
+ void test_object_materials(Main *bmain, Object *ob, ID *id)
  {
  	/* make the ob mat-array same size as 'ob->data' mat-array */
  	const short *totcol;
@@@ -837,9 -936,279 +837,9 @@@ bool BKE_object_material_slot_add(Main 
  	return true;
  }
  
 -static void do_init_render_material(Main *bmain, Material *ma, int r_mode, float *amb)
 -{
 -	MTex *mtex;
 -	int a, needuv = 0, needtang = 0;
 -	
 -	if (ma->flarec == 0) ma->flarec = 1;
 -
 -	/* add all texcoflags from mtex, texco and mapto were cleared in advance */
 -	for (a = 0; a < MAX_MTEX; a++) {
 -		
 -		/* separate tex switching */
 -		if (ma->septex & (1 << a)) continue;
 -
 -		mtex = ma->mtex[a];
 -		if (mtex && mtex->tex && (mtex->tex->type | (mtex->tex->use_nodes && mtex->tex->nodetree) )) {
 -			
 -			ma->texco |= mtex->texco;
 -			ma->mapto |= mtex->mapto;
 -
 -			/* always get derivatives for these textures */
 -			if (ELEM(mtex->tex->type, TEX_IMAGE, TEX_ENVMAP)) ma->texco |= TEXCO_OSA;
 -			else if (mtex->texflag & (MTEX_COMPAT_BUMP | MTEX_3TAP_BUMP | MTEX_5TAP_BUMP | MTEX_BICUBIC_BUMP)) ma->texco |= TEXCO_OSA;
 -			
 -			if (ma->texco & (TEXCO_ORCO | TEXCO_REFL | TEXCO_NORM | TEXCO_STRAND | TEXCO_STRESS)) needuv = 1;
 -			else if (ma->texco & (TEXCO_GLOB | TEXCO_UV | TEXCO_OBJECT | TEXCO_SPEED)) needuv = 1;
 -			else if (ma->texco & (TEXCO_LAVECTOR | TEXCO_VIEW)) needuv = 1;
 -
 -			if ((ma->mapto & MAP_NORM) && (mtex->normapspace == MTEX_NSPACE_TANGENT))
 -				needtang = 1;
 -		}
 -	}
 -
 -	if (needtang) ma->mode |= MA_NORMAP_TANG;
 -	else ma->mode &= ~MA_NORMAP_TANG;
 -	
 -	if (ma->mode & (MA_VERTEXCOL | MA_VERTEXCOLP | MA_FACETEXTURE)) {
 -		needuv = 1;
 -		if (r_mode & R_OSA) ma->texco |= TEXCO_OSA;     /* for texfaces */
 -	}
 -	if (needuv) ma->texco |= NEED_UV;
 -	
 -	/* since the raytracer doesnt recalc O structs for each ray, we have to preset them all */
 -	if (r_mode & R_RAYTRACE) {
 -		if ((ma->mode & (MA_RAYMIRROR | MA_SHADOW_TRA)) || ((ma->mode & MA_TRANSP) && (ma->mode & MA_RAYTRANSP))) {
 -			ma->texco |= NEED_UV | TEXCO_ORCO | TEXCO_REFL | TEXCO_NORM;
 -			if (r_mode & R_OSA) ma->texco |= TEXCO_OSA;
 -		}
 -	}
 -	
 -	if (amb) {
 -		ma->ambr = ma->amb * amb[0];
 -		ma->ambg = ma->amb * amb[1];
 -		ma->ambb = ma->amb * amb[2];
 -	}
 -
 -	/* local group override */
 -	if ((ma->shade_flag & MA_GROUP_LOCAL) && ma->id.lib && ma->group && ma->group->id.lib) {
 -		Group *group;
 -
 -		for (group = bmain->group.first; group; group = group->id.next) {
 -			if (!ID_IS_LINKED(group) && STREQ(group->id.name, ma->group->id.name)) {
 -				ma->group = group;
 -			}
 -		}
 -	}
 -}
 -
 -static void init_render_nodetree(Main *bmain, bNodeTree *ntree, Material *basemat, int r_mode, float *amb)
 -{
 -	bNode *node;
 -
 -	/* parses the geom+tex nodes */
 -	ntreeShaderGetTexcoMode(ntree, r_mode, &basemat->texco, &basemat->mode_l);
 -	for (node = ntree->nodes.first; node; node = node->next) {
 -		if (node->id) {
 -			if (GS(node->id->name) == ID_MA) {
 -				Material *ma = (Material *)node->id;
 -				if (ma != basemat) {
 -					do_init_render_material(bmain, ma, r_mode, amb);
 -					basemat->texco |= ma->texco;
 -				}
 -
 -				basemat->mode_l |= ma->mode & ~(MA_MODE_PIPELINE | MA_SHLESS);
 -				basemat->mode2_l |= ma->mode2 & ~MA_MODE2_PIPELINE;
 -				/* basemat only considered shadeless if all node materials are too */
 -				if (!(ma->mode & MA_SHLESS))
 -					basemat->mode_l &= ~MA_SHLESS;
 -
 -				if (ma->strand_surfnor > 0.0f)
 -					basemat->mode_l |= MA_STR_SURFDIFF;
 -			}
 -			else if (node->type == NODE_GROUP)
 -				init_render_nodetree(bmain, (bNodeTree *)node->id, basemat, r_mode, amb);
 -		}
 -		else if (node->typeinfo->type == SH_NODE_NORMAL_MAP) {
 -			basemat->mode2_l |= MA_TANGENT_CONCRETE;
 -			NodeShaderNormalMap *nm = node->storage;
 -			bool taken_into_account = false;
 -			for (int i = 0; i < basemat->nmap_tangent_names_count; i++) {
 -				if (STREQ(basemat->nmap_tangent_names[i], nm->uv_map)) {
 -					taken_into_account = true;
 -					break;
 -				}
 -			}
 -			if (!taken_into_account) {
 -				BLI_assert(basemat->nmap_tangent_names_count < MAX_MTFACE + 1);
 -				strcpy(basemat->nmap_tangent_names[basemat->nmap_tangent_names_count++], nm->uv_map);
 -			}
 -		}
 -	}
 -}
 -
 -void init_render_material(Main *bmain, Material *mat, int r_mode, float *amb)
 -{
 -	
 -	do_init_render_material(bmain, mat, r_mode, amb);
 -	
 -	if (mat->nodetree && mat->use_nodes) {
 -		/* mode_l will take the pipeline options from the main material, and the or-ed
 -		 * result of non-pipeline options from the nodes. shadeless is an exception,
 -		 * mode_l will have it set when all node materials are shadeless. */
 -		mat->mode_l = (mat->mode & MA_MODE_PIPELINE) | MA_SHLESS;
 -		mat->mode2_l = mat->mode2 & MA_MODE2_PIPELINE;
 -		mat->nmap_tangent_names_count = 0;
 -		init_render_nodetree(bmain, mat->nodetree, mat, r_mode, amb);
 -		
 -		if (!mat->nodetree->execdata)
 -			mat->nodetree->execdata = ntreeShaderBeginExecTree(mat->nodetree);
 -	}
 -	else {
 -		mat->mode_l = mat->mode;
 -		mat->mode2_l = mat->mode2;
 -
 -		if (mat->strand_surfnor > 0.0f)
 -			mat->mode_l |= MA_STR_SURFDIFF;
 -	}
 -}
 -
 -void init_render_materials(Main *bmain, int r_mode, float *amb, bool do_default_material)
 -{
 -	Material *ma;
 -	
 -	/* clear these flags before going over materials, to make sure they
 -	 * are cleared only once, otherwise node materials contained in other
 -	 * node materials can go wrong */
 -	for (ma = bmain->mat.first; ma; ma = ma->id.next) {
 -		if (ma->id.us) {
 -			ma->texco = 0;
 -			ma->mapto = 0;
 -		}
 -	}
 -
 -	/* two steps, first initialize, then or the flags for layers */
 -	for (ma = bmain->mat.first; ma; ma = ma->id.next) {
 -		/* is_used flag comes back in convertblender.c */
 -		ma->flag &= ~MA_IS_USED;
 -		if (ma->id.us) 
 -			init_render_material(bmain, ma, r_mode, amb);
 -	}
 -
 -	if (do_default_material) {
 -		init_render_material(bmain, &defmaterial, r_mode, amb);
 -	}
 -}
 -
 -/* only needed for nodes now */
 -void end_render_material(Material *mat)
 -{
 -	if (mat && mat->nodetree && mat->use_nodes) {
 -		if (mat->nodetree->execdata)
 -			ntreeShaderEndExecTree(mat->nodetree->execdata);
 -	}
 -}
 -
 -void end_render_materials(Main *bmain)
 -{
 -	Material *ma;
 -	for (ma = bmain->mat.first; ma; ma = ma->id.next)
 -		if (ma->id.us) 
 -			end_render_material(ma);
 -}
 -
 -static bool material_in_nodetree(bNodeTree *ntree, Material *mat)
 -{
 -	bNode *node;
 -
 -	for (node = ntree->nodes.first; node; node = node->next) {
 -		if (node->id) {
 -			if (GS(node->id->name) == ID_MA) {
 -				if (node->id == (ID *)mat) {
 -					return true;
 -				}
 -			}
 -			else if (node->type == NODE_GROUP) {
 -				if (material_in_nodetree((bNodeTree *)node->id, mat)) {
 -					return true;
 -				}
 -			}
 -		}
 -	}
 -
 -	return false;
 -}
 -
 -bool material_in_material(Material *parmat, Material *mat)
 -{
 -	if (parmat == mat)
 -		return true;
 -	else if (parmat->nodetree && parmat

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list