[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [27361] branches/render25: Render Branch:

Brecht Van Lommel brecht at blender.org
Tue Mar 9 14:03:03 CET 2010


Revision: 27361
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27361
Author:   blendix
Date:     2010-03-09 14:03:03 +0100 (Tue, 09 Mar 2010)

Log Message:
-----------
Render Branch:
* add lamp option "indirect" to indicate if the lamp should be used
  as part of indirect lighting
* add shadow buffer option to indicate if strands should be part of
  the shadow buffer
* revert some dupli debugging code that wasn't supposed to be comitted

Modified Paths:
--------------
    branches/render25/release/scripts/ui/properties_data_lamp.py
    branches/render25/source/blender/blenkernel/intern/anim.c
    branches/render25/source/blender/makesdna/DNA_lamp_types.h
    branches/render25/source/blender/makesrna/intern/makesrna.c
    branches/render25/source/blender/makesrna/intern/rna_lamp.c
    branches/render25/source/blender/render/extern/include/RE_shader_ext.h
    branches/render25/source/blender/render/intern/source/lamp.c
    branches/render25/source/blender/render/intern/source/rayshade.c
    branches/render25/source/blender/render/intern/source/zbuf.c

Modified: branches/render25/release/scripts/ui/properties_data_lamp.py
===================================================================
--- branches/render25/release/scripts/ui/properties_data_lamp.py	2010-03-09 11:42:04 UTC (rev 27360)
+++ branches/render25/release/scripts/ui/properties_data_lamp.py	2010-03-09 13:03:03 UTC (rev 27361)
@@ -94,32 +94,53 @@
         split = layout.split()
 
         col = split.column()
-        sub = col.column()
-        sub.prop(lamp, "color", text="")
+        col.prop(lamp, "color", text="")
 
         if lamp.type in ('POINT', 'SPOT', 'AREA'):
-            sub.prop(lamp, "power")
+            col.prop(lamp, "power")
+        else:
+            col.prop(lamp, "energy")
+        col.prop(lamp, "negative")
 
+        if lamp.type in ('POINT', 'SPOT', 'AREA'):
+            col.prop(lamp, "multi_shade")
+
+        if wide_ui:
+            col = split.column()
+
+        if lamp.type in ('POINT', 'SPOT', 'AREA'):
             if lamp.type != 'AREA' or lamp.multi_shade:
-                sub.label(text="Falloff:")
-                sub.prop(lamp, "falloff_type", text="")
+                col.label(text="Falloff:")
+                col.prop(lamp, "falloff_type", text="")
                 if lamp.falloff_type == 'CUSTOM_CURVE':
-                    sub.prop(lamp, "falloff_distance", text="Distance")
+                    col.prop(lamp, "falloff_distance", text="Distance")
                 else:
-                    sub.prop(lamp, "falloff_smooth", text="Smooth")
+                    col.prop(lamp, "falloff_smooth", text="Smooth")
 
                 col.prop(lamp, "sphere")
-        else:
-            sub.prop(lamp, "energy")
 
+class DATA_PT_lamp_options(DataButtonsPanel):
+    bl_label = "Options"
+    bl_default_closed = True
+
+    def draw(self, context):
+        layout = self.layout
+
+        lamp = context.lamp
+        wide_ui = context.region.width > narrowui
+
+        split = layout.split()
+
+        col = split.column()
+
+        col.prop(lamp, "specular")
+        col.prop(lamp, "diffuse")
+
         if wide_ui:
             col = split.column()
-        col.prop(lamp, "negative")
+
+        col.prop(lamp, "indirect")
         col.prop(lamp, "layer", text="This Layer Only")
-        col.prop(lamp, "specular")
-        col.prop(lamp, "diffuse")
-        if lamp.type in ('POINT', 'SPOT', 'AREA'):
-            col.prop(lamp, "multi_shade")
 
 class DATA_PT_sunsky(DataButtonsPanel):
     bl_label = "Sky & Atmosphere"
@@ -221,6 +242,9 @@
             col.prop(lamp, "shadow_layer", text="This Layer Only")
             col.prop(lamp, "only_shadow")
 
+            if lamp.shadow_method == 'BUFFER_SHADOW':
+                col.prop(lamp, "shadow_strands")
+
         if lamp.shadow_method == 'RAY_SHADOW':
             col = layout.column()
             col.label(text="Sampling:")
@@ -385,6 +409,7 @@
     DATA_PT_context_lamp,
     DATA_PT_preview,
     DATA_PT_lamp,
+    DATA_PT_lamp_options,
     DATA_PT_falloff_curve,
     DATA_PT_area,
     DATA_PT_spot,

Modified: branches/render25/source/blender/blenkernel/intern/anim.c
===================================================================
--- branches/render25/source/blender/blenkernel/intern/anim.c	2010-03-09 11:42:04 UTC (rev 27360)
+++ branches/render25/source/blender/blenkernel/intern/anim.c	2010-03-09 13:03:03 UTC (rev 27361)
@@ -86,7 +86,7 @@
 /* --------------------- */
 /* forward declarations */
 
-static void object_duplilist_recursive(ID *id, Scene *scene, Object *ob, ListBase *duplilist, float obmat[4][4], float par_space_mat[4][4], int level, int animated);
+static void object_duplilist_recursive(ID *id, Scene *scene, Object *ob, ListBase *duplilist, float par_space_mat[][4], int level, int animated);
 
 /* ******************************************************************** */
 /* Animation Visualisation */
@@ -659,9 +659,9 @@
 			dob->no_draw= (dob->origlay & group->layer)==0;
 			
 			if(go->ob->transflag & OB_DUPLI) {
-				//copy_m4_m4(dob->ob->obmat, dob->mat);
-				object_duplilist_recursive((ID *)group, scene, go->ob, lb, dob->mat, ob->obmat, level+1, animated);
-				//copy_m4_m4(dob->ob->obmat, dob->omat);
+				copy_m4_m4(dob->ob->obmat, dob->mat);
+				object_duplilist_recursive((ID *)group, scene, go->ob, lb, ob->obmat, level+1, animated);
+				copy_m4_m4(dob->ob->obmat, dob->omat);
 			}
 		}
 	}
@@ -754,11 +754,11 @@
 		VECCOPY(dob->orco, vdd->orco[index]);
 	
 	if(vdd->ob->transflag & OB_DUPLI) {
-		//float tmpmat[4][4];
-		//copy_m4_m4(tmpmat, vdd->ob->obmat);
-		//copy_m4_m4(vdd->ob->obmat, obmat); /* pretend we are really this mat */
-		object_duplilist_recursive((ID *)vdd->id, vdd->scene, vdd->ob, vdd->lb, obmat, obmat, vdd->level+1, vdd->animated);
-		//copy_m4_m4(vdd->ob->obmat, tmpmat);
+		float tmpmat[4][4];
+		copy_m4_m4(tmpmat, vdd->ob->obmat);
+		copy_m4_m4(vdd->ob->obmat, obmat); /* pretend we are really this mat */
+		object_duplilist_recursive((ID *)vdd->id, vdd->scene, vdd->ob, vdd->lb, obmat, vdd->level+1, vdd->animated);
+		copy_m4_m4(vdd->ob->obmat, tmpmat);
 	}
 }
 
@@ -1042,10 +1042,10 @@
 						
 						if(ob->transflag & OB_DUPLI) {
 							float tmpmat[4][4];
-							//copy_m4_m4(tmpmat, ob->obmat);
-							//copy_m4_m4(ob->obmat, obmat); /* pretend we are really this mat */
-							object_duplilist_recursive((ID *)id, scene, ob, lb, obmat, ob->obmat, level+1, animated);
-							//copy_m4_m4(ob->obmat, tmpmat);
+							copy_m4_m4(tmpmat, ob->obmat);
+							copy_m4_m4(ob->obmat, obmat); /* pretend we are really this mat */
+							object_duplilist_recursive((ID *)id, scene, ob, lb, ob->obmat, level+1, animated);
+							copy_m4_m4(ob->obmat, tmpmat);
 						}
 					}
 					
@@ -1378,7 +1378,7 @@
 
 /* ------------- */
 
-static void object_duplilist_recursive(ID *id, Scene *scene, Object *ob, ListBase *duplilist, float obmat[4][4], float par_space_mat[4][4], int level, int animated)
+static void object_duplilist_recursive(ID *id, Scene *scene, Object *ob, ListBase *duplilist, float par_space_mat[][4], int level, int animated)
 {	
 	if((ob->transflag & OB_DUPLI)==0)
 		return;
@@ -1436,7 +1436,7 @@
 {
 	ListBase *duplilist= MEM_mallocN(sizeof(ListBase), "duplilist");
 	duplilist->first= duplilist->last= NULL;
-	object_duplilist_recursive((ID *)sce, sce, ob, duplilist, NULL, NULL, 0, 0); /* XXX */
+	object_duplilist_recursive((ID *)sce, sce, ob, duplilist, NULL, 0, 0);
 	return duplilist;
 }
 

Modified: branches/render25/source/blender/makesdna/DNA_lamp_types.h
===================================================================
--- branches/render25/source/blender/makesdna/DNA_lamp_types.h	2010-03-09 11:42:04 UTC (rev 27360)
+++ branches/render25/source/blender/makesdna/DNA_lamp_types.h	2010-03-09 13:03:03 UTC (rev 27361)
@@ -149,6 +149,7 @@
 #define LA_SHAD_TEX     (1<<16)
 #define LA_SHOW_CONE    (1<<17)
 #define LA_MULTI_SHADE  (1<<18)
+#define LA_NO_INDIRECT	(1<<19)
 
 /* layer_shadow */
 #define LA_LAYER_SHADOW_BOTH	0
@@ -175,6 +176,7 @@
 /* bufflag, auto clipping */
 #define LA_SHADBUF_AUTO_START	1
 #define LA_SHADBUF_AUTO_END		2
+#define LA_SHADBUF_NO_STRANDS	4
 
 /* filtertype */
 #define LA_SHADBUF_BOX		0
@@ -192,7 +194,6 @@
 #define LA_SAMP_HALTON		1
 #define LA_SAMP_HAMMERSLEY	2
 
-
 /* ray_samp_type */
 #define LA_SAMP_ROUND	1	/* deprecated */
 #define LA_SAMP_UMBRA	2	/* deprecated */

Modified: branches/render25/source/blender/makesrna/intern/makesrna.c
===================================================================
--- branches/render25/source/blender/makesrna/intern/makesrna.c	2010-03-09 11:42:04 UTC (rev 27360)
+++ branches/render25/source/blender/makesrna/intern/makesrna.c	2010-03-09 13:03:03 UTC (rev 27361)
@@ -485,13 +485,13 @@
 
 					if(dp->dnaarraylength == 1) {
 						if(prop->type == PROP_BOOLEAN && dp->booleanbit)
-							fprintf(f, "		values[i]= (%s(data->%s & (%d<<i)) != 0);\n", (dp->booleannegative)? "!": "", dp->dnaname, dp->booleanbit);
+							fprintf(f, "		values[i]= %s((data->%s & (%d<<i)) != 0);\n", (dp->booleannegative)? "!": "", dp->dnaname, dp->booleanbit);
 						else
 							fprintf(f, "		values[i]= (%s)%s((&data->%s)[i]);\n", rna_type_type(prop), (dp->booleannegative)? "!": "", dp->dnaname);
 					}
 					else {
 						if(prop->type == PROP_BOOLEAN && dp->booleanbit) {
-							fprintf(f, "		values[i]= (%s(data->%s[i] & ", (dp->booleannegative)? "!": "", dp->dnaname);
+							fprintf(f, "		values[i]= %s((data->%s[i] & ", (dp->booleannegative)? "!": "", dp->dnaname);
 							rna_int_print(f, dp->booleanbit);
 							fprintf(f, ") != 0);\n");
 						}
@@ -516,7 +516,7 @@
 				else {
 					rna_print_data_get(f, dp);
 					if(prop->type == PROP_BOOLEAN && dp->booleanbit) {
-						fprintf(f, "	return (%s((data->%s) & ", (dp->booleannegative)? "!": "", dp->dnaname);
+						fprintf(f, "	return %s(((data->%s) & ", (dp->booleannegative)? "!": "", dp->dnaname);
 						rna_int_print(f, dp->booleanbit);
 						fprintf(f, ") != 0);\n");
 					}

Modified: branches/render25/source/blender/makesrna/intern/rna_lamp.c
===================================================================
--- branches/render25/source/blender/makesrna/intern/rna_lamp.c	2010-03-09 11:42:04 UTC (rev 27360)
+++ branches/render25/source/blender/makesrna/intern/rna_lamp.c	2010-03-09 13:03:03 UTC (rev 27361)
@@ -369,6 +369,11 @@
 	RNA_def_property_boolean_negative_sdna(prop, NULL, "mode", LA_NO_DIFF);
 	RNA_def_property_ui_text(prop, "Diffuse", "Lamp does diffuse shading");
 	RNA_def_property_update(prop, 0, "rna_Lamp_update");
+
+	prop= RNA_def_property(srna, "indirect", PROP_BOOLEAN, PROP_NONE);
+	RNA_def_property_boolean_negative_sdna(prop, NULL, "mode", LA_NO_INDIRECT);
+	RNA_def_property_ui_text(prop, "Indirect", "Lamp contributes to indirect lighting");
+	RNA_def_property_update(prop, 0, "rna_Lamp_update");
 	
 	prop= RNA_def_property(srna, "multi_shade", PROP_BOOLEAN, PROP_NONE);
 	RNA_def_property_boolean_sdna(prop, NULL, "mode", LA_MULTI_SHADE);
@@ -700,6 +705,11 @@
 	RNA_def_property_ui_text(prop, "Autoclip End", "Automatic calculation of clipping-end, based on visible vertices");
 	RNA_def_property_update(prop, 0, "rna_Lamp_draw_update");
 
+	prop= RNA_def_property(srna, "shadow_strands", PROP_BOOLEAN, PROP_NONE);
+	RNA_def_property_boolean_negative_sdna(prop, NULL, "bufflag", LA_SHADBUF_NO_STRANDS);
+	RNA_def_property_ui_text(prop, "Shadow Strands", "Lamp shadow buffer includes strands");
+	RNA_def_property_update(prop, 0, "rna_Lamp_update");
+

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list