[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [35470] trunk/blender:

Ervin Weber ervin.weber at gmail.com
Fri Mar 11 08:59:43 CET 2011


Revision: 35470
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=35470
Author:   lusque
Date:     2011-03-11 07:59:43 +0000 (Fri, 11 Mar 2011)
Log Message:
-----------


Modified Paths:
--------------
    trunk/blender/release/scripts/ui/properties_material.py
    trunk/blender/source/blender/blenkernel/BKE_blender.h
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/makesrna/intern/rna_material.c
    trunk/blender/source/blender/render/intern/source/convertblender.c
    trunk/blender/source/blender/render/intern/source/rayshade.c
    trunk/blender/source/blender/render/intern/source/shadeoutput.c

Modified: trunk/blender/release/scripts/ui/properties_material.py
===================================================================
--- trunk/blender/release/scripts/ui/properties_material.py	2011-03-11 05:23:56 UTC (rev 35469)
+++ trunk/blender/release/scripts/ui/properties_material.py	2011-03-11 07:59:43 UTC (rev 35470)
@@ -373,11 +373,12 @@
             row.prop(mat, "transparency_method", expand=True)
 
         split = layout.split()
+        split.active = base_mat.use_transparency
 
         col = split.column()
         col.prop(mat, "alpha")
         row = col.row()
-        row.active = base_mat.use_transparency and (not mat.use_shadeless)
+        row.active = (base_mat.transparency_method != 'MASK') and (not mat.use_shadeless)
         row.prop(mat, "specular_alpha", text="Specular")
 
         col = split.column()

Modified: trunk/blender/source/blender/blenkernel/BKE_blender.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_blender.h	2011-03-11 05:23:56 UTC (rev 35469)
+++ trunk/blender/source/blender/blenkernel/BKE_blender.h	2011-03-11 07:59:43 UTC (rev 35470)
@@ -44,7 +44,7 @@
  * and keep comment above the defines.
  * Use STRINGIFY() rather then defining with quotes */
 #define BLENDER_VERSION			256
-#define BLENDER_SUBVERSION		2
+#define BLENDER_SUBVERSION		3
 
 #define BLENDER_MINVERSION		250
 #define BLENDER_MINSUBVERSION	0

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c	2011-03-11 05:23:56 UTC (rev 35469)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c	2011-03-11 07:59:43 UTC (rev 35470)
@@ -11488,6 +11488,29 @@
 		}
 	}
 
+	if (main->versionfile < 256 || (main->versionfile == 256 && main->subversionfile <3)){
+
+		Material *mat;
+		int tex_nr, transp_tex;
+		
+		for(mat = main->mat.first; mat; mat = mat->id.next){
+			if(!(mat->mode & MA_TRANSP) && !(mat->material_type & MA_TYPE_VOLUME)){
+				
+				transp_tex= 0;
+				
+				for(tex_nr=0; tex_nr<MAX_MTEX; tex_nr++){
+					if(!mat->mtex[tex_nr]) continue;
+					if(mat->mtex[tex_nr]->mapto & MAP_ALPHA) transp_tex= 1;
+				}
+				
+				if(mat->alpha < 1.0f || mat->fresnel_tra > 0.0f || transp_tex){
+					mat->mode |= MA_TRANSP;
+					mat->mode &= ~(MA_ZTRANSP|MA_RAYTRANSP);
+				}
+			}
+		}
+	}
+
 	/* put compatibility code here until next subversion bump */
 
 	{

Modified: trunk/blender/source/blender/makesrna/intern/rna_material.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_material.c	2011-03-11 05:23:56 UTC (rev 35469)
+++ trunk/blender/source/blender/makesrna/intern/rna_material.c	2011-03-11 07:59:43 UTC (rev 35470)
@@ -1569,6 +1569,7 @@
 		{MA_TYPE_HALO, "HALO", 0, "Halo", "Render object as halo particles"},
 		{0, NULL, 0, NULL, NULL}};
 	static EnumPropertyItem transparency_items[] = {
+		{0, "MASK", 0, "Mask", "Mask the background"},
 		{MA_ZTRANSP, "Z_TRANSPARENCY", 0, "Z Transparency", "Use alpha buffer for transparent faces"},
 		{MA_RAYTRANSP, "RAYTRACE", 0, "Raytrace", "Use raytracing for transparent refraction rendering"},
 		{0, NULL, 0, NULL, NULL}};

Modified: trunk/blender/source/blender/render/intern/source/convertblender.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/convertblender.c	2011-03-11 05:23:56 UTC (rev 35469)
+++ trunk/blender/source/blender/render/intern/source/convertblender.c	2011-03-11 07:59:43 UTC (rev 35470)
@@ -3350,7 +3350,7 @@
 				
 				/* test for 100% transparant */
 				ok= 1;
-				if(ma->alpha==0.0f && ma->spectra==0.0f && ma->filter==0.0f) {
+				if(ma->alpha==0.0f && ma->spectra==0.0f && ma->filter==0.0f && (ma->mode & MA_TRANSP)) { 
 					ok= 0;
 					/* texture on transparency? */
 					for(a=0; a<MAX_MTEX; a++) {

Modified: trunk/blender/source/blender/render/intern/source/rayshade.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/rayshade.c	2011-03-11 05:23:56 UTC (rev 35469)
+++ trunk/blender/source/blender/render/intern/source/rayshade.c	2011-03-11 07:59:43 UTC (rev 35470)
@@ -762,7 +762,7 @@
 		if(depth>0) {
 			float fr, fg, fb, f, f1;
 
-			if((shi.mat->mode_l & MA_TRANSP) && shr.alpha < 1.0f) {
+			if((shi.mat->mode_l & MA_TRANSP) && shr.alpha < 1.0f && (shi.mat->mode_l & (MA_ZTRANSP | MA_RAYTRANSP))) { 
 				float nf, f, refract[3], tracol[4];
 				
 				tracol[0]= shi.r;

Modified: trunk/blender/source/blender/render/intern/source/shadeoutput.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/shadeoutput.c	2011-03-11 05:23:56 UTC (rev 35469)
+++ trunk/blender/source/blender/render/intern/source/shadeoutput.c	2011-03-11 07:59:43 UTC (rev 35470)
@@ -878,7 +878,9 @@
 
 	if(ma->fresnel_tra!=0.0f) 
 		shi->alpha*= fresnel_fac(shi->view, shi->vn, ma->fresnel_tra_i, ma->fresnel_tra);
-
+	
+	if (!(shi->mode & MA_TRANSP)) shi->alpha= 1.0f;
+	
 	shr->diff[0]= shi->r;
 	shr->diff[1]= shi->g;
 	shr->diff[2]= shi->b;
@@ -1578,7 +1580,7 @@
 					accum = 1.0f - shaded;
 			}}
 
-			shr->alpha= (shi->mat->alpha)*(accum);
+			shr->alpha= (shi->alpha)*(accum);
 		}
 		else {
 			/* If "fully shaded", use full alpha even on areas that have no lights */
@@ -1638,6 +1640,8 @@
 	
 	memset(shr, 0, sizeof(ShadeResult));
 	
+	if(!(shi->mode & MA_TRANSP)) shi->alpha = 1.0f;
+	
 	/* separate loop */
 	if(ma->mode & MA_ONLYSHADOW) {
 		shade_lamp_loop_only_shadow(shi, shr);
@@ -1654,10 +1658,12 @@
 			shi->g= shi->vcol[1];
 			shi->b= shi->vcol[2];
 			if(ma->mode & (MA_FACETEXTURE_ALPHA))
-				shi->alpha= shi->vcol[3];
+				shi->alpha= (shi->mode & MA_TRANSP) ? shi->vcol[3] : 1.0f;
 		}
-		if(ma->texco)
+		if(ma->texco){
 			do_material_tex(shi);
+			if (!(shi->mode & MA_TRANSP)) shi->alpha = 1.0f;
+		}
 		
 		shr->col[0]= shi->r*shi->alpha;
 		shr->col[1]= shi->g*shi->alpha;
@@ -1812,11 +1818,11 @@
 	
 	/* alpha in end, spec can influence it */
 	if(passflag & (SCE_PASS_COMBINED)) {
-		if(ma->fresnel_tra!=0.0f) 
+		if((ma->fresnel_tra!=0.0f) && (shi->mode & MA_TRANSP))
 			shi->alpha*= fresnel_fac(shi->view, shi->vn, ma->fresnel_tra_i, ma->fresnel_tra);
 			
 		/* note: shi->mode! */
-		if(shi->mode & MA_TRANSP) {
+		if(shi->mode & MA_TRANSP && (shi->mode & (MA_ZTRANSP|MA_RAYTRANSP))) {
 			if(shi->spectra!=0.0f) {
 				float t = MAX3(shr->spec[0], shr->spec[1], shr->spec[2]);
 				t *= shi->spectra;
@@ -1886,7 +1892,7 @@
 			shr->combined[0] *= obcol[0];
 			shr->combined[1] *= obcol[1];
 			shr->combined[2] *= obcol[2];
-			shr->alpha *= obcol[3];
+			if (shi->mode & MA_TRANSP) shr->alpha *= obcol[3];
 		}
 	}
 




More information about the Bf-blender-cvs mailing list