[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