[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [26806] trunk/blender: Added an option " Cast Approximate" to control if a material should cast

Brecht Van Lommel brecht at blender.org
Thu Feb 11 16:43:31 CET 2010


Revision: 26806
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26806
Author:   blendix
Date:     2010-02-11 16:43:31 +0100 (Thu, 11 Feb 2010)

Log Message:
-----------
Added an option "Cast Approximate" to control if a material should cast
shadow when using approximate AO, separate from "Traceable".

Modified Paths:
--------------
    trunk/blender/release/scripts/ui/properties_material.py
    trunk/blender/source/blender/blenkernel/BKE_blender.h
    trunk/blender/source/blender/blenkernel/intern/material.c
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/makesdna/DNA_material_types.h
    trunk/blender/source/blender/makesrna/intern/rna_material.c
    trunk/blender/source/blender/render/intern/source/occlusion.c

Modified: trunk/blender/release/scripts/ui/properties_material.py
===================================================================
--- trunk/blender/release/scripts/ui/properties_material.py	2010-02-11 14:53:29 UTC (rev 26805)
+++ trunk/blender/release/scripts/ui/properties_material.py	2010-02-11 15:43:31 UTC (rev 26806)
@@ -334,8 +334,8 @@
         sub = col.column()
         sub.active = (not mat.ray_shadow_bias)
         sub.prop(mat, "shadow_ray_bias", text="Ray Bias")
+        col.prop(mat, "cast_approximate")
 
-
 class MATERIAL_PT_diffuse(MaterialButtonsPanel):
     bl_label = "Diffuse"
     COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}

Modified: trunk/blender/source/blender/blenkernel/BKE_blender.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_blender.h	2010-02-11 14:53:29 UTC (rev 26805)
+++ trunk/blender/source/blender/blenkernel/BKE_blender.h	2010-02-11 15:43:31 UTC (rev 26806)
@@ -43,7 +43,7 @@
 struct ReportList;
 
 #define BLENDER_VERSION			250
-#define BLENDER_SUBVERSION		16
+#define BLENDER_SUBVERSION		17
 
 #define BLENDER_MINVERSION		250
 #define BLENDER_MINSUBVERSION	0

Modified: trunk/blender/source/blender/blenkernel/intern/material.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/material.c	2010-02-11 14:53:29 UTC (rev 26805)
+++ trunk/blender/source/blender/blenkernel/intern/material.c	2010-02-11 15:43:31 UTC (rev 26806)
@@ -188,7 +188,7 @@
 	ma->vol.ms_diff = 1.f;
 	ma->vol.ms_intensity = 1.f;
 	
-	ma->mode= MA_TRACEBLE|MA_SHADBUF|MA_SHADOW|MA_RAYBIAS|MA_TANGENT_STR|MA_ZTRANSP;
+	ma->mode= MA_TRACEBLE|MA_SHADBUF|MA_SHADOW|MA_RAYBIAS|MA_TANGENT_STR|MA_ZTRANSP|MA_APPROX_OCCLUSION;
 
 	ma->preview = NULL;
 }

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c	2010-02-11 14:53:29 UTC (rev 26805)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c	2010-02-11 15:43:31 UTC (rev 26806)
@@ -10563,10 +10563,10 @@
 		}
 	}
 	
-	/* put 2.50 compatibility code here until next subversion bump */
-	{
+	if (main->versionfile < 250 || (main->versionfile == 250 && main->subversionfile < 17)) {
 		Scene *sce;
 		Sequence *seq;
+		Material *ma;
 
 		/* initialize to sane default so toggling on border shows something */
 		for(sce = main->scene.first; sce; sce = sce->id.next) {
@@ -10587,6 +10587,10 @@
 			SEQ_END
 		}
 
+		for(ma = main->mat.first; ma; ma=ma->id.next)
+			if(ma->mode & MA_TRACEBLE)
+				ma->shade_flag |= MA_APPROX_OCCLUSION;
+
 		/* sequencer changes */
 		{
 			bScreen *screen;
@@ -10621,6 +10625,10 @@
 		} /* sequencer changes */
 	}
 
+	/* put 2.50 compatibility code here until next subversion bump */
+	{
+	}
+
 	/* WATCH IT!!!: pointers from libdata have not been converted yet here! */
 	/* WATCH IT 2!: Userdef struct init has to be in editors/interface/resources.c! */
 

Modified: trunk/blender/source/blender/makesdna/DNA_material_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_material_types.h	2010-02-11 14:53:29 UTC (rev 26805)
+++ trunk/blender/source/blender/makesdna/DNA_material_types.h	2010-02-11 15:43:31 UTC (rev 26806)
@@ -234,6 +234,7 @@
 /* shade_flag */
 #define MA_CUBIC			1
 #define MA_OBCOLOR			2
+#define MA_APPROX_OCCLUSION	4
 
 /* diff_shader */
 #define MA_DIFF_LAMBERT		0

Modified: trunk/blender/source/blender/makesrna/intern/rna_material.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_material.c	2010-02-11 14:53:29 UTC (rev 26805)
+++ trunk/blender/source/blender/makesrna/intern/rna_material.c	2010-02-11 15:43:31 UTC (rev 26806)
@@ -1648,6 +1648,11 @@
 	RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_SHADBUF);
 	RNA_def_property_ui_text(prop, "Cast Buffer Shadows", "Allow this material to cast shadows from shadow buffer lamps");
 	RNA_def_property_update(prop, 0, "rna_Material_update");
+
+	prop= RNA_def_property(srna, "cast_approximate", PROP_BOOLEAN, PROP_NONE);
+	RNA_def_property_boolean_sdna(prop, NULL, "shade_flag", MA_APPROX_OCCLUSION);
+	RNA_def_property_ui_text(prop, "Cast Approximate", "Allow this material to cast shadows when using approximate ambient occlusion.");
+	RNA_def_property_update(prop, 0, "rna_Material_update");
 	
 	prop= RNA_def_property(srna, "tangent_shading", PROP_BOOLEAN, PROP_NONE);
 	RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_TANGENT_V);

Modified: trunk/blender/source/blender/render/intern/source/occlusion.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/occlusion.c	2010-02-11 14:53:29 UTC (rev 26805)
+++ trunk/blender/source/blender/render/intern/source/occlusion.c	2010-02-11 15:43:31 UTC (rev 26806)
@@ -629,6 +629,7 @@
 	OcclusionTree *tree;
 	ObjectInstanceRen *obi;
 	ObjectRen *obr;
+	Material *ma;
 	VlakRen *vlr= NULL;
 	int a, b, c, totface;
 
@@ -640,7 +641,9 @@
 			if((a & 255)==0) vlr= obr->vlaknodes[a>>8].vlak;
 			else vlr++;
 
-			if((vlr->mat->mode & MA_TRACEBLE) && (vlr->mat->material_type == MA_TYPE_SURFACE))
+			ma= vlr->mat;
+
+			if((ma->shade_flag & MA_APPROX_OCCLUSION) && (ma->material_type == MA_TYPE_SURFACE))
 				totface++;
 		}
 	}
@@ -677,7 +680,9 @@
 			if((a & 255)==0) vlr= obr->vlaknodes[a>>8].vlak;
 			else vlr++;
 
-			if((vlr->mat->mode & MA_TRACEBLE) && (vlr->mat->material_type == MA_TYPE_SURFACE)) {
+			ma= vlr->mat;
+
+			if((ma->shade_flag & MA_APPROX_OCCLUSION) && (ma->material_type == MA_TYPE_SURFACE)) {
 				tree->face[b].obi= c;
 				tree->face[b].facenr= a;
 				tree->occlusion[b]= 1.0f;





More information about the Bf-blender-cvs mailing list