[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [32075] trunk/blender/source/blender: bugfix [#23595] Texture paint with a node based brush produces artifacts

Campbell Barton ideasman42 at gmail.com
Thu Sep 23 14:03:35 CEST 2010


Revision: 32075
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32075
Author:   campbellbarton
Date:     2010-09-23 14:03:34 +0200 (Thu, 23 Sep 2010)

Log Message:
-----------
bugfix [#23595] Texture paint with a node based brush produces artifacts
also changed displace modifier not to link object depgraph when not using object texturespace.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_brush.h
    trunk/blender/source/blender/blenkernel/intern/brush.c
    trunk/blender/source/blender/blenkernel/intern/particle.c
    trunk/blender/source/blender/editors/mesh/editmesh_mods.c
    trunk/blender/source/blender/editors/sculpt_paint/paint_image.c
    trunk/blender/source/blender/editors/sculpt_paint/sculpt.c
    trunk/blender/source/blender/makesrna/intern/rna_modifier.c
    trunk/blender/source/blender/modifiers/intern/MOD_displace.c
    trunk/blender/source/blender/modifiers/intern/MOD_solidify.c
    trunk/blender/source/blender/render/extern/include/RE_render_ext.h
    trunk/blender/source/blender/render/intern/source/renderdatabase.c
    trunk/blender/source/blender/render/intern/source/texture.c

Modified: trunk/blender/source/blender/blenkernel/BKE_brush.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_brush.h	2010-09-23 11:29:58 UTC (rev 32074)
+++ trunk/blender/source/blender/blenkernel/BKE_brush.h	2010-09-23 12:03:34 UTC (rev 32075)
@@ -62,7 +62,7 @@
 float brush_curve_strength(struct Brush *br, float p, const float len); /* used for sculpt */
 
 /* sampling */
-void brush_sample_tex(struct Brush *brush, float *xy, float *rgba);
+void brush_sample_tex(struct Brush *brush, float *xy, float *rgba, const int thread);
 void brush_imbuf_new(struct Brush *brush, short flt, short texfalloff, int size,
 	struct ImBuf **imbuf);
 

Modified: trunk/blender/source/blender/blenkernel/intern/brush.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/brush.c	2010-09-23 11:29:58 UTC (rev 32074)
+++ trunk/blender/source/blender/blenkernel/intern/brush.c	2010-09-23 12:03:34 UTC (rev 32075)
@@ -480,7 +480,7 @@
 }
 
 /* Brush Sampling */
-void brush_sample_tex(Brush *brush, float *xy, float *rgba)
+void brush_sample_tex(Brush *brush, float *xy, float *rgba, const int thread)
 {
 	MTex *mtex= &brush->mtex;
 
@@ -493,7 +493,7 @@
 		co[1]= xy[1]/radius;
 		co[2]= 0.0f;
 
-		hasrgb= externtex(mtex, co, &tin, &tr, &tg, &tb, &ta);
+		hasrgb= externtex(mtex, co, &tin, &tr, &tg, &tb, &ta, thread);
 
 		if (hasrgb) {
 			rgba[0]= tr;
@@ -547,12 +547,12 @@
 					dstf[3]= alpha*brush_curve_strength_clamp(brush, dist, radius);
 				}
 				else if (texfall == 1) {
-					brush_sample_tex(brush, xy, dstf);
+					brush_sample_tex(brush, xy, dstf, 0);
 				}
 				else {
 					dist = sqrt(xy[0]*xy[0] + xy[1]*xy[1]);
 
-					brush_sample_tex(brush, xy, rgba);
+					brush_sample_tex(brush, xy, rgba, 0);
 
 					dstf[0] = rgba[0]*brush->rgb[0];
 					dstf[1] = rgba[1]*brush->rgb[1];
@@ -583,7 +583,7 @@
 					dst[3]= FTOCHAR(alpha*brush_curve_strength(brush, dist, radius));
 				}
 				else if (texfall == 1) {
-					brush_sample_tex(brush, xy, rgba);
+					brush_sample_tex(brush, xy, rgba, 0);
 					dst[0]= FTOCHAR(rgba[0]);
 					dst[1]= FTOCHAR(rgba[1]);
 					dst[2]= FTOCHAR(rgba[2]);
@@ -592,7 +592,7 @@
 				else {
 					dist = sqrt(xy[0]*xy[0] + xy[1]*xy[1]);
 
-					brush_sample_tex(brush, xy, rgba);
+					brush_sample_tex(brush, xy, rgba, 0);
 					dst[0] = FTOCHAR(rgba[0]*brush->rgb[0]);
 					dst[1] = FTOCHAR(rgba[1]*brush->rgb[1]);
 					dst[2] = FTOCHAR(rgba[2]*brush->rgb[2]);
@@ -739,7 +739,7 @@
 					xy[0] = x + xoff;
 					xy[1] = y + yoff;
 
-					brush_sample_tex(brush, xy, tf);
+					brush_sample_tex(brush, xy, tf, 0);
 				}
 
 				bf[0] = tf[0]*mf[0];
@@ -770,7 +770,7 @@
 					xy[0] = x + xoff;
 					xy[1] = y + yoff;
 
-					brush_sample_tex(brush, xy, rgba);
+					brush_sample_tex(brush, xy, rgba, 0);
 					t[0]= FTOCHAR(rgba[0]);
 					t[1]= FTOCHAR(rgba[1]);
 					t[2]= FTOCHAR(rgba[2]);

Modified: trunk/blender/source/blender/blenkernel/intern/particle.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/particle.c	2010-09-23 11:29:58 UTC (rev 32074)
+++ trunk/blender/source/blender/blenkernel/intern/particle.c	2010-09-23 12:03:34 UTC (rev 32075)
@@ -3686,7 +3686,7 @@
 			else
 				VECCOPY(texco,orco);
 
-			externtex(mtex, texco, &value, rgba, rgba+1, rgba+2, rgba+3);
+			externtex(mtex, texco, &value, rgba, rgba+1, rgba+2, rgba+3, 0);
 			if((event & mtex->pmapto) & MAP_PA_TIME){
 				if((setvars&MAP_PA_TIME)==0){
 					ptex->time=0.0;
@@ -3740,7 +3740,7 @@
 				psys_particle_on_emitter(sim->psmd,sim->psys->part->from,pa->num,pa->num_dmcache,pa->fuv,pa->foffset,co,0,0,0,texco, 0);
 			}
 
-			externtex(mtex, texco, &value, rgba, rgba+1, rgba+2, rgba+3);
+			externtex(mtex, texco, &value, rgba, rgba+1, rgba+2, rgba+3, 0);
 
 			if((event & mtex->pmapto) & MAP_PA_TIME){
 				/* the first time has to set the base value for time regardless of blend mode */

Modified: trunk/blender/source/blender/editors/mesh/editmesh_mods.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_mods.c	2010-09-23 11:29:58 UTC (rev 32074)
+++ trunk/blender/source/blender/editors/mesh/editmesh_mods.c	2010-09-23 12:03:34 UTC (rev 32075)
@@ -4450,7 +4450,7 @@
 			}
 			else {
 				float tin, dum;
-				externtex(ma->mtex[0], eve->co, &tin, &dum, &dum, &dum, &dum);
+				externtex(ma->mtex[0], eve->co, &tin, &dum, &dum, &dum, &dum, 0);
 				eve->co[2]+= 0.05*tin;
 			}
 		}

Modified: trunk/blender/source/blender/editors/sculpt_paint/paint_image.c
===================================================================
--- trunk/blender/source/blender/editors/sculpt_paint/paint_image.c	2010-09-23 11:29:58 UTC (rev 32074)
+++ trunk/blender/source/blender/editors/sculpt_paint/paint_image.c	2010-09-23 12:03:34 UTC (rev 32075)
@@ -3757,7 +3757,7 @@
 
 					if (falloff > 0.0f) {
 						if (ps->is_texbrush) {
-							brush_sample_tex(ps->brush, projPixel->projCoSS, rgba);
+							brush_sample_tex(ps->brush, projPixel->projCoSS, rgba, thread_index);
 							alpha = rgba[3];
 						} else {
 							alpha = 1.0f;

Modified: trunk/blender/source/blender/editors/sculpt_paint/sculpt.c
===================================================================
--- trunk/blender/source/blender/editors/sculpt_paint/sculpt.c	2010-09-23 11:29:58 UTC (rev 32074)
+++ trunk/blender/source/blender/editors/sculpt_paint/sculpt.c	2010-09-23 12:03:34 UTC (rev 32075)
@@ -724,7 +724,7 @@
 		/* Get strength by feeding the vertex 
 		   location directly into a texture */
 		externtex(mtex, point, &avg,
-			  &jnk, &jnk, &jnk, &jnk);
+			  &jnk, &jnk, &jnk, &jnk, 0);
 	}
 	else if(ss->texcache) {
 		float rotation = -mtex->rot;

Modified: trunk/blender/source/blender/makesrna/intern/rna_modifier.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_modifier.c	2010-09-23 11:29:58 UTC (rev 32074)
+++ trunk/blender/source/blender/makesrna/intern/rna_modifier.c	2010-09-23 12:03:34 UTC (rev 32075)
@@ -1306,7 +1306,7 @@
 	RNA_def_property_enum_sdna(prop, NULL, "texmapping");
 	RNA_def_property_enum_items(prop, prop_texture_coordinates_items);
 	RNA_def_property_ui_text(prop, "Texture Coordinates", "");
-	RNA_def_property_update(prop, 0, "rna_Modifier_update");
+	RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update");
 
 	prop= RNA_def_property(srna, "uv_layer", PROP_STRING, PROP_NONE);
 	RNA_def_property_string_sdna(prop, NULL, "uvlayer_name");

Modified: trunk/blender/source/blender/modifiers/intern/MOD_displace.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_displace.c	2010-09-23 11:29:58 UTC (rev 32074)
+++ trunk/blender/source/blender/modifiers/intern/MOD_displace.c	2010-09-23 12:03:34 UTC (rev 32075)
@@ -134,7 +134,7 @@
 {
 	DisplaceModifierData *dmd = (DisplaceModifierData*) md;
 
-	if(dmd->map_object) {
+	if(dmd->map_object && dmd->texmapping == MOD_DISP_MAP_OBJECT) {
 		DagNode *curNode = dag_get_node(forest, dmd->map_object);
 
 		dag_add_relation(forest, curNode, obNode,

Modified: trunk/blender/source/blender/modifiers/intern/MOD_solidify.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_solidify.c	2010-09-23 11:29:58 UTC (rev 32074)
+++ trunk/blender/source/blender/modifiers/intern/MOD_solidify.c	2010-09-23 12:03:34 UTC (rev 32075)
@@ -442,11 +442,11 @@
 				j= 2;
 			}
 
-			for(; j>=0; j--) {
+			do {
 				vidx = *(&mf->v1 + j);
 				vert_accum[vidx] += face_angles[j];
 				vert_angles[vidx]+= shell_angle_to_dist(angle_normalized_v3v3(vert_nors[vidx], face_nors[i])) * face_angles[j];
-			}
+			} while(j--);
 		}
 
 		/* vertex group support */

Modified: trunk/blender/source/blender/render/extern/include/RE_render_ext.h
===================================================================
--- trunk/blender/source/blender/render/extern/include/RE_render_ext.h	2010-09-23 11:29:58 UTC (rev 32074)
+++ trunk/blender/source/blender/render/extern/include/RE_render_ext.h	2010-09-23 12:03:34 UTC (rev 32075)
@@ -51,7 +51,7 @@
 //void    RE_zbufferall_radio(struct RadView *vw, struct RNode **rg_elem, int rg_totelem, struct Render *re);
 
 /* particle.c, effect.c, editmesh_modes.c and brush.c, returns 1 if rgb, 0 otherwise */
-int	externtex(struct MTex *mtex, float *vec, float *tin, float *tr, float *tg, float *tb, float *ta);
+int	externtex(struct MTex *mtex, float *vec, float *tin, float *tr, float *tg, float *tb, float *ta, const int thread);
 
 /* particle.c */
 void texture_rgb_blend(float *in, float *tex, float *out, float fact, float facg, int blendtype);

Modified: trunk/blender/source/blender/render/intern/source/renderdatabase.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/renderdatabase.c	2010-09-23 11:29:58 UTC (rev 32074)
+++ trunk/blender/source/blender/render/intern/source/renderdatabase.c	2010-09-23 12:03:34 UTC (rev 32075)
@@ -1019,7 +1019,7 @@
 				}
 			}
 
-			externtex(mtex, texvec, &tin, &tr, &tg, &tb, &ta);
+			externtex(mtex, texvec, &tin, &tr, &tg, &tb, &ta, 0);
 
 			yn= tin*mtex->colfac;
 			zn= tin*mtex->alphafac;
@@ -1151,7 +1151,7 @@
 				VECCOPY(texvec, orco);
 			}
 
-			externtex(mtex, texvec, &tin, &tr, &tg, &tb, &ta);
+			externtex(mtex, texvec, &tin, &tr, &tg, &tb, &ta, 0);
 
 			//yn= tin*mtex->colfac;
 			//zn= tin*mtex->alphafac;

Modified: trunk/blender/source/blender/render/intern/source/texture.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/texture.c	2010-09-23 11:29:58 UTC (rev 32074)
+++ trunk/blender/source/blender/render/intern/source/texture.c	2010-09-23 12:03:34 UTC (rev 32075)
@@ -3016,7 +3016,7 @@
 
 /* ------------------------------------------------------------------------- */
 
-int externtex(MTex *mtex, float *vec, float *tin, float *tr, float *tg, float *tb, float *ta)
+int externtex(MTex *mtex, float *vec, float *tin, float *tr, float *tg, float *tb, float *ta, const int thread)
 {
 	Tex *tex;
 	TexResult texr;
@@ -3042,7 +3042,7 @@
 		do_2d_mapping(mtex, texvec, NULL, NULL, dxt, dyt);
 	}
 	
-	rgb= multitex(tex, texvec, dxt, dyt, 0, &texr, 0, mtex->which_output);

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list