[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [19320] branches/sim_physics/source/ blender/render/intern/source: Fixed a problem in how volumes were interpreting textures, and removed

Matt Ebb matt at mke3.net
Tue Mar 17 06:33:07 CET 2009


Revision: 19320
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19320
Author:   broken
Date:     2009-03-17 06:33:05 +0100 (Tue, 17 Mar 2009)

Log Message:
-----------
Fixed a problem in how volumes were interpreting textures, and removed 
associated workarounds in point density texture.

Modified Paths:
--------------
    branches/sim_physics/source/blender/render/intern/source/pointdensity.c
    branches/sim_physics/source/blender/render/intern/source/texture.c

Modified: branches/sim_physics/source/blender/render/intern/source/pointdensity.c
===================================================================
--- branches/sim_physics/source/blender/render/intern/source/pointdensity.c	2009-03-17 00:31:10 UTC (rev 19319)
+++ branches/sim_physics/source/blender/render/intern/source/pointdensity.c	2009-03-17 05:33:05 UTC (rev 19320)
@@ -373,7 +373,7 @@
 
 int pointdensitytex(Tex *tex, float *texvec, TexResult *texres)
 {
-	int retval = TEX_INT+TEX_RGB;
+	int retval = TEX_INT;
 	PointDensity *pd = tex->pd;
 	PointDensityRangeData pdr;
 	float density=0.0f, age=0.0f, time=0.0f;
@@ -382,11 +382,11 @@
 	float turb, noise_fac;
 	int num=0;
 	
-	if ((!pd) || (!pd->point_tree)) {
-		texres->tin = 0.0f;
+	texres->tin = 0.0f;
+	
+	if ((!pd) || (!pd->point_tree))		
 		return 0;
-	}
-	
+		
 	init_pointdensityrangedata(pd, &pdr, &density, vec, &age);
 	noise_fac = pd->noise_fac * 0.5f;	/* better default */
 	
@@ -400,6 +400,9 @@
 			age /= num;
 			VecMulf(vec, 1.0f/num);
 		}
+		
+		/* reset */
+		density = vec[0] = vec[1] = vec[2] = 0.0f;
 	}
 	
 	if (pd->flag & TEX_PD_TURBULENCE) {
@@ -422,11 +425,9 @@
 		co[0] = texvec[0] + noise_fac * turb;
 		co[1] = texvec[1] + noise_fac * turb;
 		co[2] = texvec[2] + noise_fac * turb;
-		
-		/* reset and prepare for a new BVH query with the perturbed coordinates */
-		density = vec[0] = vec[1] = vec[2] = 0.0f;
 	}
 
+	/* BVH query with the potentially perturbed coordinates */
 	num = BLI_bvhtree_range_query(pd->point_tree, co, pd->radius, accum_density, &pdr);
 	if (num > 0) {
 		age /= num;
@@ -436,13 +437,19 @@
 	texres->tin = density;
 	BRICONT;
 	
+	if (pd->color_source == TEX_PD_COLOR_CONSTANT)
+		return retval;
+	
+	retval |= TEX_RGB;
+	
 	switch (pd->color_source) {
 		case TEX_PD_COLOR_PARTAGE:
 			if (pd->coba) {
 				if (do_colorband(pd->coba, age, col)) {
 					texres->talpha= 1;
-					QUATCOPY(&texres->tr, col);
-					texres->tin *= texres->ta;
+					VECCOPY(&texres->tr, col);
+					texres->tin *= col[3];
+					texres->ta = texres->tin;
 				}
 			}
 			break;
@@ -453,16 +460,18 @@
 			if (pd->coba) {
 				if (do_colorband(pd->coba, speed, col)) {
 					texres->talpha= 1;	
-					QUATCOPY(&texres->tr, col);
-					texres->tin *= texres->ta;
+					VECCOPY(&texres->tr, col);
+					texres->tin *= col[3];
+					texres->ta = texres->tin;
 				}
 			}
 			break;
 		}
 		case TEX_PD_COLOR_PARTVEL:
+			texres->talpha= 1;
 			VecMulf(vec, pd->speed_scale);
 			VECCOPY(&texres->tr, vec);
-			texres->ta = 1.0f;
+			texres->ta = texres->tin;
 			break;
 		case TEX_PD_COLOR_CONSTANT:
 		default:

Modified: branches/sim_physics/source/blender/render/intern/source/texture.c
===================================================================
--- branches/sim_physics/source/blender/render/intern/source/texture.c	2009-03-17 00:31:10 UTC (rev 19319)
+++ branches/sim_physics/source/blender/render/intern/source/texture.c	2009-03-17 05:33:05 UTC (rev 19320)
@@ -1653,7 +1653,7 @@
 				float varfac= mtex->varfac*stencilTin;
 				
 				/* convert RGB to intensity if intensity info isn't provided */
-				if (rgbnor & TEX_INT) {
+				if (!(rgbnor & TEX_INT)) {
 					if (rgbnor & TEX_RGB) {
 						if(texres.talpha) texres.tin= texres.ta;
 						else texres.tin= (0.35*texres.tr+0.45*texres.tg+0.2*texres.tb);





More information about the Bf-blender-cvs mailing list